carbon_pumpfun_decoder/instructions/
create_v2.rs1use 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}