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