Skip to main content

pumpfun_sdk_core/
config.rs

1use solana_sdk::pubkey::Pubkey;
2
3use crate::ids;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
6pub enum TokenProgram {
7    Legacy,
8    Token2022,
9}
10
11impl TokenProgram {
12    pub fn id(self) -> Pubkey {
13        match self {
14            TokenProgram::Legacy => ids::LEGACY_TOKEN_PROGRAM_ID,
15            TokenProgram::Token2022 => ids::TOKEN_2022_PROGRAM_ID,
16        }
17    }
18}
19
20#[derive(Debug, Clone, Copy)]
21pub struct Config {
22    pub pump_program_id: Pubkey,
23    pub mayhem_program_id: Pubkey,
24    pub token_program: TokenProgram,
25}
26
27impl Config {
28    /// Safe defaults for Pump `create_v2` (Token-2022) on mainnet.
29    pub fn mainnet_create_v2_defaults() -> Self {
30        Self {
31            pump_program_id: ids::DEFAULT_PUMP_PROGRAM_ID,
32            mayhem_program_id: ids::DEFAULT_MAYHEM_PROGRAM_ID,
33            token_program: TokenProgram::Token2022,
34        }
35    }
36
37    /// Devnet defaults. Pump recommends testing on devnet before mainnet.
38    /// Same program IDs as mainnet (Pump deploys to both clusters).
39    pub fn devnet_create_v2_defaults() -> Self {
40        Self {
41            pump_program_id: ids::DEFAULT_PUMP_PROGRAM_ID,
42            mayhem_program_id: ids::DEFAULT_MAYHEM_PROGRAM_ID,
43            token_program: TokenProgram::Token2022,
44        }
45    }
46
47    pub fn with_program_ids(pump_program_id: Pubkey, mayhem_program_id: Pubkey) -> Self {
48        Self {
49            pump_program_id,
50            mayhem_program_id,
51            token_program: TokenProgram::Token2022,
52        }
53    }
54}