carbon_jupiter_dca_decoder/instructions/
mod.rs1use crate::{JupiterDcaDecoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod close_dca;
11pub mod cpi_event;
12pub mod deposit;
13pub mod end_and_close;
14pub mod fulfill_dlmm_fill;
15pub mod fulfill_flash_fill;
16pub mod initiate_dlmm_fill;
17pub mod initiate_flash_fill;
18pub mod open_dca;
19pub mod open_dca_v2;
20pub mod transfer;
21pub mod withdraw;
22pub mod withdraw_fees;
23
24pub use self::{
25 close_dca::*, cpi_event::*, deposit::*, end_and_close::*, fulfill_dlmm_fill::*,
26 fulfill_flash_fill::*, initiate_dlmm_fill::*, initiate_flash_fill::*, open_dca::*,
27 open_dca_v2::*, transfer::*, withdraw::*, withdraw_fees::*,
28};
29
30#[derive(Debug, Clone, PartialEq)]
31#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
32#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
33pub enum JupiterDcaInstruction {
34 CloseDca {
35 program_id: solana_pubkey::Pubkey,
36 data: CloseDca,
37 accounts: CloseDcaInstructionAccounts,
38 },
39 Deposit {
40 program_id: solana_pubkey::Pubkey,
41 data: Deposit,
42 accounts: DepositInstructionAccounts,
43 },
44 EndAndClose {
45 program_id: solana_pubkey::Pubkey,
46 data: EndAndClose,
47 accounts: EndAndCloseInstructionAccounts,
48 },
49 FulfillDlmmFill {
50 program_id: solana_pubkey::Pubkey,
51 data: FulfillDlmmFill,
52 accounts: FulfillDlmmFillInstructionAccounts,
53 },
54 FulfillFlashFill {
55 program_id: solana_pubkey::Pubkey,
56 data: FulfillFlashFill,
57 accounts: FulfillFlashFillInstructionAccounts,
58 },
59 InitiateDlmmFill {
60 program_id: solana_pubkey::Pubkey,
61 data: InitiateDlmmFill,
62 accounts: InitiateDlmmFillInstructionAccounts,
63 },
64 InitiateFlashFill {
65 program_id: solana_pubkey::Pubkey,
66 data: InitiateFlashFill,
67 accounts: InitiateFlashFillInstructionAccounts,
68 },
69 OpenDca {
70 program_id: solana_pubkey::Pubkey,
71 data: OpenDca,
72 accounts: OpenDcaInstructionAccounts,
73 },
74 OpenDcaV2 {
75 program_id: solana_pubkey::Pubkey,
76 data: OpenDcaV2,
77 accounts: OpenDcaV2InstructionAccounts,
78 },
79 Transfer {
80 program_id: solana_pubkey::Pubkey,
81 data: Transfer,
82 accounts: TransferInstructionAccounts,
83 },
84 Withdraw {
85 program_id: solana_pubkey::Pubkey,
86 data: Withdraw,
87 accounts: WithdrawInstructionAccounts,
88 },
89 WithdrawFees {
90 program_id: solana_pubkey::Pubkey,
91 data: WithdrawFees,
92 accounts: WithdrawFeesInstructionAccounts,
93 },
94 CpiEvent {
95 program_id: solana_pubkey::Pubkey,
96 data: CpiEvent,
97 accounts: CpiEventInstructionAccounts,
98 },
99}
100
101impl carbon_core::instruction::InstructionDecoder<'_> for JupiterDcaDecoder {
102 type InstructionType = JupiterDcaInstruction;
103
104 fn decode_instruction(
105 &self,
106 instruction: &solana_instruction::Instruction,
107 ) -> Option<Self::InstructionType> {
108 if instruction.program_id != PROGRAM_ID {
109 return None;
110 }
111
112 carbon_core::try_decode_instructions!(
113 instruction,
114 PROGRAM_ID,
115 JupiterDcaInstruction::CloseDca => CloseDca,
116 JupiterDcaInstruction::Deposit => Deposit,
117 JupiterDcaInstruction::EndAndClose => EndAndClose,
118 JupiterDcaInstruction::FulfillDlmmFill => FulfillDlmmFill,
119 JupiterDcaInstruction::FulfillFlashFill => FulfillFlashFill,
120 JupiterDcaInstruction::InitiateDlmmFill => InitiateDlmmFill,
121 JupiterDcaInstruction::InitiateFlashFill => InitiateFlashFill,
122 JupiterDcaInstruction::OpenDca => OpenDca,
123 JupiterDcaInstruction::OpenDcaV2 => OpenDcaV2,
124 JupiterDcaInstruction::Transfer => Transfer,
125 JupiterDcaInstruction::Withdraw => Withdraw,
126 JupiterDcaInstruction::WithdrawFees => WithdrawFees,
127 JupiterDcaInstruction::CpiEvent => CpiEvent,
128 )
129 }
130}