carbon-meteora-vault-decoder 1.0.0

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