Skip to main content

carbon_virtual_curve_decoder/instructions/
initialize_virtual_pool_with_token2022.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 = "0xa976334e916edc9b")]
9pub struct InitializeVirtualPoolWithToken2022 {
10    pub params: InitializePoolParameters,
11}
12
13#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
14pub struct InitializeVirtualPoolWithToken2022InstructionAccounts {
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 payer: solana_pubkey::Pubkey,
24    pub token_quote_program: solana_pubkey::Pubkey,
25    pub token_program: solana_pubkey::Pubkey,
26    pub system_program: solana_pubkey::Pubkey,
27    pub event_authority: solana_pubkey::Pubkey,
28    pub program: solana_pubkey::Pubkey,
29}
30
31impl carbon_core::deserialize::ArrangeAccounts for InitializeVirtualPoolWithToken2022 {
32    type ArrangedAccounts = InitializeVirtualPoolWithToken2022InstructionAccounts;
33
34    fn arrange_accounts(
35        accounts: &[solana_instruction::AccountMeta],
36    ) -> Option<Self::ArrangedAccounts> {
37        let [config, pool_authority, creator, base_mint, quote_mint, pool, base_vault, quote_vault, payer, token_quote_program, token_program, system_program, event_authority, program, _remaining @ ..] =
38            accounts
39        else {
40            return None;
41        };
42
43        Some(InitializeVirtualPoolWithToken2022InstructionAccounts {
44            config: config.pubkey,
45            pool_authority: pool_authority.pubkey,
46            creator: creator.pubkey,
47            base_mint: base_mint.pubkey,
48            quote_mint: quote_mint.pubkey,
49            pool: pool.pubkey,
50            base_vault: base_vault.pubkey,
51            quote_vault: quote_vault.pubkey,
52            payer: payer.pubkey,
53            token_quote_program: token_quote_program.pubkey,
54            token_program: token_program.pubkey,
55            system_program: system_program.pubkey,
56            event_authority: event_authority.pubkey,
57            program: program.pubkey,
58        })
59    }
60}