carbon-bonkswap-decoder 2.0.0

Carbon BonkSwap Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use crate::{BonkswapDecoder, PROGRAM_ID};

#[cfg(feature = "postgres")]
pub mod postgres;

#[cfg(feature = "graphql")]
pub mod graphql;

pub mod add_supply;
pub mod add_tokens;
pub mod close_pool;
pub mod create_dual_farm;
pub mod create_farm;
pub mod create_pool;
pub mod create_provider;
pub mod create_state;
pub mod create_triple_farm;
pub mod reset_farm;
pub mod swap;
pub mod update_fees;
pub mod update_reward_tokens;
pub mod withdraw_buyback;
pub mod withdraw_lp_fee;
pub mod withdraw_mercanti_fee;
pub mod withdraw_project_fee;
pub mod withdraw_rewards;
pub mod withdraw_shares;

pub use self::{
    add_supply::*, add_tokens::*, close_pool::*, create_dual_farm::*, create_farm::*,
    create_pool::*, create_provider::*, create_state::*, create_triple_farm::*, reset_farm::*,
    swap::*, update_fees::*, update_reward_tokens::*, withdraw_buyback::*, withdraw_lp_fee::*,
    withdraw_mercanti_fee::*, withdraw_project_fee::*, withdraw_rewards::*, withdraw_shares::*,
};

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum BonkswapInstruction {
    AddSupply {
        program_id: solana_pubkey::Pubkey,
        data: AddSupply,
        accounts: AddSupplyInstructionAccounts,
    },
    AddTokens {
        program_id: solana_pubkey::Pubkey,
        data: AddTokens,
        accounts: AddTokensInstructionAccounts,
    },
    ClosePool {
        program_id: solana_pubkey::Pubkey,
        data: ClosePool,
        accounts: ClosePoolInstructionAccounts,
    },
    CreateDualFarm {
        program_id: solana_pubkey::Pubkey,
        data: CreateDualFarm,
        accounts: CreateDualFarmInstructionAccounts,
    },
    CreateFarm {
        program_id: solana_pubkey::Pubkey,
        data: CreateFarm,
        accounts: CreateFarmInstructionAccounts,
    },
    CreatePool {
        program_id: solana_pubkey::Pubkey,
        data: CreatePool,
        accounts: CreatePoolInstructionAccounts,
    },
    CreateProvider {
        program_id: solana_pubkey::Pubkey,
        data: CreateProvider,
        accounts: CreateProviderInstructionAccounts,
    },
    CreateState {
        program_id: solana_pubkey::Pubkey,
        data: CreateState,
        accounts: CreateStateInstructionAccounts,
    },
    CreateTripleFarm {
        program_id: solana_pubkey::Pubkey,
        data: CreateTripleFarm,
        accounts: CreateTripleFarmInstructionAccounts,
    },
    ResetFarm {
        program_id: solana_pubkey::Pubkey,
        data: ResetFarm,
        accounts: ResetFarmInstructionAccounts,
    },
    Swap {
        program_id: solana_pubkey::Pubkey,
        data: Swap,
        accounts: SwapInstructionAccounts,
    },
    UpdateFees {
        program_id: solana_pubkey::Pubkey,
        data: UpdateFees,
        accounts: UpdateFeesInstructionAccounts,
    },
    UpdateRewardTokens {
        program_id: solana_pubkey::Pubkey,
        data: UpdateRewardTokens,
        accounts: UpdateRewardTokensInstructionAccounts,
    },
    WithdrawBuyback {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawBuyback,
        accounts: WithdrawBuybackInstructionAccounts,
    },
    WithdrawLpFee {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawLpFee,
        accounts: WithdrawLpFeeInstructionAccounts,
    },
    WithdrawMercantiFee {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawMercantiFee,
        accounts: WithdrawMercantiFeeInstructionAccounts,
    },
    WithdrawProjectFee {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawProjectFee,
        accounts: WithdrawProjectFeeInstructionAccounts,
    },
    WithdrawRewards {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawRewards,
        accounts: WithdrawRewardsInstructionAccounts,
    },
    WithdrawShares {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawShares,
        accounts: WithdrawSharesInstructionAccounts,
    },
}

impl carbon_core::instruction::InstructionDecoder<'_> for BonkswapDecoder {
    type InstructionType = BonkswapInstruction;

    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,
            BonkswapInstruction::AddSupply => AddSupply,
            BonkswapInstruction::AddTokens => AddTokens,
            BonkswapInstruction::ClosePool => ClosePool,
            BonkswapInstruction::CreateDualFarm => CreateDualFarm,
            BonkswapInstruction::CreateFarm => CreateFarm,
            BonkswapInstruction::CreatePool => CreatePool,
            BonkswapInstruction::CreateProvider => CreateProvider,
            BonkswapInstruction::CreateState => CreateState,
            BonkswapInstruction::CreateTripleFarm => CreateTripleFarm,
            BonkswapInstruction::ResetFarm => ResetFarm,
            BonkswapInstruction::Swap => Swap,
            BonkswapInstruction::UpdateFees => UpdateFees,
            BonkswapInstruction::UpdateRewardTokens => UpdateRewardTokens,
            BonkswapInstruction::WithdrawBuyback => WithdrawBuyback,
            BonkswapInstruction::WithdrawLpFee => WithdrawLpFee,
            BonkswapInstruction::WithdrawMercantiFee => WithdrawMercantiFee,
            BonkswapInstruction::WithdrawProjectFee => WithdrawProjectFee,
            BonkswapInstruction::WithdrawRewards => WithdrawRewards,
            BonkswapInstruction::WithdrawShares => WithdrawShares,
        )
    }
}