Skip to main content

carbon_raydium_launchpad_decoder/instructions/
initialize.rs

1//! This code was AUTOGENERATED using the Codama library.
2use {
3    crate::types::{CurveParams, MintParams, VestingParams},
4    carbon_core::{account_utils::next_account, deserialize::ArrangeAccounts},
5};
6/// Initializes a new trading pool
7/// # Arguments
8/// * `ctx` - The context of accounts containing pool and token information
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
11pub struct Initialize {
12    pub base_mint_param: MintParams,
13    pub curve_param: CurveParams,
14    pub vesting_param: VestingParams,
15}
16
17#[derive(Debug, Clone, PartialEq)]
18#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
19pub struct InitializeInstructionAccounts {
20    pub payer: solana_pubkey::Pubkey,
21    pub creator: solana_pubkey::Pubkey,
22    pub global_config: solana_pubkey::Pubkey,
23    pub platform_config: solana_pubkey::Pubkey,
24    pub authority: solana_pubkey::Pubkey,
25    pub pool_state: solana_pubkey::Pubkey,
26    pub base_mint: solana_pubkey::Pubkey,
27    pub quote_mint: solana_pubkey::Pubkey,
28    pub base_vault: solana_pubkey::Pubkey,
29    pub quote_vault: solana_pubkey::Pubkey,
30    pub metadata_account: solana_pubkey::Pubkey,
31    pub base_token_program: solana_pubkey::Pubkey,
32    pub quote_token_program: solana_pubkey::Pubkey,
33    pub metadata_program: solana_pubkey::Pubkey,
34    pub system_program: solana_pubkey::Pubkey,
35    pub rent_program: solana_pubkey::Pubkey,
36    pub event_authority: solana_pubkey::Pubkey,
37    pub program: solana_pubkey::Pubkey,
38    pub remaining: Vec<solana_instruction::AccountMeta>,
39}
40
41impl Initialize {
42    pub fn decode(data: &[u8]) -> Option<Self> {
43        if data.len() < 8 {
44            return None;
45        }
46        let discriminator = &data[0..8];
47        if discriminator != [175, 175, 109, 31, 13, 152, 155, 237] {
48            return None;
49        }
50
51        let mut data_slice = data;
52
53        data_slice = &data_slice[8..];
54
55        borsh::BorshDeserialize::deserialize(&mut data_slice).ok()
56    }
57}
58
59impl ArrangeAccounts for Initialize {
60    type ArrangedAccounts = InitializeInstructionAccounts;
61
62    fn arrange_accounts(
63        accounts: &[solana_instruction::AccountMeta],
64    ) -> Option<Self::ArrangedAccounts> {
65        let mut iter = accounts.iter();
66
67        let payer = next_account(&mut iter)?;
68        let creator = next_account(&mut iter)?;
69        let global_config = next_account(&mut iter)?;
70        let platform_config = next_account(&mut iter)?;
71        let authority = next_account(&mut iter)?;
72        let pool_state = next_account(&mut iter)?;
73        let base_mint = next_account(&mut iter)?;
74        let quote_mint = next_account(&mut iter)?;
75        let base_vault = next_account(&mut iter)?;
76        let quote_vault = next_account(&mut iter)?;
77        let metadata_account = next_account(&mut iter)?;
78        let base_token_program = next_account(&mut iter)?;
79        let quote_token_program = next_account(&mut iter)?;
80        let metadata_program = next_account(&mut iter)?;
81        let system_program = next_account(&mut iter)?;
82        let rent_program = next_account(&mut iter)?;
83        let event_authority = next_account(&mut iter)?;
84        let program = next_account(&mut iter)?;
85
86        let remaining = iter.as_slice();
87
88        Some(InitializeInstructionAccounts {
89            payer,
90            creator,
91            global_config,
92            platform_config,
93            authority,
94            pool_state,
95            base_mint,
96            quote_mint,
97            base_vault,
98            quote_vault,
99            metadata_account,
100            base_token_program,
101            quote_token_program,
102            metadata_program,
103            system_program,
104            rent_program,
105            event_authority,
106            program,
107            remaining: remaining.to_vec(),
108        })
109    }
110}