Skip to main content

carbon_gavel_decoder/instructions/
initialize_pool.rs

1//! This code was AUTOGENERATED using the Codama library.
2use {
3    crate::types::InitializePoolIxParams,
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 InitializePool {
9    pub params: InitializePoolIxParams,
10}
11
12#[derive(Debug, Clone, PartialEq)]
13#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14pub struct InitializePoolInstructionAccounts {
15    pub plasma_program: solana_pubkey::Pubkey,
16    pub log_authority: solana_pubkey::Pubkey,
17    pub pool: solana_pubkey::Pubkey,
18    pub pool_creator: solana_pubkey::Pubkey,
19    pub base_mint: solana_pubkey::Pubkey,
20    pub quote_mint: solana_pubkey::Pubkey,
21    pub base_vault: solana_pubkey::Pubkey,
22    pub quote_vault: solana_pubkey::Pubkey,
23    pub system_program: solana_pubkey::Pubkey,
24    pub token_program: solana_pubkey::Pubkey,
25    pub remaining: Vec<solana_instruction::AccountMeta>,
26}
27
28impl InitializePool {
29    pub fn decode(data: &[u8]) -> Option<Self> {
30        if data.is_empty() {
31            return None;
32        }
33        let discriminator = &data[0..1];
34        if discriminator != [6] {
35            return None;
36        }
37
38        let mut data_slice = data;
39
40        data_slice = &data_slice[1..];
41
42        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
43    }
44}
45
46impl ArrangeAccounts for InitializePool {
47    type ArrangedAccounts = InitializePoolInstructionAccounts;
48
49    fn arrange_accounts(
50        accounts: &[solana_instruction::AccountMeta],
51    ) -> Option<Self::ArrangedAccounts> {
52        let mut iter = accounts.iter();
53
54        let plasma_program = next_account(&mut iter)?;
55        let log_authority = next_account(&mut iter)?;
56        let pool = next_account(&mut iter)?;
57        let pool_creator = next_account(&mut iter)?;
58        let base_mint = next_account(&mut iter)?;
59        let quote_mint = next_account(&mut iter)?;
60        let base_vault = next_account(&mut iter)?;
61        let quote_vault = next_account(&mut iter)?;
62        let system_program = next_account(&mut iter)?;
63        let token_program = next_account(&mut iter)?;
64
65        let remaining = iter.as_slice();
66
67        Some(InitializePoolInstructionAccounts {
68            plasma_program,
69            log_authority,
70            pool,
71            pool_creator,
72            base_mint,
73            quote_mint,
74            base_vault,
75            quote_vault,
76            system_program,
77            token_program,
78            remaining: remaining.to_vec(),
79        })
80    }
81}