use crate::{MeteoraVaultDecoder, PROGRAM_ID};
#[cfg(feature = "postgres")]
pub mod postgres;
#[cfg(feature = "graphql")]
pub mod graphql;
pub mod add_strategy;
pub mod collect_dust;
pub mod cpi_event;
pub mod deposit;
pub mod deposit_strategy;
pub mod enable_vault;
pub mod initialize;
pub mod initialize_strategy;
pub mod remove_strategy;
pub mod remove_strategy2;
pub mod set_operator;
pub mod withdraw;
pub mod withdraw2;
pub mod withdraw_directly_from_strategy;
pub mod withdraw_strategy;
pub use self::{
add_strategy::*, collect_dust::*, cpi_event::*, deposit::*, deposit_strategy::*,
enable_vault::*, initialize::*, initialize_strategy::*, remove_strategy::*,
remove_strategy2::*, set_operator::*, withdraw::*, withdraw2::*,
withdraw_directly_from_strategy::*, withdraw_strategy::*,
};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum MeteoraVaultInstruction {
AddStrategy {
program_id: solana_pubkey::Pubkey,
data: AddStrategy,
accounts: AddStrategyInstructionAccounts,
},
CollectDust {
program_id: solana_pubkey::Pubkey,
data: CollectDust,
accounts: CollectDustInstructionAccounts,
},
Deposit {
program_id: solana_pubkey::Pubkey,
data: Deposit,
accounts: DepositInstructionAccounts,
},
DepositStrategy {
program_id: solana_pubkey::Pubkey,
data: DepositStrategy,
accounts: DepositStrategyInstructionAccounts,
},
EnableVault {
program_id: solana_pubkey::Pubkey,
data: EnableVault,
accounts: EnableVaultInstructionAccounts,
},
Initialize {
program_id: solana_pubkey::Pubkey,
data: Initialize,
accounts: InitializeInstructionAccounts,
},
InitializeStrategy {
program_id: solana_pubkey::Pubkey,
data: InitializeStrategy,
accounts: InitializeStrategyInstructionAccounts,
},
RemoveStrategy {
program_id: solana_pubkey::Pubkey,
data: RemoveStrategy,
accounts: RemoveStrategyInstructionAccounts,
},
RemoveStrategy2 {
program_id: solana_pubkey::Pubkey,
data: RemoveStrategy2,
accounts: RemoveStrategy2InstructionAccounts,
},
SetOperator {
program_id: solana_pubkey::Pubkey,
data: SetOperator,
accounts: SetOperatorInstructionAccounts,
},
Withdraw {
program_id: solana_pubkey::Pubkey,
data: Withdraw,
accounts: WithdrawInstructionAccounts,
},
Withdraw2 {
program_id: solana_pubkey::Pubkey,
data: Withdraw2,
accounts: Withdraw2InstructionAccounts,
},
WithdrawDirectlyFromStrategy {
program_id: solana_pubkey::Pubkey,
data: WithdrawDirectlyFromStrategy,
accounts: WithdrawDirectlyFromStrategyInstructionAccounts,
},
WithdrawStrategy {
program_id: solana_pubkey::Pubkey,
data: WithdrawStrategy,
accounts: WithdrawStrategyInstructionAccounts,
},
CpiEvent {
program_id: solana_pubkey::Pubkey,
data: CpiEvent,
accounts: CpiEventInstructionAccounts,
},
}
impl carbon_core::instruction::InstructionDecoder<'_> for MeteoraVaultDecoder {
type InstructionType = MeteoraVaultInstruction;
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,
MeteoraVaultInstruction::AddStrategy => AddStrategy,
MeteoraVaultInstruction::CollectDust => CollectDust,
MeteoraVaultInstruction::Deposit => Deposit,
MeteoraVaultInstruction::DepositStrategy => DepositStrategy,
MeteoraVaultInstruction::EnableVault => EnableVault,
MeteoraVaultInstruction::Initialize => Initialize,
MeteoraVaultInstruction::InitializeStrategy => InitializeStrategy,
MeteoraVaultInstruction::RemoveStrategy => RemoveStrategy,
MeteoraVaultInstruction::RemoveStrategy2 => RemoveStrategy2,
MeteoraVaultInstruction::SetOperator => SetOperator,
MeteoraVaultInstruction::Withdraw => Withdraw,
MeteoraVaultInstruction::Withdraw2 => Withdraw2,
MeteoraVaultInstruction::WithdrawDirectlyFromStrategy => WithdrawDirectlyFromStrategy,
MeteoraVaultInstruction::WithdrawStrategy => WithdrawStrategy,
MeteoraVaultInstruction::CpiEvent => CpiEvent,
)
}
}