carbon-boop-decoder 1.0.0

Boop program decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
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,
        )
    }
}