Skip to main content

carbon_virtuals_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 vpool: solana_pubkey::Pubkey,
11    pub meteora_deployer: solana_pubkey::Pubkey,
12    pub meteora_deployer_virtuals_ata: solana_pubkey::Pubkey,
13    pub meteora_deployer_token_ata: solana_pubkey::Pubkey,
14    pub vpool_virtuals_ata: solana_pubkey::Pubkey,
15    pub vpool_token_ata: solana_pubkey::Pubkey,
16    pub lock_escrow: solana_pubkey::Pubkey,
17    pub escrow_vault: solana_pubkey::Pubkey,
18    pub pool: solana_pubkey::Pubkey,
19    pub config: solana_pubkey::Pubkey,
20    pub lp_mint: solana_pubkey::Pubkey,
21    pub virtuals_mint: solana_pubkey::Pubkey,
22    pub token_mint: solana_pubkey::Pubkey,
23    pub virtuals_vault: solana_pubkey::Pubkey,
24    pub token_vault: solana_pubkey::Pubkey,
25    pub virtuals_token_vault: solana_pubkey::Pubkey,
26    pub token_token_vault: solana_pubkey::Pubkey,
27    pub virtuals_vault_lp_mint: solana_pubkey::Pubkey,
28    pub token_vault_lp_mint: solana_pubkey::Pubkey,
29    pub virtuals_vault_lp: solana_pubkey::Pubkey,
30    pub token_vault_lp: solana_pubkey::Pubkey,
31    pub pool_virtuals_ata: solana_pubkey::Pubkey,
32    pub pool_token_ata: solana_pubkey::Pubkey,
33    pub meteora_deployer_pool_lp: solana_pubkey::Pubkey,
34    pub protocol_virtuals_fee: solana_pubkey::Pubkey,
35    pub protocol_token_fee: solana_pubkey::Pubkey,
36    pub payer: solana_pubkey::Pubkey,
37    pub token_metadata: solana_pubkey::Pubkey,
38    pub rent: solana_pubkey::Pubkey,
39    pub mint_metadata: solana_pubkey::Pubkey,
40    pub metadata_program: solana_pubkey::Pubkey,
41    pub vault_program: solana_pubkey::Pubkey,
42    pub token_program: solana_pubkey::Pubkey,
43    pub associated_token_program: solana_pubkey::Pubkey,
44    pub system_program: solana_pubkey::Pubkey,
45    pub dynamic_amm_program: solana_pubkey::Pubkey,
46    pub remaining: Vec<solana_instruction::AccountMeta>,
47}
48
49impl CreateMeteoraPool {
50    pub fn decode(data: &[u8]) -> Option<Self> {
51        if data.len() < 8 {
52            return None;
53        }
54        let discriminator = &data[0..8];
55        if discriminator != [246, 254, 33, 37, 225, 176, 41, 232] {
56            return None;
57        }
58
59        let mut data_slice = data;
60
61        data_slice = &data_slice[8..];
62
63        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
64    }
65}
66
67impl ArrangeAccounts for CreateMeteoraPool {
68    type ArrangedAccounts = CreateMeteoraPoolInstructionAccounts;
69
70    fn arrange_accounts(
71        accounts: &[solana_instruction::AccountMeta],
72    ) -> Option<Self::ArrangedAccounts> {
73        let mut iter = accounts.iter();
74
75        let vpool = next_account(&mut iter)?;
76        let meteora_deployer = next_account(&mut iter)?;
77        let meteora_deployer_virtuals_ata = next_account(&mut iter)?;
78        let meteora_deployer_token_ata = next_account(&mut iter)?;
79        let vpool_virtuals_ata = next_account(&mut iter)?;
80        let vpool_token_ata = next_account(&mut iter)?;
81        let lock_escrow = next_account(&mut iter)?;
82        let escrow_vault = next_account(&mut iter)?;
83        let pool = next_account(&mut iter)?;
84        let config = next_account(&mut iter)?;
85        let lp_mint = next_account(&mut iter)?;
86        let virtuals_mint = next_account(&mut iter)?;
87        let token_mint = next_account(&mut iter)?;
88        let virtuals_vault = next_account(&mut iter)?;
89        let token_vault = next_account(&mut iter)?;
90        let virtuals_token_vault = next_account(&mut iter)?;
91        let token_token_vault = next_account(&mut iter)?;
92        let virtuals_vault_lp_mint = next_account(&mut iter)?;
93        let token_vault_lp_mint = next_account(&mut iter)?;
94        let virtuals_vault_lp = next_account(&mut iter)?;
95        let token_vault_lp = next_account(&mut iter)?;
96        let pool_virtuals_ata = next_account(&mut iter)?;
97        let pool_token_ata = next_account(&mut iter)?;
98        let meteora_deployer_pool_lp = next_account(&mut iter)?;
99        let protocol_virtuals_fee = next_account(&mut iter)?;
100        let protocol_token_fee = next_account(&mut iter)?;
101        let payer = next_account(&mut iter)?;
102        let token_metadata = next_account(&mut iter)?;
103        let rent = next_account(&mut iter)?;
104        let mint_metadata = next_account(&mut iter)?;
105        let metadata_program = next_account(&mut iter)?;
106        let vault_program = next_account(&mut iter)?;
107        let token_program = next_account(&mut iter)?;
108        let associated_token_program = next_account(&mut iter)?;
109        let system_program = next_account(&mut iter)?;
110        let dynamic_amm_program = next_account(&mut iter)?;
111
112        let remaining = iter.as_slice();
113
114        Some(CreateMeteoraPoolInstructionAccounts {
115            vpool,
116            meteora_deployer,
117            meteora_deployer_virtuals_ata,
118            meteora_deployer_token_ata,
119            vpool_virtuals_ata,
120            vpool_token_ata,
121            lock_escrow,
122            escrow_vault,
123            pool,
124            config,
125            lp_mint,
126            virtuals_mint,
127            token_mint,
128            virtuals_vault,
129            token_vault,
130            virtuals_token_vault,
131            token_token_vault,
132            virtuals_vault_lp_mint,
133            token_vault_lp_mint,
134            virtuals_vault_lp,
135            token_vault_lp,
136            pool_virtuals_ata,
137            pool_token_ata,
138            meteora_deployer_pool_lp,
139            protocol_virtuals_fee,
140            protocol_token_fee,
141            payer,
142            token_metadata,
143            rent,
144            mint_metadata,
145            metadata_program,
146            vault_program,
147            token_program,
148            associated_token_program,
149            system_program,
150            dynamic_amm_program,
151            remaining: remaining.to_vec(),
152        })
153    }
154}