carbon_gavel_decoder/instructions/
mod.rs1use crate::{GavelDecoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod add_liquidity;
11pub mod initialize_lp_position;
12pub mod initialize_pool;
13pub mod log;
14pub mod remove_liquidity;
15pub mod renounce_liquidity;
16pub mod swap;
17pub mod transfer_liquidity;
18pub mod withdraw_lp_fees;
19pub mod withdraw_protocol_fees;
20
21pub use self::{
22 add_liquidity::*, initialize_lp_position::*, initialize_pool::*, log::*, remove_liquidity::*,
23 renounce_liquidity::*, swap::*, transfer_liquidity::*, withdraw_lp_fees::*,
24 withdraw_protocol_fees::*,
25};
26
27#[derive(Debug, Clone, PartialEq)]
28#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
29#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
30pub enum GavelInstruction {
31 AddLiquidity {
32 program_id: solana_pubkey::Pubkey,
33 data: AddLiquidity,
34 accounts: AddLiquidityInstructionAccounts,
35 },
36 InitializeLpPosition {
37 program_id: solana_pubkey::Pubkey,
38 data: InitializeLpPosition,
39 accounts: InitializeLpPositionInstructionAccounts,
40 },
41 InitializePool {
42 program_id: solana_pubkey::Pubkey,
43 data: InitializePool,
44 accounts: InitializePoolInstructionAccounts,
45 },
46 Log {
47 program_id: solana_pubkey::Pubkey,
48 data: Log,
49 accounts: LogInstructionAccounts,
50 },
51 RemoveLiquidity {
52 program_id: solana_pubkey::Pubkey,
53 data: RemoveLiquidity,
54 accounts: RemoveLiquidityInstructionAccounts,
55 },
56 RenounceLiquidity {
57 program_id: solana_pubkey::Pubkey,
58 data: RenounceLiquidity,
59 accounts: RenounceLiquidityInstructionAccounts,
60 },
61 Swap {
62 program_id: solana_pubkey::Pubkey,
63 data: Swap,
64 accounts: SwapInstructionAccounts,
65 },
66 TransferLiquidity {
67 program_id: solana_pubkey::Pubkey,
68 data: TransferLiquidity,
69 accounts: TransferLiquidityInstructionAccounts,
70 },
71 WithdrawLpFees {
72 program_id: solana_pubkey::Pubkey,
73 data: WithdrawLpFees,
74 accounts: WithdrawLpFeesInstructionAccounts,
75 },
76 WithdrawProtocolFees {
77 program_id: solana_pubkey::Pubkey,
78 data: WithdrawProtocolFees,
79 accounts: WithdrawProtocolFeesInstructionAccounts,
80 },
81}
82
83impl carbon_core::instruction::InstructionDecoder<'_> for GavelDecoder {
84 type InstructionType = GavelInstruction;
85
86 fn decode_instruction(
87 &self,
88 instruction: &solana_instruction::Instruction,
89 ) -> Option<Self::InstructionType> {
90 if instruction.program_id != PROGRAM_ID {
91 return None;
92 }
93
94 carbon_core::try_decode_instructions!(
95 instruction,
96 PROGRAM_ID,
97 GavelInstruction::AddLiquidity => AddLiquidity,
98 GavelInstruction::InitializeLpPosition => InitializeLpPosition,
99 GavelInstruction::InitializePool => InitializePool,
100 GavelInstruction::Log => Log,
101 GavelInstruction::RemoveLiquidity => RemoveLiquidity,
102 GavelInstruction::RenounceLiquidity => RenounceLiquidity,
103 GavelInstruction::Swap => Swap,
104 GavelInstruction::TransferLiquidity => TransferLiquidity,
105 GavelInstruction::WithdrawLpFees => WithdrawLpFees,
106 GavelInstruction::WithdrawProtocolFees => WithdrawProtocolFees,
107 )
108 }
109}