1use crate::{MeteoraPoolsDecoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod add_balance_liquidity;
11pub mod add_imbalance_liquidity;
12pub mod bootstrap_liquidity;
13pub mod claim_fee;
14pub mod close_config;
15pub mod cpi_event;
16pub mod create_config;
17pub mod create_lock_escrow;
18pub mod create_mint_metadata;
19pub mod enable_or_disable_pool;
20pub mod get_pool_info;
21pub mod initialize_customizable_permissionless_constant_product_pool;
22pub mod initialize_permissioned_pool;
23pub mod initialize_permissionless_constant_product_pool_with_config;
24pub mod initialize_permissionless_constant_product_pool_with_config2;
25pub mod initialize_permissionless_pool;
26pub mod initialize_permissionless_pool_with_fee_tier;
27pub mod lock;
28pub mod override_curve_param;
29pub mod partner_claim_fee;
30pub mod remove_balance_liquidity;
31pub mod remove_liquidity_single_side;
32pub mod set_pool_fees;
33pub mod set_whitelisted_vault;
34pub mod swap;
35pub mod update_activation_point;
36pub mod withdraw_protocol_fees;
37
38pub use self::{
39 add_balance_liquidity::*, add_imbalance_liquidity::*, bootstrap_liquidity::*, claim_fee::*,
40 close_config::*, cpi_event::*, create_config::*, create_lock_escrow::*,
41 create_mint_metadata::*, enable_or_disable_pool::*, get_pool_info::*,
42 initialize_customizable_permissionless_constant_product_pool::*,
43 initialize_permissioned_pool::*,
44 initialize_permissionless_constant_product_pool_with_config::*,
45 initialize_permissionless_constant_product_pool_with_config2::*,
46 initialize_permissionless_pool::*, initialize_permissionless_pool_with_fee_tier::*, lock::*,
47 override_curve_param::*, partner_claim_fee::*, remove_balance_liquidity::*,
48 remove_liquidity_single_side::*, set_pool_fees::*, set_whitelisted_vault::*, swap::*,
49 update_activation_point::*, withdraw_protocol_fees::*,
50};
51
52#[derive(Debug, Clone, PartialEq)]
53#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
54#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
55pub enum MeteoraPoolsInstruction {
56 AddBalanceLiquidity {
57 program_id: solana_pubkey::Pubkey,
58 data: AddBalanceLiquidity,
59 accounts: AddBalanceLiquidityInstructionAccounts,
60 },
61 AddImbalanceLiquidity {
62 program_id: solana_pubkey::Pubkey,
63 data: AddImbalanceLiquidity,
64 accounts: AddImbalanceLiquidityInstructionAccounts,
65 },
66 BootstrapLiquidity {
67 program_id: solana_pubkey::Pubkey,
68 data: BootstrapLiquidity,
69 accounts: BootstrapLiquidityInstructionAccounts,
70 },
71 ClaimFee {
72 program_id: solana_pubkey::Pubkey,
73 data: ClaimFee,
74 accounts: ClaimFeeInstructionAccounts,
75 },
76 CloseConfig {
77 program_id: solana_pubkey::Pubkey,
78 data: CloseConfig,
79 accounts: CloseConfigInstructionAccounts,
80 },
81 CreateConfig {
82 program_id: solana_pubkey::Pubkey,
83 data: CreateConfig,
84 accounts: CreateConfigInstructionAccounts,
85 },
86 CreateLockEscrow {
87 program_id: solana_pubkey::Pubkey,
88 data: CreateLockEscrow,
89 accounts: CreateLockEscrowInstructionAccounts,
90 },
91 CreateMintMetadata {
92 program_id: solana_pubkey::Pubkey,
93 data: CreateMintMetadata,
94 accounts: CreateMintMetadataInstructionAccounts,
95 },
96 EnableOrDisablePool {
97 program_id: solana_pubkey::Pubkey,
98 data: EnableOrDisablePool,
99 accounts: EnableOrDisablePoolInstructionAccounts,
100 },
101 GetPoolInfo {
102 program_id: solana_pubkey::Pubkey,
103 data: GetPoolInfo,
104 accounts: GetPoolInfoInstructionAccounts,
105 },
106 InitializeCustomizablePermissionlessConstantProductPool {
107 program_id: solana_pubkey::Pubkey,
108 data: InitializeCustomizablePermissionlessConstantProductPool,
109 accounts: InitializeCustomizablePermissionlessConstantProductPoolInstructionAccounts,
110 },
111 InitializePermissionedPool {
112 program_id: solana_pubkey::Pubkey,
113 data: InitializePermissionedPool,
114 accounts: InitializePermissionedPoolInstructionAccounts,
115 },
116 InitializePermissionlessConstantProductPoolWithConfig {
117 program_id: solana_pubkey::Pubkey,
118 data: InitializePermissionlessConstantProductPoolWithConfig,
119 accounts: InitializePermissionlessConstantProductPoolWithConfigInstructionAccounts,
120 },
121 InitializePermissionlessConstantProductPoolWithConfig2 {
122 program_id: solana_pubkey::Pubkey,
123 data: InitializePermissionlessConstantProductPoolWithConfig2,
124 accounts: InitializePermissionlessConstantProductPoolWithConfig2InstructionAccounts,
125 },
126 InitializePermissionlessPool {
127 program_id: solana_pubkey::Pubkey,
128 data: InitializePermissionlessPool,
129 accounts: InitializePermissionlessPoolInstructionAccounts,
130 },
131 InitializePermissionlessPoolWithFeeTier {
132 program_id: solana_pubkey::Pubkey,
133 data: InitializePermissionlessPoolWithFeeTier,
134 accounts: InitializePermissionlessPoolWithFeeTierInstructionAccounts,
135 },
136 Lock {
137 program_id: solana_pubkey::Pubkey,
138 data: Lock,
139 accounts: LockInstructionAccounts,
140 },
141 OverrideCurveParam {
142 program_id: solana_pubkey::Pubkey,
143 data: OverrideCurveParam,
144 accounts: OverrideCurveParamInstructionAccounts,
145 },
146 PartnerClaimFee {
147 program_id: solana_pubkey::Pubkey,
148 data: PartnerClaimFee,
149 accounts: PartnerClaimFeeInstructionAccounts,
150 },
151 RemoveBalanceLiquidity {
152 program_id: solana_pubkey::Pubkey,
153 data: RemoveBalanceLiquidity,
154 accounts: RemoveBalanceLiquidityInstructionAccounts,
155 },
156 RemoveLiquiditySingleSide {
157 program_id: solana_pubkey::Pubkey,
158 data: RemoveLiquiditySingleSide,
159 accounts: RemoveLiquiditySingleSideInstructionAccounts,
160 },
161 SetPoolFees {
162 program_id: solana_pubkey::Pubkey,
163 data: SetPoolFees,
164 accounts: SetPoolFeesInstructionAccounts,
165 },
166 SetWhitelistedVault {
167 program_id: solana_pubkey::Pubkey,
168 data: SetWhitelistedVault,
169 accounts: SetWhitelistedVaultInstructionAccounts,
170 },
171 Swap {
172 program_id: solana_pubkey::Pubkey,
173 data: Swap,
174 accounts: SwapInstructionAccounts,
175 },
176 UpdateActivationPoint {
177 program_id: solana_pubkey::Pubkey,
178 data: UpdateActivationPoint,
179 accounts: UpdateActivationPointInstructionAccounts,
180 },
181 WithdrawProtocolFees {
182 program_id: solana_pubkey::Pubkey,
183 data: WithdrawProtocolFees,
184 accounts: WithdrawProtocolFeesInstructionAccounts,
185 },
186 CpiEvent {
187 program_id: solana_pubkey::Pubkey,
188 data: CpiEvent,
189 accounts: CpiEventInstructionAccounts,
190 },
191}
192
193impl carbon_core::instruction::InstructionDecoder<'_> for MeteoraPoolsDecoder {
194 type InstructionType = MeteoraPoolsInstruction;
195
196 fn decode_instruction(
197 &self,
198 instruction: &solana_instruction::Instruction,
199 ) -> Option<Self::InstructionType> {
200 if instruction.program_id != PROGRAM_ID {
201 return None;
202 }
203
204 carbon_core::try_decode_instructions!(
205 instruction,
206 PROGRAM_ID,
207 MeteoraPoolsInstruction::AddBalanceLiquidity => AddBalanceLiquidity,
208 MeteoraPoolsInstruction::AddImbalanceLiquidity => AddImbalanceLiquidity,
209 MeteoraPoolsInstruction::BootstrapLiquidity => BootstrapLiquidity,
210 MeteoraPoolsInstruction::ClaimFee => ClaimFee,
211 MeteoraPoolsInstruction::CloseConfig => CloseConfig,
212 MeteoraPoolsInstruction::CreateConfig => CreateConfig,
213 MeteoraPoolsInstruction::CreateLockEscrow => CreateLockEscrow,
214 MeteoraPoolsInstruction::CreateMintMetadata => CreateMintMetadata,
215 MeteoraPoolsInstruction::EnableOrDisablePool => EnableOrDisablePool,
216 MeteoraPoolsInstruction::GetPoolInfo => GetPoolInfo,
217 MeteoraPoolsInstruction::InitializeCustomizablePermissionlessConstantProductPool => InitializeCustomizablePermissionlessConstantProductPool,
218 MeteoraPoolsInstruction::InitializePermissionedPool => InitializePermissionedPool,
219 MeteoraPoolsInstruction::InitializePermissionlessConstantProductPoolWithConfig => InitializePermissionlessConstantProductPoolWithConfig,
220 MeteoraPoolsInstruction::InitializePermissionlessConstantProductPoolWithConfig2 => InitializePermissionlessConstantProductPoolWithConfig2,
221 MeteoraPoolsInstruction::InitializePermissionlessPool => InitializePermissionlessPool,
222 MeteoraPoolsInstruction::InitializePermissionlessPoolWithFeeTier => InitializePermissionlessPoolWithFeeTier,
223 MeteoraPoolsInstruction::Lock => Lock,
224 MeteoraPoolsInstruction::OverrideCurveParam => OverrideCurveParam,
225 MeteoraPoolsInstruction::PartnerClaimFee => PartnerClaimFee,
226 MeteoraPoolsInstruction::RemoveBalanceLiquidity => RemoveBalanceLiquidity,
227 MeteoraPoolsInstruction::RemoveLiquiditySingleSide => RemoveLiquiditySingleSide,
228 MeteoraPoolsInstruction::SetPoolFees => SetPoolFees,
229 MeteoraPoolsInstruction::SetWhitelistedVault => SetWhitelistedVault,
230 MeteoraPoolsInstruction::Swap => Swap,
231 MeteoraPoolsInstruction::UpdateActivationPoint => UpdateActivationPoint,
232 MeteoraPoolsInstruction::WithdrawProtocolFees => WithdrawProtocolFees,
233 MeteoraPoolsInstruction::CpiEvent => CpiEvent,
234 )
235 }
236}