1use const_crypto::ed25519;
2use solana_program::{pubkey, pubkey::Pubkey};
3use steel::*;
4
5pub const INITIALIZER_ADDRESS: Pubkey = pubkey!("4ALL9EAVHpv7ioJF95ktDLtrHUEJezPuFxTFFMy3fpSy");
9
10pub const CAMPAIGN_STATUS_ACTIVE: u8 = 0;
15pub const CAMPAIGN_STATUS_PAUSED: u8 = 1;
16pub const CAMPAIGN_STATUS_CLOSED: u8 = 2;
17
18#[repr(u8)]
20#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)]
21pub enum AirdropAccount {
22 Config = 0,
23 Campaign = 1,
24 Allocation = 2,
25}
26
27pub const CONFIG: &[u8] = b"config";
29
30pub const FEE_ACCOUNT: &[u8] = b"fee_account";
32
33pub const CAMPAIGN: &[u8] = b"campaign";
35
36pub const MINT: &[u8] = b"mint";
38
39pub const MINT_AUTHORITY: &[u8] = b"mint_authority";
41
42pub const TREASURY: &[u8] = b"treasury";
44
45pub const ALLOCATION: &[u8] = b"allocation";
47
48const PROGRAM_ID: [u8; 32] = unsafe { *(&crate::id() as *const Pubkey as *const [u8; 32]) };
50
51pub const CONFIG_ADDRESS: Pubkey =
53 Pubkey::new_from_array(ed25519::derive_program_address(&[CONFIG], &PROGRAM_ID).0);
54
55pub const MAX_MERKLE_PROOF_LENGTH: u8 = 25;