Skip to main content

carbon_virtual_curve_decoder/instructions/
initialize_virtual_pool_with_spl_token.rs

1use super::super::types::*;
2
3use carbon_core::{borsh, CarbonDeserialize};
4
5#[derive(
6    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
7)]
8#[carbon(discriminator = "0x8c55d7b06636684f")]
9pub struct InitializeVirtualPoolWithSplToken {
10    pub params: InitializePoolParameters,
11}
12
13#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
14pub struct InitializeVirtualPoolWithSplTokenInstructionAccounts {
15    pub config: solana_pubkey::Pubkey,
16    pub pool_authority: solana_pubkey::Pubkey,
17    pub creator: solana_pubkey::Pubkey,
18    pub base_mint: solana_pubkey::Pubkey,
19    pub quote_mint: solana_pubkey::Pubkey,
20    pub pool: solana_pubkey::Pubkey,
21    pub base_vault: solana_pubkey::Pubkey,
22    pub quote_vault: solana_pubkey::Pubkey,
23    pub mint_metadata: solana_pubkey::Pubkey,
24    pub metadata_program: solana_pubkey::Pubkey,
25    pub payer: solana_pubkey::Pubkey,
26    pub token_quote_program: solana_pubkey::Pubkey,
27    pub token_program: solana_pubkey::Pubkey,
28    pub system_program: solana_pubkey::Pubkey,
29    pub event_authority: solana_pubkey::Pubkey,
30    pub program: solana_pubkey::Pubkey,
31}
32
33impl carbon_core::deserialize::ArrangeAccounts for InitializeVirtualPoolWithSplToken {
34    type ArrangedAccounts = InitializeVirtualPoolWithSplTokenInstructionAccounts;
35
36    fn arrange_accounts(
37        accounts: &[solana_instruction::AccountMeta],
38    ) -> Option<Self::ArrangedAccounts> {
39        let [config, pool_authority, creator, base_mint, quote_mint, pool, base_vault, quote_vault, mint_metadata, metadata_program, payer, token_quote_program, token_program, system_program, event_authority, program, _remaining @ ..] =
40            accounts
41        else {
42            return None;
43        };
44
45        Some(InitializeVirtualPoolWithSplTokenInstructionAccounts {
46            config: config.pubkey,
47            pool_authority: pool_authority.pubkey,
48            creator: creator.pubkey,
49            base_mint: base_mint.pubkey,
50            quote_mint: quote_mint.pubkey,
51            pool: pool.pubkey,
52            base_vault: base_vault.pubkey,
53            quote_vault: quote_vault.pubkey,
54            mint_metadata: mint_metadata.pubkey,
55            metadata_program: metadata_program.pubkey,
56            payer: payer.pubkey,
57            token_quote_program: token_quote_program.pubkey,
58            token_program: token_program.pubkey,
59            system_program: system_program.pubkey,
60            event_authority: event_authority.pubkey,
61            program: program.pubkey,
62        })
63    }
64}