1use crate::{BoopDecoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod add_operators;
11pub mod buy_token;
12pub mod cancel_authority_transfer;
13pub mod close_bonding_curve_vault;
14pub mod collect_meteora_trading_fees;
15pub mod collect_meteora_trading_fees_v2;
16pub mod collect_trading_fees;
17pub mod collect_trading_fees_v2;
18pub mod complete_authority_transfer;
19pub mod cpi_event;
20pub mod create_meteora_pool;
21pub mod create_raydium_pool;
22pub mod create_raydium_random_pool;
23pub mod create_token;
24pub mod create_token_fallback;
25pub mod deploy_bonding_curve;
26pub mod deploy_bonding_curve_fallback;
27pub mod deposit_into_raydium;
28pub mod graduate;
29pub mod initialize;
30pub mod initiate_authority_transfer;
31pub mod lock_raydium_liquidity;
32pub mod remove_operators;
33pub mod sell_token;
34pub mod split_post_graduation_trading_fees;
35pub mod split_trading_fees;
36pub mod swap_sol_for_tokens_on_raydium;
37pub mod swap_tokens_for_sol_on_raydium;
38pub mod toggle_paused;
39pub mod update_config;
40
41pub use self::{
42 add_operators::*, buy_token::*, cancel_authority_transfer::*, close_bonding_curve_vault::*,
43 collect_meteora_trading_fees::*, collect_meteora_trading_fees_v2::*, collect_trading_fees::*,
44 collect_trading_fees_v2::*, complete_authority_transfer::*, cpi_event::*,
45 create_meteora_pool::*, create_raydium_pool::*, create_raydium_random_pool::*, create_token::*,
46 create_token_fallback::*, deploy_bonding_curve::*, deploy_bonding_curve_fallback::*,
47 deposit_into_raydium::*, graduate::*, initialize::*, initiate_authority_transfer::*,
48 lock_raydium_liquidity::*, remove_operators::*, sell_token::*,
49 split_post_graduation_trading_fees::*, split_trading_fees::*,
50 swap_sol_for_tokens_on_raydium::*, swap_tokens_for_sol_on_raydium::*, toggle_paused::*,
51 update_config::*,
52};
53
54#[derive(Debug, Clone, PartialEq)]
55#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
56#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
57pub enum BoopInstruction {
58 AddOperators {
59 program_id: solana_pubkey::Pubkey,
60 data: AddOperators,
61 accounts: AddOperatorsInstructionAccounts,
62 },
63 BuyToken {
64 program_id: solana_pubkey::Pubkey,
65 data: BuyToken,
66 accounts: BuyTokenInstructionAccounts,
67 },
68 CancelAuthorityTransfer {
69 program_id: solana_pubkey::Pubkey,
70 data: CancelAuthorityTransfer,
71 accounts: CancelAuthorityTransferInstructionAccounts,
72 },
73 CloseBondingCurveVault {
74 program_id: solana_pubkey::Pubkey,
75 data: CloseBondingCurveVault,
76 accounts: CloseBondingCurveVaultInstructionAccounts,
77 },
78 CollectMeteoraTradingFees {
79 program_id: solana_pubkey::Pubkey,
80 data: CollectMeteoraTradingFees,
81 accounts: CollectMeteoraTradingFeesInstructionAccounts,
82 },
83 CollectMeteoraTradingFeesV2 {
84 program_id: solana_pubkey::Pubkey,
85 data: CollectMeteoraTradingFeesV2,
86 accounts: CollectMeteoraTradingFeesV2InstructionAccounts,
87 },
88 CollectTradingFees {
89 program_id: solana_pubkey::Pubkey,
90 data: CollectTradingFees,
91 accounts: CollectTradingFeesInstructionAccounts,
92 },
93 CollectTradingFeesV2 {
94 program_id: solana_pubkey::Pubkey,
95 data: CollectTradingFeesV2,
96 accounts: CollectTradingFeesV2InstructionAccounts,
97 },
98 CompleteAuthorityTransfer {
99 program_id: solana_pubkey::Pubkey,
100 data: CompleteAuthorityTransfer,
101 accounts: CompleteAuthorityTransferInstructionAccounts,
102 },
103 CreateMeteoraPool {
104 program_id: solana_pubkey::Pubkey,
105 data: CreateMeteoraPool,
106 accounts: CreateMeteoraPoolInstructionAccounts,
107 },
108 CreateRaydiumPool {
109 program_id: solana_pubkey::Pubkey,
110 data: CreateRaydiumPool,
111 accounts: CreateRaydiumPoolInstructionAccounts,
112 },
113 CreateRaydiumRandomPool {
114 program_id: solana_pubkey::Pubkey,
115 data: CreateRaydiumRandomPool,
116 accounts: CreateRaydiumRandomPoolInstructionAccounts,
117 },
118 CreateToken {
119 program_id: solana_pubkey::Pubkey,
120 data: CreateToken,
121 accounts: CreateTokenInstructionAccounts,
122 },
123 CreateTokenFallback {
124 program_id: solana_pubkey::Pubkey,
125 data: CreateTokenFallback,
126 accounts: CreateTokenFallbackInstructionAccounts,
127 },
128 DeployBondingCurve {
129 program_id: solana_pubkey::Pubkey,
130 data: DeployBondingCurve,
131 accounts: DeployBondingCurveInstructionAccounts,
132 },
133 DeployBondingCurveFallback {
134 program_id: solana_pubkey::Pubkey,
135 data: DeployBondingCurveFallback,
136 accounts: DeployBondingCurveFallbackInstructionAccounts,
137 },
138 DepositIntoRaydium {
139 program_id: solana_pubkey::Pubkey,
140 data: DepositIntoRaydium,
141 accounts: DepositIntoRaydiumInstructionAccounts,
142 },
143 Graduate {
144 program_id: solana_pubkey::Pubkey,
145 data: Graduate,
146 accounts: GraduateInstructionAccounts,
147 },
148 Initialize {
149 program_id: solana_pubkey::Pubkey,
150 data: Initialize,
151 accounts: InitializeInstructionAccounts,
152 },
153 InitiateAuthorityTransfer {
154 program_id: solana_pubkey::Pubkey,
155 data: InitiateAuthorityTransfer,
156 accounts: InitiateAuthorityTransferInstructionAccounts,
157 },
158 LockRaydiumLiquidity {
159 program_id: solana_pubkey::Pubkey,
160 data: LockRaydiumLiquidity,
161 accounts: LockRaydiumLiquidityInstructionAccounts,
162 },
163 RemoveOperators {
164 program_id: solana_pubkey::Pubkey,
165 data: RemoveOperators,
166 accounts: RemoveOperatorsInstructionAccounts,
167 },
168 SellToken {
169 program_id: solana_pubkey::Pubkey,
170 data: SellToken,
171 accounts: SellTokenInstructionAccounts,
172 },
173 SplitPostGraduationTradingFees {
174 program_id: solana_pubkey::Pubkey,
175 data: SplitPostGraduationTradingFees,
176 accounts: SplitPostGraduationTradingFeesInstructionAccounts,
177 },
178 SplitTradingFees {
179 program_id: solana_pubkey::Pubkey,
180 data: SplitTradingFees,
181 accounts: SplitTradingFeesInstructionAccounts,
182 },
183 SwapSolForTokensOnRaydium {
184 program_id: solana_pubkey::Pubkey,
185 data: SwapSolForTokensOnRaydium,
186 accounts: SwapSolForTokensOnRaydiumInstructionAccounts,
187 },
188 SwapTokensForSolOnRaydium {
189 program_id: solana_pubkey::Pubkey,
190 data: SwapTokensForSolOnRaydium,
191 accounts: SwapTokensForSolOnRaydiumInstructionAccounts,
192 },
193 TogglePaused {
194 program_id: solana_pubkey::Pubkey,
195 data: TogglePaused,
196 accounts: TogglePausedInstructionAccounts,
197 },
198 UpdateConfig {
199 program_id: solana_pubkey::Pubkey,
200 data: UpdateConfig,
201 accounts: UpdateConfigInstructionAccounts,
202 },
203 CpiEvent {
204 program_id: solana_pubkey::Pubkey,
205 data: CpiEvent,
206 accounts: CpiEventInstructionAccounts,
207 },
208}
209
210impl carbon_core::instruction::InstructionDecoder<'_> for BoopDecoder {
211 type InstructionType = BoopInstruction;
212
213 fn decode_instruction(
214 &self,
215 instruction: &solana_instruction::Instruction,
216 ) -> Option<Self::InstructionType> {
217 if instruction.program_id != PROGRAM_ID {
218 return None;
219 }
220
221 carbon_core::try_decode_instructions!(
222 instruction,
223 PROGRAM_ID,
224 BoopInstruction::AddOperators => AddOperators,
225 BoopInstruction::BuyToken => BuyToken,
226 BoopInstruction::CancelAuthorityTransfer => CancelAuthorityTransfer,
227 BoopInstruction::CloseBondingCurveVault => CloseBondingCurveVault,
228 BoopInstruction::CollectMeteoraTradingFees => CollectMeteoraTradingFees,
229 BoopInstruction::CollectMeteoraTradingFeesV2 => CollectMeteoraTradingFeesV2,
230 BoopInstruction::CollectTradingFees => CollectTradingFees,
231 BoopInstruction::CollectTradingFeesV2 => CollectTradingFeesV2,
232 BoopInstruction::CompleteAuthorityTransfer => CompleteAuthorityTransfer,
233 BoopInstruction::CreateMeteoraPool => CreateMeteoraPool,
234 BoopInstruction::CreateRaydiumPool => CreateRaydiumPool,
235 BoopInstruction::CreateRaydiumRandomPool => CreateRaydiumRandomPool,
236 BoopInstruction::CreateToken => CreateToken,
237 BoopInstruction::CreateTokenFallback => CreateTokenFallback,
238 BoopInstruction::DeployBondingCurve => DeployBondingCurve,
239 BoopInstruction::DeployBondingCurveFallback => DeployBondingCurveFallback,
240 BoopInstruction::DepositIntoRaydium => DepositIntoRaydium,
241 BoopInstruction::Graduate => Graduate,
242 BoopInstruction::Initialize => Initialize,
243 BoopInstruction::InitiateAuthorityTransfer => InitiateAuthorityTransfer,
244 BoopInstruction::LockRaydiumLiquidity => LockRaydiumLiquidity,
245 BoopInstruction::RemoveOperators => RemoveOperators,
246 BoopInstruction::SellToken => SellToken,
247 BoopInstruction::SplitPostGraduationTradingFees => SplitPostGraduationTradingFees,
248 BoopInstruction::SplitTradingFees => SplitTradingFees,
249 BoopInstruction::SwapSolForTokensOnRaydium => SwapSolForTokensOnRaydium,
250 BoopInstruction::SwapTokensForSolOnRaydium => SwapTokensForSolOnRaydium,
251 BoopInstruction::TogglePaused => TogglePaused,
252 BoopInstruction::UpdateConfig => UpdateConfig,
253 BoopInstruction::CpiEvent => CpiEvent,
254 )
255 }
256}