Skip to main content

carbon_pump_swap_decoder/instructions/
create_pool.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#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
9pub struct CreatePool {
10    pub index: u16,
11    pub base_amount_in: u64,
12    pub quote_amount_in: u64,
13    pub coin_creator: Pubkey,
14    pub is_mayhem_mode: bool,
15    pub is_cashback_coin: OptionBool,
16}
17
18#[derive(Debug, Clone, PartialEq)]
19#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
20pub struct CreatePoolInstructionAccounts {
21    pub pool: solana_pubkey::Pubkey,
22    pub global_config: solana_pubkey::Pubkey,
23    pub creator: solana_pubkey::Pubkey,
24    pub base_mint: solana_pubkey::Pubkey,
25    pub quote_mint: solana_pubkey::Pubkey,
26    pub lp_mint: solana_pubkey::Pubkey,
27    pub user_base_token_account: solana_pubkey::Pubkey,
28    pub user_quote_token_account: solana_pubkey::Pubkey,
29    pub user_pool_token_account: solana_pubkey::Pubkey,
30    pub pool_base_token_account: solana_pubkey::Pubkey,
31    pub pool_quote_token_account: solana_pubkey::Pubkey,
32    pub system_program: solana_pubkey::Pubkey,
33    pub token2022_program: solana_pubkey::Pubkey,
34    pub base_token_program: solana_pubkey::Pubkey,
35    pub quote_token_program: solana_pubkey::Pubkey,
36    pub associated_token_program: solana_pubkey::Pubkey,
37    pub event_authority: solana_pubkey::Pubkey,
38    pub program: solana_pubkey::Pubkey,
39    pub remaining: Vec<solana_instruction::AccountMeta>,
40}
41
42impl CreatePool {
43    pub fn decode(data: &[u8]) -> Option<Self> {
44        if data.len() < 8 {
45            return None;
46        }
47        let discriminator = &data[0..8];
48        if discriminator != [233, 146, 209, 142, 207, 104, 64, 188] {
49            return None;
50        }
51
52        let mut data_slice = data;
53
54        data_slice = &data_slice[8..];
55
56        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
57    }
58}
59
60impl ArrangeAccounts for CreatePool {
61    type ArrangedAccounts = CreatePoolInstructionAccounts;
62
63    fn arrange_accounts(
64        accounts: &[solana_instruction::AccountMeta],
65    ) -> Option<Self::ArrangedAccounts> {
66        let mut iter = accounts.iter();
67
68        let pool = next_account(&mut iter)?;
69        let global_config = next_account(&mut iter)?;
70        let creator = next_account(&mut iter)?;
71        let base_mint = next_account(&mut iter)?;
72        let quote_mint = next_account(&mut iter)?;
73        let lp_mint = next_account(&mut iter)?;
74        let user_base_token_account = next_account(&mut iter)?;
75        let user_quote_token_account = next_account(&mut iter)?;
76        let user_pool_token_account = next_account(&mut iter)?;
77        let pool_base_token_account = next_account(&mut iter)?;
78        let pool_quote_token_account = next_account(&mut iter)?;
79        let system_program = next_account(&mut iter)?;
80        let token2022_program = next_account(&mut iter)?;
81        let base_token_program = next_account(&mut iter)?;
82        let quote_token_program = next_account(&mut iter)?;
83        let associated_token_program = next_account(&mut iter)?;
84        let event_authority = next_account(&mut iter)?;
85        let program = next_account(&mut iter)?;
86
87        let remaining = iter.as_slice();
88
89        Some(CreatePoolInstructionAccounts {
90            pool,
91            global_config,
92            creator,
93            base_mint,
94            quote_mint,
95            lp_mint,
96            user_base_token_account,
97            user_quote_token_account,
98            user_pool_token_account,
99            pool_base_token_account,
100            pool_quote_token_account,
101            system_program,
102            token2022_program,
103            base_token_program,
104            quote_token_program,
105            associated_token_program,
106            event_authority,
107            program,
108            remaining: remaining.to_vec(),
109        })
110    }
111}