Skip to main content

carbon_pumpfun_decoder/instructions/
create_v2.rs

1//! This code was AUTOGENERATED using the Codama library.
2use {
3    crate::types::OptionBool,
4    carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts},
5    solana_pubkey::Pubkey,
6};
7/// Creates a new spl-22 coin and bonding curve.
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
10pub struct CreateV2 {
11    pub name: String,
12    pub symbol: String,
13    pub uri: String,
14    pub creator: Pubkey,
15    pub is_mayhem_mode: bool,
16    pub is_cashback_enabled: OptionBool,
17}
18
19#[derive(Debug, Clone, PartialEq)]
20#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
21pub struct CreateV2InstructionAccounts {
22    pub mint: solana_pubkey::Pubkey,
23    pub mint_authority: solana_pubkey::Pubkey,
24    pub bonding_curve: solana_pubkey::Pubkey,
25    pub associated_bonding_curve: solana_pubkey::Pubkey,
26    pub global: solana_pubkey::Pubkey,
27    pub user: solana_pubkey::Pubkey,
28    pub system_program: solana_pubkey::Pubkey,
29    pub token_program: solana_pubkey::Pubkey,
30    pub associated_token_program: solana_pubkey::Pubkey,
31    pub mayhem_program_id: solana_pubkey::Pubkey,
32    pub global_params: solana_pubkey::Pubkey,
33    pub sol_vault: solana_pubkey::Pubkey,
34    pub mayhem_state: solana_pubkey::Pubkey,
35    pub mayhem_token_vault: solana_pubkey::Pubkey,
36    pub event_authority: solana_pubkey::Pubkey,
37    pub program: solana_pubkey::Pubkey,
38    pub remaining: Vec<solana_instruction::AccountMeta>,
39}
40
41impl CreateV2 {
42    pub fn decode(data: &[u8]) -> Option<Self> {
43        if data.len() < 8 {
44            return None;
45        }
46        let discriminator = &data[0..8];
47        if discriminator != [214, 144, 76, 236, 95, 139, 49, 180] {
48            return None;
49        }
50
51        let mut data_slice = data;
52
53        data_slice = &data_slice[8..];
54
55        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
56    }
57}
58
59impl ArrangeAccounts for CreateV2 {
60    type ArrangedAccounts = CreateV2InstructionAccounts;
61
62    fn arrange_accounts(
63        accounts: &[solana_instruction::AccountMeta],
64    ) -> Option<Self::ArrangedAccounts> {
65        let mut iter = accounts.iter();
66
67        let mint = next_account(&mut iter)?;
68        let mint_authority = next_account(&mut iter)?;
69        let bonding_curve = next_account(&mut iter)?;
70        let associated_bonding_curve = next_account(&mut iter)?;
71        let global = next_account(&mut iter)?;
72        let user = next_account(&mut iter)?;
73        let system_program = next_account(&mut iter)?;
74        let token_program = next_account(&mut iter)?;
75        let associated_token_program = next_account(&mut iter)?;
76        let mayhem_program_id = next_account(&mut iter)?;
77        let global_params = next_account(&mut iter)?;
78        let sol_vault = next_account(&mut iter)?;
79        let mayhem_state = next_account(&mut iter)?;
80        let mayhem_token_vault = next_account(&mut iter)?;
81        let event_authority = next_account(&mut iter)?;
82        let program = next_account(&mut iter)?;
83
84        let remaining = iter.as_slice();
85
86        Some(CreateV2InstructionAccounts {
87            mint,
88            mint_authority,
89            bonding_curve,
90            associated_bonding_curve,
91            global,
92            user,
93            system_program,
94            token_program,
95            associated_token_program,
96            mayhem_program_id,
97            global_params,
98            sol_vault,
99            mayhem_state,
100            mayhem_token_vault,
101            event_authority,
102            program,
103            remaining: remaining.to_vec(),
104        })
105    }
106}