use crate::{WavebreakDecoder, PROGRAM_ID};
#[cfg(feature = "postgres")]
pub mod postgres;
#[cfg(feature = "graphql")]
pub mod graphql;
pub mod authority_config_grant;
pub mod authority_config_initialize;
pub mod authority_config_revoke;
pub mod bonding_curve_close;
pub mod bonding_curve_collect_fees;
pub mod bonding_curve_graduate;
pub mod bonding_curve_initialize;
pub mod create_launch;
pub mod create_lockedlaunch;
pub mod create_presale;
pub mod graduate_manual;
pub mod graduate_whirlpool;
pub mod lp_harvest;
pub mod lp_takeover;
pub mod lp_transfer;
pub mod mint_config_close;
pub mod mint_config_initialize;
pub mod mint_config_update;
pub mod permission_config_close;
pub mod permission_config_initialize;
pub mod permission_config_update;
pub mod permission_consume_cpi;
pub mod permission_consume_top_level;
pub mod permission_refund;
pub mod permission_revoke;
pub mod reserved_authority_config_a;
pub mod reserved_authority_config_b;
pub mod reserved_authority_config_c;
pub mod reserved_authority_config_y;
pub mod reserved_authority_config_z;
pub mod reserved_bonding_curve_a;
pub mod reserved_bonding_curve_x;
pub mod reserved_bonding_curve_y;
pub mod reserved_bonding_curve_z;
pub mod reserved_create_a;
pub mod reserved_create_b;
pub mod reserved_create_c;
pub mod reserved_create_y;
pub mod reserved_create_z;
pub mod reserved_graduate_a;
pub mod reserved_graduate_b;
pub mod reserved_graduate_c;
pub mod reserved_graduate_x;
pub mod reserved_graduate_y;
pub mod reserved_graduate_z;
pub mod reserved_lp_a;
pub mod reserved_lp_b;
pub mod reserved_lp_x;
pub mod reserved_lp_y;
pub mod reserved_lp_z;
pub mod reserved_mint_config_a;
pub mod reserved_mint_config_b;
pub mod reserved_mint_config_c;
pub mod reserved_mint_config_y;
pub mod reserved_mint_config_z;
pub mod reserved_permission_a;
pub mod reserved_token_a;
pub mod reserved_token_y;
pub mod reserved_token_z;
pub mod token_buy_exact_in;
pub mod token_buy_exact_out;
pub mod token_refund;
pub mod token_sell_exact_in;
pub mod token_sell_exact_out;
pub use self::{
authority_config_grant::*, authority_config_initialize::*, authority_config_revoke::*,
bonding_curve_close::*, bonding_curve_collect_fees::*, bonding_curve_graduate::*,
bonding_curve_initialize::*, create_launch::*, create_lockedlaunch::*, create_presale::*,
graduate_manual::*, graduate_whirlpool::*, lp_harvest::*, lp_takeover::*, lp_transfer::*,
mint_config_close::*, mint_config_initialize::*, mint_config_update::*,
permission_config_close::*, permission_config_initialize::*, permission_config_update::*,
permission_consume_cpi::*, permission_consume_top_level::*, permission_refund::*,
permission_revoke::*, reserved_authority_config_a::*, reserved_authority_config_b::*,
reserved_authority_config_c::*, reserved_authority_config_y::*, reserved_authority_config_z::*,
reserved_bonding_curve_a::*, reserved_bonding_curve_x::*, reserved_bonding_curve_y::*,
reserved_bonding_curve_z::*, reserved_create_a::*, reserved_create_b::*, reserved_create_c::*,
reserved_create_y::*, reserved_create_z::*, reserved_graduate_a::*, reserved_graduate_b::*,
reserved_graduate_c::*, reserved_graduate_x::*, reserved_graduate_y::*, reserved_graduate_z::*,
reserved_lp_a::*, reserved_lp_b::*, reserved_lp_x::*, reserved_lp_y::*, reserved_lp_z::*,
reserved_mint_config_a::*, reserved_mint_config_b::*, reserved_mint_config_c::*,
reserved_mint_config_y::*, reserved_mint_config_z::*, reserved_permission_a::*,
reserved_token_a::*, reserved_token_y::*, reserved_token_z::*, token_buy_exact_in::*,
token_buy_exact_out::*, token_refund::*, token_sell_exact_in::*, token_sell_exact_out::*,
};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum WavebreakInstruction {
AuthorityConfigGrant {
program_id: solana_pubkey::Pubkey,
data: AuthorityConfigGrant,
accounts: AuthorityConfigGrantInstructionAccounts,
},
AuthorityConfigInitialize {
program_id: solana_pubkey::Pubkey,
data: AuthorityConfigInitialize,
accounts: AuthorityConfigInitializeInstructionAccounts,
},
AuthorityConfigRevoke {
program_id: solana_pubkey::Pubkey,
data: AuthorityConfigRevoke,
accounts: AuthorityConfigRevokeInstructionAccounts,
},
BondingCurveClose {
program_id: solana_pubkey::Pubkey,
data: BondingCurveClose,
accounts: BondingCurveCloseInstructionAccounts,
},
BondingCurveCollectFees {
program_id: solana_pubkey::Pubkey,
data: BondingCurveCollectFees,
accounts: BondingCurveCollectFeesInstructionAccounts,
},
BondingCurveGraduate {
program_id: solana_pubkey::Pubkey,
data: BondingCurveGraduate,
accounts: BondingCurveGraduateInstructionAccounts,
},
BondingCurveInitialize {
program_id: solana_pubkey::Pubkey,
data: BondingCurveInitialize,
accounts: BondingCurveInitializeInstructionAccounts,
},
CreateLaunch {
program_id: solana_pubkey::Pubkey,
data: CreateLaunch,
accounts: CreateLaunchInstructionAccounts,
},
CreateLockedlaunch {
program_id: solana_pubkey::Pubkey,
data: CreateLockedlaunch,
accounts: CreateLockedlaunchInstructionAccounts,
},
CreatePresale {
program_id: solana_pubkey::Pubkey,
data: CreatePresale,
accounts: CreatePresaleInstructionAccounts,
},
GraduateManual {
program_id: solana_pubkey::Pubkey,
data: GraduateManual,
accounts: GraduateManualInstructionAccounts,
},
GraduateWhirlpool {
program_id: solana_pubkey::Pubkey,
data: GraduateWhirlpool,
accounts: GraduateWhirlpoolInstructionAccounts,
},
LpHarvest {
program_id: solana_pubkey::Pubkey,
data: LpHarvest,
accounts: LpHarvestInstructionAccounts,
},
LpTakeover {
program_id: solana_pubkey::Pubkey,
data: LpTakeover,
accounts: LpTakeoverInstructionAccounts,
},
LpTransfer {
program_id: solana_pubkey::Pubkey,
data: LpTransfer,
accounts: LpTransferInstructionAccounts,
},
MintConfigClose {
program_id: solana_pubkey::Pubkey,
data: MintConfigClose,
accounts: MintConfigCloseInstructionAccounts,
},
MintConfigInitialize {
program_id: solana_pubkey::Pubkey,
data: MintConfigInitialize,
accounts: MintConfigInitializeInstructionAccounts,
},
MintConfigUpdate {
program_id: solana_pubkey::Pubkey,
data: MintConfigUpdate,
accounts: MintConfigUpdateInstructionAccounts,
},
PermissionConfigClose {
program_id: solana_pubkey::Pubkey,
data: PermissionConfigClose,
accounts: PermissionConfigCloseInstructionAccounts,
},
PermissionConfigInitialize {
program_id: solana_pubkey::Pubkey,
data: PermissionConfigInitialize,
accounts: PermissionConfigInitializeInstructionAccounts,
},
PermissionConfigUpdate {
program_id: solana_pubkey::Pubkey,
data: PermissionConfigUpdate,
accounts: PermissionConfigUpdateInstructionAccounts,
},
PermissionConsumeCpi {
program_id: solana_pubkey::Pubkey,
data: PermissionConsumeCpi,
accounts: PermissionConsumeCpiInstructionAccounts,
},
PermissionConsumeTopLevel {
program_id: solana_pubkey::Pubkey,
data: PermissionConsumeTopLevel,
accounts: PermissionConsumeTopLevelInstructionAccounts,
},
PermissionRefund {
program_id: solana_pubkey::Pubkey,
data: PermissionRefund,
accounts: PermissionRefundInstructionAccounts,
},
PermissionRevoke {
program_id: solana_pubkey::Pubkey,
data: PermissionRevoke,
accounts: PermissionRevokeInstructionAccounts,
},
ReservedAuthorityConfigA {
program_id: solana_pubkey::Pubkey,
data: ReservedAuthorityConfigA,
accounts: ReservedAuthorityConfigAInstructionAccounts,
},
ReservedAuthorityConfigB {
program_id: solana_pubkey::Pubkey,
data: ReservedAuthorityConfigB,
accounts: ReservedAuthorityConfigBInstructionAccounts,
},
ReservedAuthorityConfigC {
program_id: solana_pubkey::Pubkey,
data: ReservedAuthorityConfigC,
accounts: ReservedAuthorityConfigCInstructionAccounts,
},
ReservedAuthorityConfigY {
program_id: solana_pubkey::Pubkey,
data: ReservedAuthorityConfigY,
accounts: ReservedAuthorityConfigYInstructionAccounts,
},
ReservedAuthorityConfigZ {
program_id: solana_pubkey::Pubkey,
data: ReservedAuthorityConfigZ,
accounts: ReservedAuthorityConfigZInstructionAccounts,
},
ReservedBondingCurveA {
program_id: solana_pubkey::Pubkey,
data: ReservedBondingCurveA,
accounts: ReservedBondingCurveAInstructionAccounts,
},
ReservedBondingCurveX {
program_id: solana_pubkey::Pubkey,
data: ReservedBondingCurveX,
accounts: ReservedBondingCurveXInstructionAccounts,
},
ReservedBondingCurveY {
program_id: solana_pubkey::Pubkey,
data: ReservedBondingCurveY,
accounts: ReservedBondingCurveYInstructionAccounts,
},
ReservedBondingCurveZ {
program_id: solana_pubkey::Pubkey,
data: ReservedBondingCurveZ,
accounts: ReservedBondingCurveZInstructionAccounts,
},
ReservedCreateA {
program_id: solana_pubkey::Pubkey,
data: ReservedCreateA,
accounts: ReservedCreateAInstructionAccounts,
},
ReservedCreateB {
program_id: solana_pubkey::Pubkey,
data: ReservedCreateB,
accounts: ReservedCreateBInstructionAccounts,
},
ReservedCreateC {
program_id: solana_pubkey::Pubkey,
data: ReservedCreateC,
accounts: ReservedCreateCInstructionAccounts,
},
ReservedCreateY {
program_id: solana_pubkey::Pubkey,
data: ReservedCreateY,
accounts: ReservedCreateYInstructionAccounts,
},
ReservedCreateZ {
program_id: solana_pubkey::Pubkey,
data: ReservedCreateZ,
accounts: ReservedCreateZInstructionAccounts,
},
ReservedGraduateA {
program_id: solana_pubkey::Pubkey,
data: ReservedGraduateA,
accounts: ReservedGraduateAInstructionAccounts,
},
ReservedGraduateB {
program_id: solana_pubkey::Pubkey,
data: ReservedGraduateB,
accounts: ReservedGraduateBInstructionAccounts,
},
ReservedGraduateC {
program_id: solana_pubkey::Pubkey,
data: ReservedGraduateC,
accounts: ReservedGraduateCInstructionAccounts,
},
ReservedGraduateX {
program_id: solana_pubkey::Pubkey,
data: ReservedGraduateX,
accounts: ReservedGraduateXInstructionAccounts,
},
ReservedGraduateY {
program_id: solana_pubkey::Pubkey,
data: ReservedGraduateY,
accounts: ReservedGraduateYInstructionAccounts,
},
ReservedGraduateZ {
program_id: solana_pubkey::Pubkey,
data: ReservedGraduateZ,
accounts: ReservedGraduateZInstructionAccounts,
},
ReservedLpA {
program_id: solana_pubkey::Pubkey,
data: ReservedLpA,
accounts: ReservedLpAInstructionAccounts,
},
ReservedLpB {
program_id: solana_pubkey::Pubkey,
data: ReservedLpB,
accounts: ReservedLpBInstructionAccounts,
},
ReservedLpX {
program_id: solana_pubkey::Pubkey,
data: ReservedLpX,
accounts: ReservedLpXInstructionAccounts,
},
ReservedLpY {
program_id: solana_pubkey::Pubkey,
data: ReservedLpY,
accounts: ReservedLpYInstructionAccounts,
},
ReservedLpZ {
program_id: solana_pubkey::Pubkey,
data: ReservedLpZ,
accounts: ReservedLpZInstructionAccounts,
},
ReservedMintConfigA {
program_id: solana_pubkey::Pubkey,
data: ReservedMintConfigA,
accounts: ReservedMintConfigAInstructionAccounts,
},
ReservedMintConfigB {
program_id: solana_pubkey::Pubkey,
data: ReservedMintConfigB,
accounts: ReservedMintConfigBInstructionAccounts,
},
ReservedMintConfigC {
program_id: solana_pubkey::Pubkey,
data: ReservedMintConfigC,
accounts: ReservedMintConfigCInstructionAccounts,
},
ReservedMintConfigY {
program_id: solana_pubkey::Pubkey,
data: ReservedMintConfigY,
accounts: ReservedMintConfigYInstructionAccounts,
},
ReservedMintConfigZ {
program_id: solana_pubkey::Pubkey,
data: ReservedMintConfigZ,
accounts: ReservedMintConfigZInstructionAccounts,
},
ReservedPermissionA {
program_id: solana_pubkey::Pubkey,
data: ReservedPermissionA,
accounts: ReservedPermissionAInstructionAccounts,
},
ReservedTokenA {
program_id: solana_pubkey::Pubkey,
data: ReservedTokenA,
accounts: ReservedTokenAInstructionAccounts,
},
ReservedTokenY {
program_id: solana_pubkey::Pubkey,
data: ReservedTokenY,
accounts: ReservedTokenYInstructionAccounts,
},
ReservedTokenZ {
program_id: solana_pubkey::Pubkey,
data: ReservedTokenZ,
accounts: ReservedTokenZInstructionAccounts,
},
TokenBuyExactIn {
program_id: solana_pubkey::Pubkey,
data: TokenBuyExactIn,
accounts: TokenBuyExactInInstructionAccounts,
},
TokenBuyExactOut {
program_id: solana_pubkey::Pubkey,
data: TokenBuyExactOut,
accounts: TokenBuyExactOutInstructionAccounts,
},
TokenRefund {
program_id: solana_pubkey::Pubkey,
data: TokenRefund,
accounts: TokenRefundInstructionAccounts,
},
TokenSellExactIn {
program_id: solana_pubkey::Pubkey,
data: TokenSellExactIn,
accounts: TokenSellExactInInstructionAccounts,
},
TokenSellExactOut {
program_id: solana_pubkey::Pubkey,
data: TokenSellExactOut,
accounts: TokenSellExactOutInstructionAccounts,
},
}
impl carbon_core::instruction::InstructionDecoder<'_> for WavebreakDecoder {
type InstructionType = WavebreakInstruction;
fn decode_instruction(
&self,
instruction: &solana_instruction::Instruction,
) -> Option<Self::InstructionType> {
if instruction.program_id != PROGRAM_ID {
return None;
}
carbon_core::try_decode_instructions!(
instruction,
PROGRAM_ID,
WavebreakInstruction::AuthorityConfigGrant => AuthorityConfigGrant,
WavebreakInstruction::AuthorityConfigInitialize => AuthorityConfigInitialize,
WavebreakInstruction::AuthorityConfigRevoke => AuthorityConfigRevoke,
WavebreakInstruction::BondingCurveClose => BondingCurveClose,
WavebreakInstruction::BondingCurveCollectFees => BondingCurveCollectFees,
WavebreakInstruction::BondingCurveGraduate => BondingCurveGraduate,
WavebreakInstruction::BondingCurveInitialize => BondingCurveInitialize,
WavebreakInstruction::CreateLaunch => CreateLaunch,
WavebreakInstruction::CreateLockedlaunch => CreateLockedlaunch,
WavebreakInstruction::CreatePresale => CreatePresale,
WavebreakInstruction::GraduateManual => GraduateManual,
WavebreakInstruction::GraduateWhirlpool => GraduateWhirlpool,
WavebreakInstruction::LpHarvest => LpHarvest,
WavebreakInstruction::LpTakeover => LpTakeover,
WavebreakInstruction::LpTransfer => LpTransfer,
WavebreakInstruction::MintConfigClose => MintConfigClose,
WavebreakInstruction::MintConfigInitialize => MintConfigInitialize,
WavebreakInstruction::MintConfigUpdate => MintConfigUpdate,
WavebreakInstruction::PermissionConfigClose => PermissionConfigClose,
WavebreakInstruction::PermissionConfigInitialize => PermissionConfigInitialize,
WavebreakInstruction::PermissionConfigUpdate => PermissionConfigUpdate,
WavebreakInstruction::PermissionConsumeCpi => PermissionConsumeCpi,
WavebreakInstruction::PermissionConsumeTopLevel => PermissionConsumeTopLevel,
WavebreakInstruction::PermissionRefund => PermissionRefund,
WavebreakInstruction::PermissionRevoke => PermissionRevoke,
WavebreakInstruction::ReservedAuthorityConfigA => ReservedAuthorityConfigA,
WavebreakInstruction::ReservedAuthorityConfigB => ReservedAuthorityConfigB,
WavebreakInstruction::ReservedAuthorityConfigC => ReservedAuthorityConfigC,
WavebreakInstruction::ReservedAuthorityConfigY => ReservedAuthorityConfigY,
WavebreakInstruction::ReservedAuthorityConfigZ => ReservedAuthorityConfigZ,
WavebreakInstruction::ReservedBondingCurveA => ReservedBondingCurveA,
WavebreakInstruction::ReservedBondingCurveX => ReservedBondingCurveX,
WavebreakInstruction::ReservedBondingCurveY => ReservedBondingCurveY,
WavebreakInstruction::ReservedBondingCurveZ => ReservedBondingCurveZ,
WavebreakInstruction::ReservedCreateA => ReservedCreateA,
WavebreakInstruction::ReservedCreateB => ReservedCreateB,
WavebreakInstruction::ReservedCreateC => ReservedCreateC,
WavebreakInstruction::ReservedCreateY => ReservedCreateY,
WavebreakInstruction::ReservedCreateZ => ReservedCreateZ,
WavebreakInstruction::ReservedGraduateA => ReservedGraduateA,
WavebreakInstruction::ReservedGraduateB => ReservedGraduateB,
WavebreakInstruction::ReservedGraduateC => ReservedGraduateC,
WavebreakInstruction::ReservedGraduateX => ReservedGraduateX,
WavebreakInstruction::ReservedGraduateY => ReservedGraduateY,
WavebreakInstruction::ReservedGraduateZ => ReservedGraduateZ,
WavebreakInstruction::ReservedLpA => ReservedLpA,
WavebreakInstruction::ReservedLpB => ReservedLpB,
WavebreakInstruction::ReservedLpX => ReservedLpX,
WavebreakInstruction::ReservedLpY => ReservedLpY,
WavebreakInstruction::ReservedLpZ => ReservedLpZ,
WavebreakInstruction::ReservedMintConfigA => ReservedMintConfigA,
WavebreakInstruction::ReservedMintConfigB => ReservedMintConfigB,
WavebreakInstruction::ReservedMintConfigC => ReservedMintConfigC,
WavebreakInstruction::ReservedMintConfigY => ReservedMintConfigY,
WavebreakInstruction::ReservedMintConfigZ => ReservedMintConfigZ,
WavebreakInstruction::ReservedPermissionA => ReservedPermissionA,
WavebreakInstruction::ReservedTokenA => ReservedTokenA,
WavebreakInstruction::ReservedTokenY => ReservedTokenY,
WavebreakInstruction::ReservedTokenZ => ReservedTokenZ,
WavebreakInstruction::TokenBuyExactIn => TokenBuyExactIn,
WavebreakInstruction::TokenBuyExactOut => TokenBuyExactOut,
WavebreakInstruction::TokenRefund => TokenRefund,
WavebreakInstruction::TokenSellExactIn => TokenSellExactIn,
WavebreakInstruction::TokenSellExactOut => TokenSellExactOut,
)
}
}