use crate::{BoopDecoder, PROGRAM_ID};
#[cfg(feature = "postgres")]
pub mod postgres;
#[cfg(feature = "graphql")]
pub mod graphql;
pub mod add_operators;
pub mod buy_token;
pub mod cancel_authority_transfer;
pub mod close_bonding_curve_vault;
pub mod collect_meteora_trading_fees;
pub mod collect_meteora_trading_fees_v2;
pub mod collect_trading_fees;
pub mod collect_trading_fees_v2;
pub mod complete_authority_transfer;
pub mod cpi_event;
pub mod create_meteora_pool;
pub mod create_raydium_pool;
pub mod create_raydium_random_pool;
pub mod create_token;
pub mod create_token_fallback;
pub mod deploy_bonding_curve;
pub mod deploy_bonding_curve_fallback;
pub mod deposit_into_raydium;
pub mod graduate;
pub mod initialize;
pub mod initiate_authority_transfer;
pub mod lock_raydium_liquidity;
pub mod remove_operators;
pub mod sell_token;
pub mod split_post_graduation_trading_fees;
pub mod split_trading_fees;
pub mod swap_sol_for_tokens_on_raydium;
pub mod swap_tokens_for_sol_on_raydium;
pub mod toggle_paused;
pub mod update_config;
pub use self::{
add_operators::*, buy_token::*, cancel_authority_transfer::*, close_bonding_curve_vault::*,
collect_meteora_trading_fees::*, collect_meteora_trading_fees_v2::*, collect_trading_fees::*,
collect_trading_fees_v2::*, complete_authority_transfer::*, cpi_event::*,
create_meteora_pool::*, create_raydium_pool::*, create_raydium_random_pool::*, create_token::*,
create_token_fallback::*, deploy_bonding_curve::*, deploy_bonding_curve_fallback::*,
deposit_into_raydium::*, graduate::*, initialize::*, initiate_authority_transfer::*,
lock_raydium_liquidity::*, remove_operators::*, sell_token::*,
split_post_graduation_trading_fees::*, split_trading_fees::*,
swap_sol_for_tokens_on_raydium::*, swap_tokens_for_sol_on_raydium::*, toggle_paused::*,
update_config::*,
};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum BoopInstruction {
AddOperators {
program_id: solana_pubkey::Pubkey,
data: AddOperators,
accounts: AddOperatorsInstructionAccounts,
},
BuyToken {
program_id: solana_pubkey::Pubkey,
data: BuyToken,
accounts: BuyTokenInstructionAccounts,
},
CancelAuthorityTransfer {
program_id: solana_pubkey::Pubkey,
data: CancelAuthorityTransfer,
accounts: CancelAuthorityTransferInstructionAccounts,
},
CloseBondingCurveVault {
program_id: solana_pubkey::Pubkey,
data: CloseBondingCurveVault,
accounts: CloseBondingCurveVaultInstructionAccounts,
},
CollectMeteoraTradingFees {
program_id: solana_pubkey::Pubkey,
data: CollectMeteoraTradingFees,
accounts: CollectMeteoraTradingFeesInstructionAccounts,
},
CollectMeteoraTradingFeesV2 {
program_id: solana_pubkey::Pubkey,
data: CollectMeteoraTradingFeesV2,
accounts: CollectMeteoraTradingFeesV2InstructionAccounts,
},
CollectTradingFees {
program_id: solana_pubkey::Pubkey,
data: CollectTradingFees,
accounts: CollectTradingFeesInstructionAccounts,
},
CollectTradingFeesV2 {
program_id: solana_pubkey::Pubkey,
data: CollectTradingFeesV2,
accounts: CollectTradingFeesV2InstructionAccounts,
},
CompleteAuthorityTransfer {
program_id: solana_pubkey::Pubkey,
data: CompleteAuthorityTransfer,
accounts: CompleteAuthorityTransferInstructionAccounts,
},
CreateMeteoraPool {
program_id: solana_pubkey::Pubkey,
data: CreateMeteoraPool,
accounts: CreateMeteoraPoolInstructionAccounts,
},
CreateRaydiumPool {
program_id: solana_pubkey::Pubkey,
data: CreateRaydiumPool,
accounts: CreateRaydiumPoolInstructionAccounts,
},
CreateRaydiumRandomPool {
program_id: solana_pubkey::Pubkey,
data: CreateRaydiumRandomPool,
accounts: CreateRaydiumRandomPoolInstructionAccounts,
},
CreateToken {
program_id: solana_pubkey::Pubkey,
data: CreateToken,
accounts: CreateTokenInstructionAccounts,
},
CreateTokenFallback {
program_id: solana_pubkey::Pubkey,
data: CreateTokenFallback,
accounts: CreateTokenFallbackInstructionAccounts,
},
DeployBondingCurve {
program_id: solana_pubkey::Pubkey,
data: DeployBondingCurve,
accounts: DeployBondingCurveInstructionAccounts,
},
DeployBondingCurveFallback {
program_id: solana_pubkey::Pubkey,
data: DeployBondingCurveFallback,
accounts: DeployBondingCurveFallbackInstructionAccounts,
},
DepositIntoRaydium {
program_id: solana_pubkey::Pubkey,
data: DepositIntoRaydium,
accounts: DepositIntoRaydiumInstructionAccounts,
},
Graduate {
program_id: solana_pubkey::Pubkey,
data: Graduate,
accounts: GraduateInstructionAccounts,
},
Initialize {
program_id: solana_pubkey::Pubkey,
data: Initialize,
accounts: InitializeInstructionAccounts,
},
InitiateAuthorityTransfer {
program_id: solana_pubkey::Pubkey,
data: InitiateAuthorityTransfer,
accounts: InitiateAuthorityTransferInstructionAccounts,
},
LockRaydiumLiquidity {
program_id: solana_pubkey::Pubkey,
data: LockRaydiumLiquidity,
accounts: LockRaydiumLiquidityInstructionAccounts,
},
RemoveOperators {
program_id: solana_pubkey::Pubkey,
data: RemoveOperators,
accounts: RemoveOperatorsInstructionAccounts,
},
SellToken {
program_id: solana_pubkey::Pubkey,
data: SellToken,
accounts: SellTokenInstructionAccounts,
},
SplitPostGraduationTradingFees {
program_id: solana_pubkey::Pubkey,
data: SplitPostGraduationTradingFees,
accounts: SplitPostGraduationTradingFeesInstructionAccounts,
},
SplitTradingFees {
program_id: solana_pubkey::Pubkey,
data: SplitTradingFees,
accounts: SplitTradingFeesInstructionAccounts,
},
SwapSolForTokensOnRaydium {
program_id: solana_pubkey::Pubkey,
data: SwapSolForTokensOnRaydium,
accounts: SwapSolForTokensOnRaydiumInstructionAccounts,
},
SwapTokensForSolOnRaydium {
program_id: solana_pubkey::Pubkey,
data: SwapTokensForSolOnRaydium,
accounts: SwapTokensForSolOnRaydiumInstructionAccounts,
},
TogglePaused {
program_id: solana_pubkey::Pubkey,
data: TogglePaused,
accounts: TogglePausedInstructionAccounts,
},
UpdateConfig {
program_id: solana_pubkey::Pubkey,
data: UpdateConfig,
accounts: UpdateConfigInstructionAccounts,
},
CpiEvent {
program_id: solana_pubkey::Pubkey,
data: CpiEvent,
accounts: CpiEventInstructionAccounts,
},
}
impl carbon_core::instruction::InstructionDecoder<'_> for BoopDecoder {
type InstructionType = BoopInstruction;
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,
BoopInstruction::AddOperators => AddOperators,
BoopInstruction::BuyToken => BuyToken,
BoopInstruction::CancelAuthorityTransfer => CancelAuthorityTransfer,
BoopInstruction::CloseBondingCurveVault => CloseBondingCurveVault,
BoopInstruction::CollectMeteoraTradingFees => CollectMeteoraTradingFees,
BoopInstruction::CollectMeteoraTradingFeesV2 => CollectMeteoraTradingFeesV2,
BoopInstruction::CollectTradingFees => CollectTradingFees,
BoopInstruction::CollectTradingFeesV2 => CollectTradingFeesV2,
BoopInstruction::CompleteAuthorityTransfer => CompleteAuthorityTransfer,
BoopInstruction::CreateMeteoraPool => CreateMeteoraPool,
BoopInstruction::CreateRaydiumPool => CreateRaydiumPool,
BoopInstruction::CreateRaydiumRandomPool => CreateRaydiumRandomPool,
BoopInstruction::CreateToken => CreateToken,
BoopInstruction::CreateTokenFallback => CreateTokenFallback,
BoopInstruction::DeployBondingCurve => DeployBondingCurve,
BoopInstruction::DeployBondingCurveFallback => DeployBondingCurveFallback,
BoopInstruction::DepositIntoRaydium => DepositIntoRaydium,
BoopInstruction::Graduate => Graduate,
BoopInstruction::Initialize => Initialize,
BoopInstruction::InitiateAuthorityTransfer => InitiateAuthorityTransfer,
BoopInstruction::LockRaydiumLiquidity => LockRaydiumLiquidity,
BoopInstruction::RemoveOperators => RemoveOperators,
BoopInstruction::SellToken => SellToken,
BoopInstruction::SplitPostGraduationTradingFees => SplitPostGraduationTradingFees,
BoopInstruction::SplitTradingFees => SplitTradingFees,
BoopInstruction::SwapSolForTokensOnRaydium => SwapSolForTokensOnRaydium,
BoopInstruction::SwapTokensForSolOnRaydium => SwapTokensForSolOnRaydium,
BoopInstruction::TogglePaused => TogglePaused,
BoopInstruction::UpdateConfig => UpdateConfig,
BoopInstruction::CpiEvent => CpiEvent,
)
}
}