carbon_wavebreak_decoder/instructions/
mod.rs

1use crate::PROGRAM_ID;
2
3use super::WavebreakDecoder;
4pub mod authority_config_grant;
5pub mod authority_config_initialize;
6pub mod authority_config_revoke;
7pub mod bonding_curve_close;
8pub mod bonding_curve_collect_fees;
9pub mod bonding_curve_graduate;
10pub mod bonding_curve_initialize;
11pub mod create_launch;
12pub mod create_lockedlaunch;
13pub mod create_presale;
14pub mod graduate_manual;
15pub mod graduate_whirlpool;
16pub mod mint_config_close;
17pub mod mint_config_initialize;
18pub mod mint_config_update;
19pub mod permission_config_close;
20pub mod permission_config_initialize;
21pub mod permission_config_update;
22pub mod permission_consume_cpi;
23pub mod permission_consume_top_level;
24pub mod permission_refund;
25pub mod permission_revoke;
26pub mod reserved_authority_config_a;
27pub mod reserved_authority_config_b;
28pub mod reserved_authority_config_c;
29pub mod reserved_authority_config_y;
30pub mod reserved_authority_config_z;
31pub mod reserved_bonding_curve_a;
32pub mod reserved_bonding_curve_x;
33pub mod reserved_bonding_curve_y;
34pub mod reserved_bonding_curve_z;
35pub mod reserved_create_a;
36pub mod reserved_create_b;
37pub mod reserved_create_c;
38pub mod reserved_create_y;
39pub mod reserved_create_z;
40pub mod reserved_graduate_a;
41pub mod reserved_graduate_b;
42pub mod reserved_graduate_c;
43pub mod reserved_graduate_x;
44pub mod reserved_graduate_y;
45pub mod reserved_graduate_z;
46pub mod reserved_mint_config_a;
47pub mod reserved_mint_config_b;
48pub mod reserved_mint_config_c;
49pub mod reserved_mint_config_y;
50pub mod reserved_mint_config_z;
51pub mod reserved_permission_a;
52pub mod reserved_token_a;
53pub mod reserved_token_y;
54pub mod reserved_token_z;
55pub mod token_buy_exact_in;
56pub mod token_buy_exact_out;
57pub mod token_refund;
58pub mod token_sell_exact_in;
59pub mod token_sell_exact_out;
60
61#[derive(
62    carbon_core::InstructionType,
63    serde::Serialize,
64    serde::Deserialize,
65    PartialEq,
66    Eq,
67    Debug,
68    Clone,
69    Hash,
70)]
71pub enum WavebreakInstruction {
72    PermissionConsumeTopLevel(permission_consume_top_level::PermissionConsumeTopLevel),
73    PermissionConsumeCpi(permission_consume_cpi::PermissionConsumeCpi),
74    PermissionConfigInitialize(permission_config_initialize::PermissionConfigInitialize),
75    PermissionConfigUpdate(permission_config_update::PermissionConfigUpdate),
76    PermissionConfigClose(permission_config_close::PermissionConfigClose),
77    PermissionRevoke(permission_revoke::PermissionRevoke),
78    PermissionRefund(permission_refund::PermissionRefund),
79    ReservedPermissionA(reserved_permission_a::ReservedPermissionA),
80    TokenBuyExactIn(token_buy_exact_in::TokenBuyExactIn),
81    TokenBuyExactOut(token_buy_exact_out::TokenBuyExactOut),
82    TokenSellExactIn(token_sell_exact_in::TokenSellExactIn),
83    TokenSellExactOut(token_sell_exact_out::TokenSellExactOut),
84    TokenRefund(token_refund::TokenRefund),
85    ReservedTokenY(reserved_token_y::ReservedTokenY),
86    ReservedTokenZ(reserved_token_z::ReservedTokenZ),
87    ReservedTokenA(reserved_token_a::ReservedTokenA),
88    AuthorityConfigInitialize(authority_config_initialize::AuthorityConfigInitialize),
89    AuthorityConfigGrant(authority_config_grant::AuthorityConfigGrant),
90    AuthorityConfigRevoke(authority_config_revoke::AuthorityConfigRevoke),
91    ReservedAuthorityConfigY(reserved_authority_config_y::ReservedAuthorityConfigY),
92    ReservedAuthorityConfigZ(reserved_authority_config_z::ReservedAuthorityConfigZ),
93    ReservedAuthorityConfigA(reserved_authority_config_a::ReservedAuthorityConfigA),
94    ReservedAuthorityConfigB(reserved_authority_config_b::ReservedAuthorityConfigB),
95    ReservedAuthorityConfigC(reserved_authority_config_c::ReservedAuthorityConfigC),
96    MintConfigInitialize(mint_config_initialize::MintConfigInitialize),
97    MintConfigClose(mint_config_close::MintConfigClose),
98    MintConfigUpdate(mint_config_update::MintConfigUpdate),
99    ReservedMintConfigY(reserved_mint_config_y::ReservedMintConfigY),
100    ReservedMintConfigZ(reserved_mint_config_z::ReservedMintConfigZ),
101    ReservedMintConfigA(reserved_mint_config_a::ReservedMintConfigA),
102    ReservedMintConfigB(reserved_mint_config_b::ReservedMintConfigB),
103    ReservedMintConfigC(reserved_mint_config_c::ReservedMintConfigC),
104    GraduateWhirlpool(graduate_whirlpool::GraduateWhirlpool),
105    GraduateManual(graduate_manual::GraduateManual),
106    ReservedGraduateX(reserved_graduate_x::ReservedGraduateX),
107    ReservedGraduateY(reserved_graduate_y::ReservedGraduateY),
108    ReservedGraduateZ(reserved_graduate_z::ReservedGraduateZ),
109    ReservedGraduateA(reserved_graduate_a::ReservedGraduateA),
110    ReservedGraduateB(reserved_graduate_b::ReservedGraduateB),
111    ReservedGraduateC(reserved_graduate_c::ReservedGraduateC),
112    CreateLockedlaunch(create_lockedlaunch::CreateLockedlaunch),
113    CreateLaunch(create_launch::CreateLaunch),
114    CreatePresale(create_presale::CreatePresale),
115    ReservedCreateY(reserved_create_y::ReservedCreateY),
116    ReservedCreateZ(reserved_create_z::ReservedCreateZ),
117    ReservedCreateA(reserved_create_a::ReservedCreateA),
118    ReservedCreateB(reserved_create_b::ReservedCreateB),
119    ReservedCreateC(reserved_create_c::ReservedCreateC),
120    BondingCurveInitialize(bonding_curve_initialize::BondingCurveInitialize),
121    BondingCurveCollectFees(bonding_curve_collect_fees::BondingCurveCollectFees),
122    BondingCurveGraduate(bonding_curve_graduate::BondingCurveGraduate),
123    BondingCurveClose(bonding_curve_close::BondingCurveClose),
124    ReservedBondingCurveX(reserved_bonding_curve_x::ReservedBondingCurveX),
125    ReservedBondingCurveY(reserved_bonding_curve_y::ReservedBondingCurveY),
126    ReservedBondingCurveZ(reserved_bonding_curve_z::ReservedBondingCurveZ),
127    ReservedBondingCurveA(reserved_bonding_curve_a::ReservedBondingCurveA),
128}
129
130impl carbon_core::instruction::InstructionDecoder<'_> for WavebreakDecoder {
131    type InstructionType = WavebreakInstruction;
132
133    fn decode_instruction(
134        &self,
135        instruction: &solana_instruction::Instruction,
136    ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
137        if !instruction.program_id.eq(&PROGRAM_ID) {
138            return None;
139        }
140
141        carbon_core::try_decode_instructions!(instruction,
142            WavebreakInstruction::PermissionConsumeTopLevel => permission_consume_top_level::PermissionConsumeTopLevel,
143            WavebreakInstruction::PermissionConsumeCpi => permission_consume_cpi::PermissionConsumeCpi,
144            WavebreakInstruction::PermissionConfigInitialize => permission_config_initialize::PermissionConfigInitialize,
145            WavebreakInstruction::PermissionConfigUpdate => permission_config_update::PermissionConfigUpdate,
146            WavebreakInstruction::PermissionConfigClose => permission_config_close::PermissionConfigClose,
147            WavebreakInstruction::PermissionRevoke => permission_revoke::PermissionRevoke,
148            WavebreakInstruction::PermissionRefund => permission_refund::PermissionRefund,
149            WavebreakInstruction::ReservedPermissionA => reserved_permission_a::ReservedPermissionA,
150            WavebreakInstruction::TokenBuyExactIn => token_buy_exact_in::TokenBuyExactIn,
151            WavebreakInstruction::TokenBuyExactOut => token_buy_exact_out::TokenBuyExactOut,
152            WavebreakInstruction::TokenSellExactIn => token_sell_exact_in::TokenSellExactIn,
153            WavebreakInstruction::TokenSellExactOut => token_sell_exact_out::TokenSellExactOut,
154            WavebreakInstruction::TokenRefund => token_refund::TokenRefund,
155            WavebreakInstruction::ReservedTokenY => reserved_token_y::ReservedTokenY,
156            WavebreakInstruction::ReservedTokenZ => reserved_token_z::ReservedTokenZ,
157            WavebreakInstruction::ReservedTokenA => reserved_token_a::ReservedTokenA,
158            WavebreakInstruction::AuthorityConfigInitialize => authority_config_initialize::AuthorityConfigInitialize,
159            WavebreakInstruction::AuthorityConfigGrant => authority_config_grant::AuthorityConfigGrant,
160            WavebreakInstruction::AuthorityConfigRevoke => authority_config_revoke::AuthorityConfigRevoke,
161            WavebreakInstruction::ReservedAuthorityConfigY => reserved_authority_config_y::ReservedAuthorityConfigY,
162            WavebreakInstruction::ReservedAuthorityConfigZ => reserved_authority_config_z::ReservedAuthorityConfigZ,
163            WavebreakInstruction::ReservedAuthorityConfigA => reserved_authority_config_a::ReservedAuthorityConfigA,
164            WavebreakInstruction::ReservedAuthorityConfigB => reserved_authority_config_b::ReservedAuthorityConfigB,
165            WavebreakInstruction::ReservedAuthorityConfigC => reserved_authority_config_c::ReservedAuthorityConfigC,
166            WavebreakInstruction::MintConfigInitialize => mint_config_initialize::MintConfigInitialize,
167            WavebreakInstruction::MintConfigClose => mint_config_close::MintConfigClose,
168            WavebreakInstruction::MintConfigUpdate => mint_config_update::MintConfigUpdate,
169            WavebreakInstruction::ReservedMintConfigY => reserved_mint_config_y::ReservedMintConfigY,
170            WavebreakInstruction::ReservedMintConfigZ => reserved_mint_config_z::ReservedMintConfigZ,
171            WavebreakInstruction::ReservedMintConfigA => reserved_mint_config_a::ReservedMintConfigA,
172            WavebreakInstruction::ReservedMintConfigB => reserved_mint_config_b::ReservedMintConfigB,
173            WavebreakInstruction::ReservedMintConfigC => reserved_mint_config_c::ReservedMintConfigC,
174            WavebreakInstruction::GraduateWhirlpool => graduate_whirlpool::GraduateWhirlpool,
175            WavebreakInstruction::GraduateManual => graduate_manual::GraduateManual,
176            WavebreakInstruction::ReservedGraduateX => reserved_graduate_x::ReservedGraduateX,
177            WavebreakInstruction::ReservedGraduateY => reserved_graduate_y::ReservedGraduateY,
178            WavebreakInstruction::ReservedGraduateZ => reserved_graduate_z::ReservedGraduateZ,
179            WavebreakInstruction::ReservedGraduateA => reserved_graduate_a::ReservedGraduateA,
180            WavebreakInstruction::ReservedGraduateB => reserved_graduate_b::ReservedGraduateB,
181            WavebreakInstruction::ReservedGraduateC => reserved_graduate_c::ReservedGraduateC,
182            WavebreakInstruction::CreateLockedlaunch => create_lockedlaunch::CreateLockedlaunch,
183            WavebreakInstruction::CreateLaunch => create_launch::CreateLaunch,
184            WavebreakInstruction::CreatePresale => create_presale::CreatePresale,
185            WavebreakInstruction::ReservedCreateY => reserved_create_y::ReservedCreateY,
186            WavebreakInstruction::ReservedCreateZ => reserved_create_z::ReservedCreateZ,
187            WavebreakInstruction::ReservedCreateA => reserved_create_a::ReservedCreateA,
188            WavebreakInstruction::ReservedCreateB => reserved_create_b::ReservedCreateB,
189            WavebreakInstruction::ReservedCreateC => reserved_create_c::ReservedCreateC,
190            WavebreakInstruction::BondingCurveInitialize => bonding_curve_initialize::BondingCurveInitialize,
191            WavebreakInstruction::BondingCurveCollectFees => bonding_curve_collect_fees::BondingCurveCollectFees,
192            WavebreakInstruction::BondingCurveGraduate => bonding_curve_graduate::BondingCurveGraduate,
193            WavebreakInstruction::BondingCurveClose => bonding_curve_close::BondingCurveClose,
194            WavebreakInstruction::ReservedBondingCurveX => reserved_bonding_curve_x::ReservedBondingCurveX,
195            WavebreakInstruction::ReservedBondingCurveY => reserved_bonding_curve_y::ReservedBondingCurveY,
196            WavebreakInstruction::ReservedBondingCurveZ => reserved_bonding_curve_z::ReservedBondingCurveZ,
197            WavebreakInstruction::ReservedBondingCurveA => reserved_bonding_curve_a::ReservedBondingCurveA,
198        )
199    }
200}