Skip to main content

carbon_boop_decoder/instructions/
create_meteora_pool.rs

1//! This code was AUTOGENERATED using the Codama library.
2use carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts};
3#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
5pub struct CreateMeteoraPool {}
6
7#[derive(Debug, Clone, PartialEq)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9pub struct CreateMeteoraPoolInstructionAccounts {
10    pub operator: solana_pubkey::Pubkey,
11    pub config: solana_pubkey::Pubkey,
12    pub vault_authority: solana_pubkey::Pubkey,
13    pub cp_amm_config: solana_pubkey::Pubkey,
14    pub pool_authority: solana_pubkey::Pubkey,
15    pub pool: solana_pubkey::Pubkey,
16    pub position: solana_pubkey::Pubkey,
17    pub position_nft_mint: solana_pubkey::Pubkey,
18    pub position_nft_account: solana_pubkey::Pubkey,
19    pub token_a_mint: solana_pubkey::Pubkey,
20    pub token_b_mint: solana_pubkey::Pubkey,
21    pub token_a_vault: solana_pubkey::Pubkey,
22    pub token_b_vault: solana_pubkey::Pubkey,
23    pub bonding_curve: solana_pubkey::Pubkey,
24    pub bonding_curve_vault: solana_pubkey::Pubkey,
25    pub bonding_curve_wsol_vault: solana_pubkey::Pubkey,
26    pub token_program: solana_pubkey::Pubkey,
27    pub token2022_program: solana_pubkey::Pubkey,
28    pub system_program: solana_pubkey::Pubkey,
29    pub event_authority: solana_pubkey::Pubkey,
30    pub cp_amm_program: solana_pubkey::Pubkey,
31    pub remaining: Vec<solana_instruction::AccountMeta>,
32}
33
34impl CreateMeteoraPool {
35    pub fn decode(data: &[u8]) -> Option<Self> {
36        if data.len() < 8 {
37            return None;
38        }
39        let discriminator = &data[0..8];
40        if discriminator != [246, 254, 33, 37, 225, 176, 41, 232] {
41            return None;
42        }
43
44        let mut data_slice = data;
45
46        data_slice = &data_slice[8..];
47
48        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
49    }
50}
51
52impl ArrangeAccounts for CreateMeteoraPool {
53    type ArrangedAccounts = CreateMeteoraPoolInstructionAccounts;
54
55    fn arrange_accounts(
56        accounts: &[solana_instruction::AccountMeta],
57    ) -> Option<Self::ArrangedAccounts> {
58        let mut iter = accounts.iter();
59
60        let operator = next_account(&mut iter)?;
61        let config = next_account(&mut iter)?;
62        let vault_authority = next_account(&mut iter)?;
63        let cp_amm_config = next_account(&mut iter)?;
64        let pool_authority = next_account(&mut iter)?;
65        let pool = next_account(&mut iter)?;
66        let position = next_account(&mut iter)?;
67        let position_nft_mint = next_account(&mut iter)?;
68        let position_nft_account = next_account(&mut iter)?;
69        let token_a_mint = next_account(&mut iter)?;
70        let token_b_mint = next_account(&mut iter)?;
71        let token_a_vault = next_account(&mut iter)?;
72        let token_b_vault = next_account(&mut iter)?;
73        let bonding_curve = next_account(&mut iter)?;
74        let bonding_curve_vault = next_account(&mut iter)?;
75        let bonding_curve_wsol_vault = next_account(&mut iter)?;
76        let token_program = next_account(&mut iter)?;
77        let token2022_program = next_account(&mut iter)?;
78        let system_program = next_account(&mut iter)?;
79        let event_authority = next_account(&mut iter)?;
80        let cp_amm_program = next_account(&mut iter)?;
81
82        let remaining = iter.as_slice();
83
84        Some(CreateMeteoraPoolInstructionAccounts {
85            operator,
86            config,
87            vault_authority,
88            cp_amm_config,
89            pool_authority,
90            pool,
91            position,
92            position_nft_mint,
93            position_nft_account,
94            token_a_mint,
95            token_b_mint,
96            token_a_vault,
97            token_b_vault,
98            bonding_curve,
99            bonding_curve_vault,
100            bonding_curve_wsol_vault,
101            token_program,
102            token2022_program,
103            system_program,
104            event_authority,
105            cp_amm_program,
106            remaining: remaining.to_vec(),
107        })
108    }
109}