carbon_pumpfun_decoder/instructions/
create_v2.rs

1use carbon_core::{account_utils::next_account, borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0xd6904cec5f8b31b4")]
7pub struct CreateV2 {
8    pub name: String,
9    pub symbol: String,
10    pub uri: String,
11    pub creator: solana_pubkey::Pubkey,
12    pub is_mayhem_mode: bool,
13}
14
15#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
16pub struct CreateV2InstructionAccounts {
17    pub mint: solana_pubkey::Pubkey,
18    pub mint_authority: solana_pubkey::Pubkey,
19    pub bonding_curve: solana_pubkey::Pubkey,
20    pub associated_bonding_curve: solana_pubkey::Pubkey,
21    pub global: solana_pubkey::Pubkey,
22    pub user: solana_pubkey::Pubkey,
23    pub system_program: solana_pubkey::Pubkey,
24    pub token_program: solana_pubkey::Pubkey,
25    pub associated_token_program: solana_pubkey::Pubkey,
26    pub mayhem_program_id: solana_pubkey::Pubkey,
27    pub global_params: solana_pubkey::Pubkey,
28    pub sol_vault: solana_pubkey::Pubkey,
29    pub mayhem_state: solana_pubkey::Pubkey,
30    pub mayhem_token_vault: solana_pubkey::Pubkey,
31    pub event_authority: solana_pubkey::Pubkey,
32    pub program: solana_pubkey::Pubkey,
33}
34
35impl carbon_core::deserialize::ArrangeAccounts for CreateV2 {
36    type ArrangedAccounts = CreateV2InstructionAccounts;
37
38    fn arrange_accounts(
39        accounts: &[solana_instruction::AccountMeta],
40    ) -> Option<Self::ArrangedAccounts> {
41        let mut iter = accounts.iter();
42
43        let mint = next_account(&mut iter)?;
44        let mint_authority = next_account(&mut iter)?;
45        let bonding_curve = next_account(&mut iter)?;
46        let associated_bonding_curve = next_account(&mut iter)?;
47        let global = next_account(&mut iter)?;
48        let user = next_account(&mut iter)?;
49        let system_program = next_account(&mut iter)?;
50        let token_program = next_account(&mut iter)?;
51        let associated_token_program = next_account(&mut iter)?;
52        let mayhem_program_id = next_account(&mut iter)?;
53        let global_params = next_account(&mut iter)?;
54        let sol_vault = next_account(&mut iter)?;
55        let mayhem_state = next_account(&mut iter)?;
56        let mayhem_token_vault = next_account(&mut iter)?;
57        let event_authority = next_account(&mut iter)?;
58        let program = next_account(&mut iter)?;
59
60        Some(CreateV2InstructionAccounts {
61            mint,
62            mint_authority,
63            bonding_curve,
64            associated_bonding_curve,
65            global,
66            user,
67            system_program,
68            token_program,
69            associated_token_program,
70            mayhem_program_id,
71            global_params,
72            sol_vault,
73            mayhem_state,
74            mayhem_token_vault,
75            event_authority,
76            program,
77        })
78    }
79}