carbon_raydium_amm_v4_decoder/instructions/
initialize.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x00")]
7pub struct Initialize {
8    pub nonce: u8,
9    pub open_time: u64,
10}
11
12pub struct InitializeInstructionAccounts {
13    pub token_program: solana_pubkey::Pubkey,
14    pub system_program: solana_pubkey::Pubkey,
15    pub rent: solana_pubkey::Pubkey,
16    pub amm: solana_pubkey::Pubkey,
17    pub amm_authority: solana_pubkey::Pubkey,
18    pub amm_open_orders: solana_pubkey::Pubkey,
19    pub lp_mint_address: solana_pubkey::Pubkey,
20    pub coin_mint_address: solana_pubkey::Pubkey,
21    pub pc_mint_address: solana_pubkey::Pubkey,
22    pub pool_coin_token_account: solana_pubkey::Pubkey,
23    pub pool_pc_token_account: solana_pubkey::Pubkey,
24    pub pool_withdraw_queue: solana_pubkey::Pubkey,
25    pub pool_target_orders_account: solana_pubkey::Pubkey,
26    pub user_lp_token_account: solana_pubkey::Pubkey,
27    pub pool_temp_lp_token_account: solana_pubkey::Pubkey,
28    pub serum_program: solana_pubkey::Pubkey,
29    pub serum_market: solana_pubkey::Pubkey,
30    pub user_wallet: solana_pubkey::Pubkey,
31}
32
33impl carbon_core::deserialize::ArrangeAccounts for Initialize {
34    type ArrangedAccounts = InitializeInstructionAccounts;
35
36    fn arrange_accounts(
37        accounts: &[solana_instruction::AccountMeta],
38    ) -> Option<Self::ArrangedAccounts> {
39        let [token_program, system_program, rent, amm, amm_authority, amm_open_orders, lp_mint_address, coin_mint_address, pc_mint_address, pool_coin_token_account, pool_pc_token_account, pool_withdraw_queue, pool_target_orders_account, user_lp_token_account, pool_temp_lp_token_account, serum_program, serum_market, user_wallet, _remaining @ ..] =
40            accounts
41        else {
42            return None;
43        };
44
45        Some(InitializeInstructionAccounts {
46            token_program: token_program.pubkey,
47            system_program: system_program.pubkey,
48            rent: rent.pubkey,
49            amm: amm.pubkey,
50            amm_authority: amm_authority.pubkey,
51            amm_open_orders: amm_open_orders.pubkey,
52            lp_mint_address: lp_mint_address.pubkey,
53            coin_mint_address: coin_mint_address.pubkey,
54            pc_mint_address: pc_mint_address.pubkey,
55            pool_coin_token_account: pool_coin_token_account.pubkey,
56            pool_pc_token_account: pool_pc_token_account.pubkey,
57            pool_withdraw_queue: pool_withdraw_queue.pubkey,
58            pool_target_orders_account: pool_target_orders_account.pubkey,
59            user_lp_token_account: user_lp_token_account.pubkey,
60            pool_temp_lp_token_account: pool_temp_lp_token_account.pubkey,
61            serum_program: serum_program.pubkey,
62            serum_market: serum_market.pubkey,
63            user_wallet: user_wallet.pubkey,
64        })
65    }
66}