Skip to main content

carbon_vertigo_decoder/instructions/
create.rs

1//! This code was AUTOGENERATED using the Codama library.
2use {
3    crate::types::CreateParams,
4    carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts},
5};
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
8pub struct Create {
9    pub params: CreateParams,
10}
11
12#[derive(Debug, Clone, PartialEq)]
13#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14pub struct CreateInstructionAccounts {
15    pub payer: solana_pubkey::Pubkey,
16    pub owner: solana_pubkey::Pubkey,
17    pub token_wallet_authority: solana_pubkey::Pubkey,
18    pub mint_a: solana_pubkey::Pubkey,
19    pub mint_b: solana_pubkey::Pubkey,
20    pub token_wallet_b: solana_pubkey::Pubkey,
21    pub pool: solana_pubkey::Pubkey,
22    pub vault_a: solana_pubkey::Pubkey,
23    pub vault_b: solana_pubkey::Pubkey,
24    pub token_program_a: solana_pubkey::Pubkey,
25    pub token_program_b: solana_pubkey::Pubkey,
26    pub system_program: solana_pubkey::Pubkey,
27    pub rent: solana_pubkey::Pubkey,
28    pub remaining: Vec<solana_instruction::AccountMeta>,
29}
30
31impl Create {
32    pub fn decode(data: &[u8]) -> Option<Self> {
33        if data.len() < 8 {
34            return None;
35        }
36        let discriminator = &data[0..8];
37        if discriminator != [24, 30, 200, 40, 5, 28, 7, 119] {
38            return None;
39        }
40
41        let mut data_slice = data;
42
43        data_slice = &data_slice[8..];
44
45        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
46    }
47}
48
49impl ArrangeAccounts for Create {
50    type ArrangedAccounts = CreateInstructionAccounts;
51
52    fn arrange_accounts(
53        accounts: &[solana_instruction::AccountMeta],
54    ) -> Option<Self::ArrangedAccounts> {
55        let mut iter = accounts.iter();
56
57        let payer = next_account(&mut iter)?;
58        let owner = next_account(&mut iter)?;
59        let token_wallet_authority = next_account(&mut iter)?;
60        let mint_a = next_account(&mut iter)?;
61        let mint_b = next_account(&mut iter)?;
62        let token_wallet_b = next_account(&mut iter)?;
63        let pool = next_account(&mut iter)?;
64        let vault_a = next_account(&mut iter)?;
65        let vault_b = next_account(&mut iter)?;
66        let token_program_a = next_account(&mut iter)?;
67        let token_program_b = next_account(&mut iter)?;
68        let system_program = next_account(&mut iter)?;
69        let rent = next_account(&mut iter)?;
70
71        let remaining = iter.as_slice();
72
73        Some(CreateInstructionAccounts {
74            payer,
75            owner,
76            token_wallet_authority,
77            mint_a,
78            mint_b,
79            token_wallet_b,
80            pool,
81            vault_a,
82            vault_b,
83            token_program_a,
84            token_program_b,
85            system_program,
86            rent,
87            remaining: remaining.to_vec(),
88        })
89    }
90}