carbon_raydium_amm_v4_decoder/instructions/
monitor_step.rs

1use carbon_core::{borsh, CarbonDeserialize};
2
3#[derive(
4    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
5)]
6#[carbon(discriminator = "0x02")]
7pub struct MonitorStep {
8    pub plan_order_limit: u16,
9    pub place_order_limit: u16,
10    pub cancel_order_limit: u16,
11}
12
13pub struct MonitorStepInstructionAccounts {
14    pub token_program: solana_pubkey::Pubkey,
15    pub rent: solana_pubkey::Pubkey,
16    pub clock: solana_pubkey::Pubkey,
17    pub amm: solana_pubkey::Pubkey,
18    pub amm_authority: solana_pubkey::Pubkey,
19    pub amm_open_orders: solana_pubkey::Pubkey,
20    pub amm_target_orders: solana_pubkey::Pubkey,
21    pub pool_coin_token_account: solana_pubkey::Pubkey,
22    pub pool_pc_token_account: solana_pubkey::Pubkey,
23    pub pool_withdraw_queue: solana_pubkey::Pubkey,
24    pub serum_program: solana_pubkey::Pubkey,
25    pub serum_market: solana_pubkey::Pubkey,
26    pub serum_coin_vault_account: solana_pubkey::Pubkey,
27    pub serum_pc_vault_account: solana_pubkey::Pubkey,
28    pub serum_vault_signer: solana_pubkey::Pubkey,
29    pub serum_req_q: solana_pubkey::Pubkey,
30    pub serum_event_q: solana_pubkey::Pubkey,
31    pub serum_bids: solana_pubkey::Pubkey,
32    pub serum_asks: solana_pubkey::Pubkey,
33}
34
35impl carbon_core::deserialize::ArrangeAccounts for MonitorStep {
36    type ArrangedAccounts = MonitorStepInstructionAccounts;
37
38    fn arrange_accounts(
39        accounts: &[solana_instruction::AccountMeta],
40    ) -> Option<Self::ArrangedAccounts> {
41        let [token_program, rent, clock, amm, amm_authority, amm_open_orders, amm_target_orders, pool_coin_token_account, pool_pc_token_account, pool_withdraw_queue, serum_program, serum_market, serum_coin_vault_account, serum_pc_vault_account, serum_vault_signer, serum_req_q, serum_event_q, serum_bids, serum_asks, _remaining @ ..] =
42            accounts
43        else {
44            return None;
45        };
46
47        Some(MonitorStepInstructionAccounts {
48            token_program: token_program.pubkey,
49            rent: rent.pubkey,
50            clock: clock.pubkey,
51            amm: amm.pubkey,
52            amm_authority: amm_authority.pubkey,
53            amm_open_orders: amm_open_orders.pubkey,
54            amm_target_orders: amm_target_orders.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            serum_program: serum_program.pubkey,
59            serum_market: serum_market.pubkey,
60            serum_coin_vault_account: serum_coin_vault_account.pubkey,
61            serum_pc_vault_account: serum_pc_vault_account.pubkey,
62            serum_vault_signer: serum_vault_signer.pubkey,
63            serum_req_q: serum_req_q.pubkey,
64            serum_event_q: serum_event_q.pubkey,
65            serum_bids: serum_bids.pubkey,
66            serum_asks: serum_asks.pubkey,
67        })
68    }
69}