carbon_virtuals_decoder/instructions/
create_meteora_pool.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0xf6fe2125e1b029e8")]
7pub struct CreateMeteoraPool {}
8
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}
47
48impl carbon_core::deserialize::ArrangeAccounts for CreateMeteoraPool {
49    type ArrangedAccounts = CreateMeteoraPoolInstructionAccounts;
50
51    fn arrange_accounts(
52        accounts: &[solana_instruction::AccountMeta],
53    ) -> Option<Self::ArrangedAccounts> {
54        let [vpool, meteora_deployer, meteora_deployer_virtuals_ata, meteora_deployer_token_ata, vpool_virtuals_ata, vpool_token_ata, lock_escrow, escrow_vault, pool, config, lp_mint, virtuals_mint, token_mint, virtuals_vault, token_vault, virtuals_token_vault, token_token_vault, virtuals_vault_lp_mint, token_vault_lp_mint, virtuals_vault_lp, token_vault_lp, pool_virtuals_ata, pool_token_ata, meteora_deployer_pool_lp, protocol_virtuals_fee, protocol_token_fee, payer, token_metadata, rent, mint_metadata, metadata_program, vault_program, token_program, associated_token_program, system_program, dynamic_amm_program, _remaining @ ..] =
55            accounts
56        else {
57            return None;
58        };
59
60        Some(CreateMeteoraPoolInstructionAccounts {
61            vpool: vpool.pubkey,
62            meteora_deployer: meteora_deployer.pubkey,
63            meteora_deployer_virtuals_ata: meteora_deployer_virtuals_ata.pubkey,
64            meteora_deployer_token_ata: meteora_deployer_token_ata.pubkey,
65            vpool_virtuals_ata: vpool_virtuals_ata.pubkey,
66            vpool_token_ata: vpool_token_ata.pubkey,
67            lock_escrow: lock_escrow.pubkey,
68            escrow_vault: escrow_vault.pubkey,
69            pool: pool.pubkey,
70            config: config.pubkey,
71            lp_mint: lp_mint.pubkey,
72            virtuals_mint: virtuals_mint.pubkey,
73            token_mint: token_mint.pubkey,
74            virtuals_vault: virtuals_vault.pubkey,
75            token_vault: token_vault.pubkey,
76            virtuals_token_vault: virtuals_token_vault.pubkey,
77            token_token_vault: token_token_vault.pubkey,
78            virtuals_vault_lp_mint: virtuals_vault_lp_mint.pubkey,
79            token_vault_lp_mint: token_vault_lp_mint.pubkey,
80            virtuals_vault_lp: virtuals_vault_lp.pubkey,
81            token_vault_lp: token_vault_lp.pubkey,
82            pool_virtuals_ata: pool_virtuals_ata.pubkey,
83            pool_token_ata: pool_token_ata.pubkey,
84            meteora_deployer_pool_lp: meteora_deployer_pool_lp.pubkey,
85            protocol_virtuals_fee: protocol_virtuals_fee.pubkey,
86            protocol_token_fee: protocol_token_fee.pubkey,
87            payer: payer.pubkey,
88            token_metadata: token_metadata.pubkey,
89            rent: rent.pubkey,
90            mint_metadata: mint_metadata.pubkey,
91            metadata_program: metadata_program.pubkey,
92            vault_program: vault_program.pubkey,
93            token_program: token_program.pubkey,
94            associated_token_program: associated_token_program.pubkey,
95            system_program: system_program.pubkey,
96            dynamic_amm_program: dynamic_amm_program.pubkey,
97        })
98    }
99}