carbon_raydium_amm_v4_decoder/instructions/
pre_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 = "0x0a")]
7pub struct PreInitialize {
8    pub nonce: u8,
9}
10
11pub struct PreInitializeInstructionAccounts {
12    pub token_program: solana_pubkey::Pubkey,
13    pub system_program: solana_pubkey::Pubkey,
14    pub rent: solana_pubkey::Pubkey,
15    pub amm_target_orders: solana_pubkey::Pubkey,
16    pub pool_withdraw_queue: solana_pubkey::Pubkey,
17    pub amm_authority: solana_pubkey::Pubkey,
18    pub lp_mint_address: solana_pubkey::Pubkey,
19    pub coin_mint_address: solana_pubkey::Pubkey,
20    pub pc_mint_address: solana_pubkey::Pubkey,
21    pub pool_coin_token_account: solana_pubkey::Pubkey,
22    pub pool_pc_token_account: solana_pubkey::Pubkey,
23    pub pool_temp_lp_token_account: solana_pubkey::Pubkey,
24    pub serum_market: solana_pubkey::Pubkey,
25    pub user_wallet: solana_pubkey::Pubkey,
26}
27
28impl carbon_core::deserialize::ArrangeAccounts for PreInitialize {
29    type ArrangedAccounts = PreInitializeInstructionAccounts;
30
31    fn arrange_accounts(
32        accounts: &[solana_instruction::AccountMeta],
33    ) -> Option<Self::ArrangedAccounts> {
34        let [token_program, system_program, rent, amm_target_orders, pool_withdraw_queue, amm_authority, lp_mint_address, coin_mint_address, pc_mint_address, pool_coin_token_account, pool_pc_token_account, pool_temp_lp_token_account, serum_market, user_wallet, _remaining @ ..] =
35            accounts
36        else {
37            return None;
38        };
39
40        Some(PreInitializeInstructionAccounts {
41            token_program: token_program.pubkey,
42            system_program: system_program.pubkey,
43            rent: rent.pubkey,
44            amm_target_orders: amm_target_orders.pubkey,
45            pool_withdraw_queue: pool_withdraw_queue.pubkey,
46            amm_authority: amm_authority.pubkey,
47            lp_mint_address: lp_mint_address.pubkey,
48            coin_mint_address: coin_mint_address.pubkey,
49            pc_mint_address: pc_mint_address.pubkey,
50            pool_coin_token_account: pool_coin_token_account.pubkey,
51            pool_pc_token_account: pool_pc_token_account.pubkey,
52            pool_temp_lp_token_account: pool_temp_lp_token_account.pubkey,
53            serum_market: serum_market.pubkey,
54            user_wallet: user_wallet.pubkey,
55        })
56    }
57}