1use crate::{WavebreakDecoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod authority_config_grant;
11pub mod authority_config_initialize;
12pub mod authority_config_revoke;
13pub mod bonding_curve_close;
14pub mod bonding_curve_collect_fees;
15pub mod bonding_curve_graduate;
16pub mod bonding_curve_initialize;
17pub mod create_launch;
18pub mod create_lockedlaunch;
19pub mod create_presale;
20pub mod graduate_manual;
21pub mod graduate_whirlpool;
22pub mod lp_harvest;
23pub mod lp_takeover;
24pub mod lp_transfer;
25pub mod mint_config_close;
26pub mod mint_config_initialize;
27pub mod mint_config_update;
28pub mod permission_config_close;
29pub mod permission_config_initialize;
30pub mod permission_config_update;
31pub mod permission_consume_cpi;
32pub mod permission_consume_top_level;
33pub mod permission_refund;
34pub mod permission_revoke;
35pub mod reserved_authority_config_a;
36pub mod reserved_authority_config_b;
37pub mod reserved_authority_config_c;
38pub mod reserved_authority_config_y;
39pub mod reserved_authority_config_z;
40pub mod reserved_bonding_curve_a;
41pub mod reserved_bonding_curve_x;
42pub mod reserved_bonding_curve_y;
43pub mod reserved_bonding_curve_z;
44pub mod reserved_create_a;
45pub mod reserved_create_b;
46pub mod reserved_create_c;
47pub mod reserved_create_y;
48pub mod reserved_create_z;
49pub mod reserved_graduate_a;
50pub mod reserved_graduate_b;
51pub mod reserved_graduate_c;
52pub mod reserved_graduate_x;
53pub mod reserved_graduate_y;
54pub mod reserved_graduate_z;
55pub mod reserved_lp_a;
56pub mod reserved_lp_b;
57pub mod reserved_lp_x;
58pub mod reserved_lp_y;
59pub mod reserved_lp_z;
60pub mod reserved_mint_config_a;
61pub mod reserved_mint_config_b;
62pub mod reserved_mint_config_c;
63pub mod reserved_mint_config_y;
64pub mod reserved_mint_config_z;
65pub mod reserved_permission_a;
66pub mod reserved_token_a;
67pub mod reserved_token_y;
68pub mod reserved_token_z;
69pub mod token_buy_exact_in;
70pub mod token_buy_exact_out;
71pub mod token_refund;
72pub mod token_sell_exact_in;
73pub mod token_sell_exact_out;
74
75pub use self::{
76 authority_config_grant::*, authority_config_initialize::*, authority_config_revoke::*,
77 bonding_curve_close::*, bonding_curve_collect_fees::*, bonding_curve_graduate::*,
78 bonding_curve_initialize::*, create_launch::*, create_lockedlaunch::*, create_presale::*,
79 graduate_manual::*, graduate_whirlpool::*, lp_harvest::*, lp_takeover::*, lp_transfer::*,
80 mint_config_close::*, mint_config_initialize::*, mint_config_update::*,
81 permission_config_close::*, permission_config_initialize::*, permission_config_update::*,
82 permission_consume_cpi::*, permission_consume_top_level::*, permission_refund::*,
83 permission_revoke::*, reserved_authority_config_a::*, reserved_authority_config_b::*,
84 reserved_authority_config_c::*, reserved_authority_config_y::*, reserved_authority_config_z::*,
85 reserved_bonding_curve_a::*, reserved_bonding_curve_x::*, reserved_bonding_curve_y::*,
86 reserved_bonding_curve_z::*, reserved_create_a::*, reserved_create_b::*, reserved_create_c::*,
87 reserved_create_y::*, reserved_create_z::*, reserved_graduate_a::*, reserved_graduate_b::*,
88 reserved_graduate_c::*, reserved_graduate_x::*, reserved_graduate_y::*, reserved_graduate_z::*,
89 reserved_lp_a::*, reserved_lp_b::*, reserved_lp_x::*, reserved_lp_y::*, reserved_lp_z::*,
90 reserved_mint_config_a::*, reserved_mint_config_b::*, reserved_mint_config_c::*,
91 reserved_mint_config_y::*, reserved_mint_config_z::*, reserved_permission_a::*,
92 reserved_token_a::*, reserved_token_y::*, reserved_token_z::*, token_buy_exact_in::*,
93 token_buy_exact_out::*, token_refund::*, token_sell_exact_in::*, token_sell_exact_out::*,
94};
95
96#[derive(Debug, Clone, PartialEq)]
97#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
98#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
99pub enum WavebreakInstruction {
100 AuthorityConfigGrant {
101 program_id: solana_pubkey::Pubkey,
102 data: AuthorityConfigGrant,
103 accounts: AuthorityConfigGrantInstructionAccounts,
104 },
105 AuthorityConfigInitialize {
106 program_id: solana_pubkey::Pubkey,
107 data: AuthorityConfigInitialize,
108 accounts: AuthorityConfigInitializeInstructionAccounts,
109 },
110 AuthorityConfigRevoke {
111 program_id: solana_pubkey::Pubkey,
112 data: AuthorityConfigRevoke,
113 accounts: AuthorityConfigRevokeInstructionAccounts,
114 },
115 BondingCurveClose {
116 program_id: solana_pubkey::Pubkey,
117 data: BondingCurveClose,
118 accounts: BondingCurveCloseInstructionAccounts,
119 },
120 BondingCurveCollectFees {
121 program_id: solana_pubkey::Pubkey,
122 data: BondingCurveCollectFees,
123 accounts: BondingCurveCollectFeesInstructionAccounts,
124 },
125 BondingCurveGraduate {
126 program_id: solana_pubkey::Pubkey,
127 data: BondingCurveGraduate,
128 accounts: BondingCurveGraduateInstructionAccounts,
129 },
130 BondingCurveInitialize {
131 program_id: solana_pubkey::Pubkey,
132 data: BondingCurveInitialize,
133 accounts: BondingCurveInitializeInstructionAccounts,
134 },
135 CreateLaunch {
136 program_id: solana_pubkey::Pubkey,
137 data: CreateLaunch,
138 accounts: CreateLaunchInstructionAccounts,
139 },
140 CreateLockedlaunch {
141 program_id: solana_pubkey::Pubkey,
142 data: CreateLockedlaunch,
143 accounts: CreateLockedlaunchInstructionAccounts,
144 },
145 CreatePresale {
146 program_id: solana_pubkey::Pubkey,
147 data: CreatePresale,
148 accounts: CreatePresaleInstructionAccounts,
149 },
150 GraduateManual {
151 program_id: solana_pubkey::Pubkey,
152 data: GraduateManual,
153 accounts: GraduateManualInstructionAccounts,
154 },
155 GraduateWhirlpool {
156 program_id: solana_pubkey::Pubkey,
157 data: GraduateWhirlpool,
158 accounts: GraduateWhirlpoolInstructionAccounts,
159 },
160 LpHarvest {
161 program_id: solana_pubkey::Pubkey,
162 data: LpHarvest,
163 accounts: LpHarvestInstructionAccounts,
164 },
165 LpTakeover {
166 program_id: solana_pubkey::Pubkey,
167 data: LpTakeover,
168 accounts: LpTakeoverInstructionAccounts,
169 },
170 LpTransfer {
171 program_id: solana_pubkey::Pubkey,
172 data: LpTransfer,
173 accounts: LpTransferInstructionAccounts,
174 },
175 MintConfigClose {
176 program_id: solana_pubkey::Pubkey,
177 data: MintConfigClose,
178 accounts: MintConfigCloseInstructionAccounts,
179 },
180 MintConfigInitialize {
181 program_id: solana_pubkey::Pubkey,
182 data: MintConfigInitialize,
183 accounts: MintConfigInitializeInstructionAccounts,
184 },
185 MintConfigUpdate {
186 program_id: solana_pubkey::Pubkey,
187 data: MintConfigUpdate,
188 accounts: MintConfigUpdateInstructionAccounts,
189 },
190 PermissionConfigClose {
191 program_id: solana_pubkey::Pubkey,
192 data: PermissionConfigClose,
193 accounts: PermissionConfigCloseInstructionAccounts,
194 },
195 PermissionConfigInitialize {
196 program_id: solana_pubkey::Pubkey,
197 data: PermissionConfigInitialize,
198 accounts: PermissionConfigInitializeInstructionAccounts,
199 },
200 PermissionConfigUpdate {
201 program_id: solana_pubkey::Pubkey,
202 data: PermissionConfigUpdate,
203 accounts: PermissionConfigUpdateInstructionAccounts,
204 },
205 PermissionConsumeCpi {
206 program_id: solana_pubkey::Pubkey,
207 data: PermissionConsumeCpi,
208 accounts: PermissionConsumeCpiInstructionAccounts,
209 },
210 PermissionConsumeTopLevel {
211 program_id: solana_pubkey::Pubkey,
212 data: PermissionConsumeTopLevel,
213 accounts: PermissionConsumeTopLevelInstructionAccounts,
214 },
215 PermissionRefund {
216 program_id: solana_pubkey::Pubkey,
217 data: PermissionRefund,
218 accounts: PermissionRefundInstructionAccounts,
219 },
220 PermissionRevoke {
221 program_id: solana_pubkey::Pubkey,
222 data: PermissionRevoke,
223 accounts: PermissionRevokeInstructionAccounts,
224 },
225 ReservedAuthorityConfigA {
226 program_id: solana_pubkey::Pubkey,
227 data: ReservedAuthorityConfigA,
228 accounts: ReservedAuthorityConfigAInstructionAccounts,
229 },
230 ReservedAuthorityConfigB {
231 program_id: solana_pubkey::Pubkey,
232 data: ReservedAuthorityConfigB,
233 accounts: ReservedAuthorityConfigBInstructionAccounts,
234 },
235 ReservedAuthorityConfigC {
236 program_id: solana_pubkey::Pubkey,
237 data: ReservedAuthorityConfigC,
238 accounts: ReservedAuthorityConfigCInstructionAccounts,
239 },
240 ReservedAuthorityConfigY {
241 program_id: solana_pubkey::Pubkey,
242 data: ReservedAuthorityConfigY,
243 accounts: ReservedAuthorityConfigYInstructionAccounts,
244 },
245 ReservedAuthorityConfigZ {
246 program_id: solana_pubkey::Pubkey,
247 data: ReservedAuthorityConfigZ,
248 accounts: ReservedAuthorityConfigZInstructionAccounts,
249 },
250 ReservedBondingCurveA {
251 program_id: solana_pubkey::Pubkey,
252 data: ReservedBondingCurveA,
253 accounts: ReservedBondingCurveAInstructionAccounts,
254 },
255 ReservedBondingCurveX {
256 program_id: solana_pubkey::Pubkey,
257 data: ReservedBondingCurveX,
258 accounts: ReservedBondingCurveXInstructionAccounts,
259 },
260 ReservedBondingCurveY {
261 program_id: solana_pubkey::Pubkey,
262 data: ReservedBondingCurveY,
263 accounts: ReservedBondingCurveYInstructionAccounts,
264 },
265 ReservedBondingCurveZ {
266 program_id: solana_pubkey::Pubkey,
267 data: ReservedBondingCurveZ,
268 accounts: ReservedBondingCurveZInstructionAccounts,
269 },
270 ReservedCreateA {
271 program_id: solana_pubkey::Pubkey,
272 data: ReservedCreateA,
273 accounts: ReservedCreateAInstructionAccounts,
274 },
275 ReservedCreateB {
276 program_id: solana_pubkey::Pubkey,
277 data: ReservedCreateB,
278 accounts: ReservedCreateBInstructionAccounts,
279 },
280 ReservedCreateC {
281 program_id: solana_pubkey::Pubkey,
282 data: ReservedCreateC,
283 accounts: ReservedCreateCInstructionAccounts,
284 },
285 ReservedCreateY {
286 program_id: solana_pubkey::Pubkey,
287 data: ReservedCreateY,
288 accounts: ReservedCreateYInstructionAccounts,
289 },
290 ReservedCreateZ {
291 program_id: solana_pubkey::Pubkey,
292 data: ReservedCreateZ,
293 accounts: ReservedCreateZInstructionAccounts,
294 },
295 ReservedGraduateA {
296 program_id: solana_pubkey::Pubkey,
297 data: ReservedGraduateA,
298 accounts: ReservedGraduateAInstructionAccounts,
299 },
300 ReservedGraduateB {
301 program_id: solana_pubkey::Pubkey,
302 data: ReservedGraduateB,
303 accounts: ReservedGraduateBInstructionAccounts,
304 },
305 ReservedGraduateC {
306 program_id: solana_pubkey::Pubkey,
307 data: ReservedGraduateC,
308 accounts: ReservedGraduateCInstructionAccounts,
309 },
310 ReservedGraduateX {
311 program_id: solana_pubkey::Pubkey,
312 data: ReservedGraduateX,
313 accounts: ReservedGraduateXInstructionAccounts,
314 },
315 ReservedGraduateY {
316 program_id: solana_pubkey::Pubkey,
317 data: ReservedGraduateY,
318 accounts: ReservedGraduateYInstructionAccounts,
319 },
320 ReservedGraduateZ {
321 program_id: solana_pubkey::Pubkey,
322 data: ReservedGraduateZ,
323 accounts: ReservedGraduateZInstructionAccounts,
324 },
325 ReservedLpA {
326 program_id: solana_pubkey::Pubkey,
327 data: ReservedLpA,
328 accounts: ReservedLpAInstructionAccounts,
329 },
330 ReservedLpB {
331 program_id: solana_pubkey::Pubkey,
332 data: ReservedLpB,
333 accounts: ReservedLpBInstructionAccounts,
334 },
335 ReservedLpX {
336 program_id: solana_pubkey::Pubkey,
337 data: ReservedLpX,
338 accounts: ReservedLpXInstructionAccounts,
339 },
340 ReservedLpY {
341 program_id: solana_pubkey::Pubkey,
342 data: ReservedLpY,
343 accounts: ReservedLpYInstructionAccounts,
344 },
345 ReservedLpZ {
346 program_id: solana_pubkey::Pubkey,
347 data: ReservedLpZ,
348 accounts: ReservedLpZInstructionAccounts,
349 },
350 ReservedMintConfigA {
351 program_id: solana_pubkey::Pubkey,
352 data: ReservedMintConfigA,
353 accounts: ReservedMintConfigAInstructionAccounts,
354 },
355 ReservedMintConfigB {
356 program_id: solana_pubkey::Pubkey,
357 data: ReservedMintConfigB,
358 accounts: ReservedMintConfigBInstructionAccounts,
359 },
360 ReservedMintConfigC {
361 program_id: solana_pubkey::Pubkey,
362 data: ReservedMintConfigC,
363 accounts: ReservedMintConfigCInstructionAccounts,
364 },
365 ReservedMintConfigY {
366 program_id: solana_pubkey::Pubkey,
367 data: ReservedMintConfigY,
368 accounts: ReservedMintConfigYInstructionAccounts,
369 },
370 ReservedMintConfigZ {
371 program_id: solana_pubkey::Pubkey,
372 data: ReservedMintConfigZ,
373 accounts: ReservedMintConfigZInstructionAccounts,
374 },
375 ReservedPermissionA {
376 program_id: solana_pubkey::Pubkey,
377 data: ReservedPermissionA,
378 accounts: ReservedPermissionAInstructionAccounts,
379 },
380 ReservedTokenA {
381 program_id: solana_pubkey::Pubkey,
382 data: ReservedTokenA,
383 accounts: ReservedTokenAInstructionAccounts,
384 },
385 ReservedTokenY {
386 program_id: solana_pubkey::Pubkey,
387 data: ReservedTokenY,
388 accounts: ReservedTokenYInstructionAccounts,
389 },
390 ReservedTokenZ {
391 program_id: solana_pubkey::Pubkey,
392 data: ReservedTokenZ,
393 accounts: ReservedTokenZInstructionAccounts,
394 },
395 TokenBuyExactIn {
396 program_id: solana_pubkey::Pubkey,
397 data: TokenBuyExactIn,
398 accounts: TokenBuyExactInInstructionAccounts,
399 },
400 TokenBuyExactOut {
401 program_id: solana_pubkey::Pubkey,
402 data: TokenBuyExactOut,
403 accounts: TokenBuyExactOutInstructionAccounts,
404 },
405 TokenRefund {
406 program_id: solana_pubkey::Pubkey,
407 data: TokenRefund,
408 accounts: TokenRefundInstructionAccounts,
409 },
410 TokenSellExactIn {
411 program_id: solana_pubkey::Pubkey,
412 data: TokenSellExactIn,
413 accounts: TokenSellExactInInstructionAccounts,
414 },
415 TokenSellExactOut {
416 program_id: solana_pubkey::Pubkey,
417 data: TokenSellExactOut,
418 accounts: TokenSellExactOutInstructionAccounts,
419 },
420}
421
422impl carbon_core::instruction::InstructionDecoder<'_> for WavebreakDecoder {
423 type InstructionType = WavebreakInstruction;
424
425 fn decode_instruction(
426 &self,
427 instruction: &solana_instruction::Instruction,
428 ) -> Option<Self::InstructionType> {
429 if instruction.program_id != PROGRAM_ID {
430 return None;
431 }
432
433 carbon_core::try_decode_instructions!(
434 instruction,
435 PROGRAM_ID,
436 WavebreakInstruction::AuthorityConfigGrant => AuthorityConfigGrant,
437 WavebreakInstruction::AuthorityConfigInitialize => AuthorityConfigInitialize,
438 WavebreakInstruction::AuthorityConfigRevoke => AuthorityConfigRevoke,
439 WavebreakInstruction::BondingCurveClose => BondingCurveClose,
440 WavebreakInstruction::BondingCurveCollectFees => BondingCurveCollectFees,
441 WavebreakInstruction::BondingCurveGraduate => BondingCurveGraduate,
442 WavebreakInstruction::BondingCurveInitialize => BondingCurveInitialize,
443 WavebreakInstruction::CreateLaunch => CreateLaunch,
444 WavebreakInstruction::CreateLockedlaunch => CreateLockedlaunch,
445 WavebreakInstruction::CreatePresale => CreatePresale,
446 WavebreakInstruction::GraduateManual => GraduateManual,
447 WavebreakInstruction::GraduateWhirlpool => GraduateWhirlpool,
448 WavebreakInstruction::LpHarvest => LpHarvest,
449 WavebreakInstruction::LpTakeover => LpTakeover,
450 WavebreakInstruction::LpTransfer => LpTransfer,
451 WavebreakInstruction::MintConfigClose => MintConfigClose,
452 WavebreakInstruction::MintConfigInitialize => MintConfigInitialize,
453 WavebreakInstruction::MintConfigUpdate => MintConfigUpdate,
454 WavebreakInstruction::PermissionConfigClose => PermissionConfigClose,
455 WavebreakInstruction::PermissionConfigInitialize => PermissionConfigInitialize,
456 WavebreakInstruction::PermissionConfigUpdate => PermissionConfigUpdate,
457 WavebreakInstruction::PermissionConsumeCpi => PermissionConsumeCpi,
458 WavebreakInstruction::PermissionConsumeTopLevel => PermissionConsumeTopLevel,
459 WavebreakInstruction::PermissionRefund => PermissionRefund,
460 WavebreakInstruction::PermissionRevoke => PermissionRevoke,
461 WavebreakInstruction::ReservedAuthorityConfigA => ReservedAuthorityConfigA,
462 WavebreakInstruction::ReservedAuthorityConfigB => ReservedAuthorityConfigB,
463 WavebreakInstruction::ReservedAuthorityConfigC => ReservedAuthorityConfigC,
464 WavebreakInstruction::ReservedAuthorityConfigY => ReservedAuthorityConfigY,
465 WavebreakInstruction::ReservedAuthorityConfigZ => ReservedAuthorityConfigZ,
466 WavebreakInstruction::ReservedBondingCurveA => ReservedBondingCurveA,
467 WavebreakInstruction::ReservedBondingCurveX => ReservedBondingCurveX,
468 WavebreakInstruction::ReservedBondingCurveY => ReservedBondingCurveY,
469 WavebreakInstruction::ReservedBondingCurveZ => ReservedBondingCurveZ,
470 WavebreakInstruction::ReservedCreateA => ReservedCreateA,
471 WavebreakInstruction::ReservedCreateB => ReservedCreateB,
472 WavebreakInstruction::ReservedCreateC => ReservedCreateC,
473 WavebreakInstruction::ReservedCreateY => ReservedCreateY,
474 WavebreakInstruction::ReservedCreateZ => ReservedCreateZ,
475 WavebreakInstruction::ReservedGraduateA => ReservedGraduateA,
476 WavebreakInstruction::ReservedGraduateB => ReservedGraduateB,
477 WavebreakInstruction::ReservedGraduateC => ReservedGraduateC,
478 WavebreakInstruction::ReservedGraduateX => ReservedGraduateX,
479 WavebreakInstruction::ReservedGraduateY => ReservedGraduateY,
480 WavebreakInstruction::ReservedGraduateZ => ReservedGraduateZ,
481 WavebreakInstruction::ReservedLpA => ReservedLpA,
482 WavebreakInstruction::ReservedLpB => ReservedLpB,
483 WavebreakInstruction::ReservedLpX => ReservedLpX,
484 WavebreakInstruction::ReservedLpY => ReservedLpY,
485 WavebreakInstruction::ReservedLpZ => ReservedLpZ,
486 WavebreakInstruction::ReservedMintConfigA => ReservedMintConfigA,
487 WavebreakInstruction::ReservedMintConfigB => ReservedMintConfigB,
488 WavebreakInstruction::ReservedMintConfigC => ReservedMintConfigC,
489 WavebreakInstruction::ReservedMintConfigY => ReservedMintConfigY,
490 WavebreakInstruction::ReservedMintConfigZ => ReservedMintConfigZ,
491 WavebreakInstruction::ReservedPermissionA => ReservedPermissionA,
492 WavebreakInstruction::ReservedTokenA => ReservedTokenA,
493 WavebreakInstruction::ReservedTokenY => ReservedTokenY,
494 WavebreakInstruction::ReservedTokenZ => ReservedTokenZ,
495 WavebreakInstruction::TokenBuyExactIn => TokenBuyExactIn,
496 WavebreakInstruction::TokenBuyExactOut => TokenBuyExactOut,
497 WavebreakInstruction::TokenRefund => TokenRefund,
498 WavebreakInstruction::TokenSellExactIn => TokenSellExactIn,
499 WavebreakInstruction::TokenSellExactOut => TokenSellExactOut,
500 )
501 }
502}