carbon_raydium_amm_v4_decoder/instructions/
pre_initialize.rs1use 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}