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,
)
}
}