carbon_jupiter_limit_order_decoder/instructions/
mod.rs1use crate::{JupiterLimitOrderDecoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod cancel_expired_order;
11pub mod cancel_order;
12pub mod cpi_event;
13pub mod fill_order;
14pub mod flash_fill_order;
15pub mod init_fee;
16pub mod initialize_order;
17pub mod pre_flash_fill_order;
18pub mod update_fee;
19pub mod withdraw_fee;
20
21pub use self::{
22 cancel_expired_order::*, cancel_order::*, cpi_event::*, fill_order::*, flash_fill_order::*,
23 init_fee::*, initialize_order::*, pre_flash_fill_order::*, update_fee::*, withdraw_fee::*,
24};
25
26#[derive(Debug, Clone, PartialEq)]
27#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
28#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
29pub enum JupiterLimitOrderInstruction {
30 CancelExpiredOrder {
31 program_id: solana_pubkey::Pubkey,
32 data: CancelExpiredOrder,
33 accounts: CancelExpiredOrderInstructionAccounts,
34 },
35 CancelOrder {
36 program_id: solana_pubkey::Pubkey,
37 data: CancelOrder,
38 accounts: CancelOrderInstructionAccounts,
39 },
40 FillOrder {
41 program_id: solana_pubkey::Pubkey,
42 data: FillOrder,
43 accounts: FillOrderInstructionAccounts,
44 },
45 FlashFillOrder {
46 program_id: solana_pubkey::Pubkey,
47 data: FlashFillOrder,
48 accounts: FlashFillOrderInstructionAccounts,
49 },
50 InitFee {
51 program_id: solana_pubkey::Pubkey,
52 data: InitFee,
53 accounts: InitFeeInstructionAccounts,
54 },
55 InitializeOrder {
56 program_id: solana_pubkey::Pubkey,
57 data: InitializeOrder,
58 accounts: InitializeOrderInstructionAccounts,
59 },
60 PreFlashFillOrder {
61 program_id: solana_pubkey::Pubkey,
62 data: PreFlashFillOrder,
63 accounts: PreFlashFillOrderInstructionAccounts,
64 },
65 UpdateFee {
66 program_id: solana_pubkey::Pubkey,
67 data: UpdateFee,
68 accounts: UpdateFeeInstructionAccounts,
69 },
70 WithdrawFee {
71 program_id: solana_pubkey::Pubkey,
72 data: WithdrawFee,
73 accounts: WithdrawFeeInstructionAccounts,
74 },
75 CpiEvent {
76 program_id: solana_pubkey::Pubkey,
77 data: CpiEvent,
78 accounts: CpiEventInstructionAccounts,
79 },
80}
81
82impl carbon_core::instruction::InstructionDecoder<'_> for JupiterLimitOrderDecoder {
83 type InstructionType = JupiterLimitOrderInstruction;
84
85 fn decode_instruction(
86 &self,
87 instruction: &solana_instruction::Instruction,
88 ) -> Option<Self::InstructionType> {
89 if instruction.program_id != PROGRAM_ID {
90 return None;
91 }
92
93 carbon_core::try_decode_instructions!(
94 instruction,
95 PROGRAM_ID,
96 JupiterLimitOrderInstruction::CancelExpiredOrder => CancelExpiredOrder,
97 JupiterLimitOrderInstruction::CancelOrder => CancelOrder,
98 JupiterLimitOrderInstruction::FillOrder => FillOrder,
99 JupiterLimitOrderInstruction::FlashFillOrder => FlashFillOrder,
100 JupiterLimitOrderInstruction::InitFee => InitFee,
101 JupiterLimitOrderInstruction::InitializeOrder => InitializeOrder,
102 JupiterLimitOrderInstruction::PreFlashFillOrder => PreFlashFillOrder,
103 JupiterLimitOrderInstruction::UpdateFee => UpdateFee,
104 JupiterLimitOrderInstruction::WithdrawFee => WithdrawFee,
105 JupiterLimitOrderInstruction::CpiEvent => CpiEvent,
106 )
107 }
108}