Skip to main content

carbon_gavel_decoder/instructions/
mod.rs

1//! This code was AUTOGENERATED using the Codama library.
2use 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}