carbon-virtual-curve-decoder 0.9.1

Meteora Virtual Curve Program Decoder
Documentation
use crate::PROGRAM_ID;

use super::VirtualCurveDecoder;
pub mod claim_protocol_fee;
pub mod claim_trading_fee;
pub mod close_claim_fee_operator;
pub mod create_claim_fee_operator;
pub mod create_config;
pub mod create_locker;
pub mod create_partner_metadata;
pub mod create_virtual_pool_metadata;
pub mod evt_claim_protocol_fee_event;
pub mod evt_claim_trading_fee_event;
pub mod evt_close_claim_fee_operator_event;
pub mod evt_create_claim_fee_operator_event;
pub mod evt_create_config_event;
pub mod evt_create_damm_v2_migration_metadata_event;
pub mod evt_create_meteora_migration_metadata_event;
pub mod evt_curve_complete_event;
pub mod evt_initialize_pool_event;
pub mod evt_partner_metadata_event;
pub mod evt_partner_withdraw_surplus_event;
pub mod evt_protocol_withdraw_surplus_event;
pub mod evt_swap_event;
pub mod evt_virtual_pool_metadata_event;
pub mod initialize_virtual_pool_with_spl_token;
pub mod initialize_virtual_pool_with_token2022;
pub mod migrate_meteora_damm;
pub mod migrate_meteora_damm_claim_lp_token;
pub mod migrate_meteora_damm_lock_lp_token;
pub mod migration_damm_v2;
pub mod migration_damm_v2_create_metadata;
pub mod migration_meteora_damm_create_metadata;
pub mod partner_withdraw_surplus;
pub mod protocol_withdraw_surplus;
pub mod swap;

#[derive(
    carbon_core::InstructionType,
    serde::Serialize,
    serde::Deserialize,
    PartialEq,
    Eq,
    Debug,
    Clone,
    Hash,
)]
pub enum VirtualCurveInstruction {
    ClaimProtocolFee(claim_protocol_fee::ClaimProtocolFee),
    ClaimTradingFee(claim_trading_fee::ClaimTradingFee),
    CloseClaimFeeOperator(close_claim_fee_operator::CloseClaimFeeOperator),
    CreateClaimFeeOperator(create_claim_fee_operator::CreateClaimFeeOperator),
    CreateConfig(create_config::CreateConfig),
    CreateLocker(create_locker::CreateLocker),
    CreatePartnerMetadata(create_partner_metadata::CreatePartnerMetadata),
    CreateVirtualPoolMetadata(create_virtual_pool_metadata::CreateVirtualPoolMetadata),
    InitializeVirtualPoolWithSplToken(
        initialize_virtual_pool_with_spl_token::InitializeVirtualPoolWithSplToken,
    ),
    InitializeVirtualPoolWithToken2022(
        initialize_virtual_pool_with_token2022::InitializeVirtualPoolWithToken2022,
    ),
    MigrateMeteoraDamm(migrate_meteora_damm::MigrateMeteoraDamm),
    MigrateMeteoraDammClaimLpToken(
        migrate_meteora_damm_claim_lp_token::MigrateMeteoraDammClaimLpToken,
    ),
    MigrateMeteoraDammLockLpToken(
        migrate_meteora_damm_lock_lp_token::MigrateMeteoraDammLockLpToken,
    ),
    MigrationDammV2(migration_damm_v2::MigrationDammV2),
    MigrationDammV2CreateMetadata(migration_damm_v2_create_metadata::MigrationDammV2CreateMetadata),
    MigrationMeteoraDammCreateMetadata(
        migration_meteora_damm_create_metadata::MigrationMeteoraDammCreateMetadata,
    ),
    PartnerWithdrawSurplus(partner_withdraw_surplus::PartnerWithdrawSurplus),
    ProtocolWithdrawSurplus(protocol_withdraw_surplus::ProtocolWithdrawSurplus),
    Swap(swap::Swap),
    EvtClaimProtocolFeeEvent(evt_claim_protocol_fee_event::EvtClaimProtocolFeeEvent),
    EvtClaimTradingFeeEvent(evt_claim_trading_fee_event::EvtClaimTradingFeeEvent),
    EvtCloseClaimFeeOperatorEvent(
        evt_close_claim_fee_operator_event::EvtCloseClaimFeeOperatorEvent,
    ),
    EvtCreateClaimFeeOperatorEvent(
        evt_create_claim_fee_operator_event::EvtCreateClaimFeeOperatorEvent,
    ),
    EvtCreateConfigEvent(evt_create_config_event::EvtCreateConfigEvent),
    EvtCreateDammV2MigrationMetadataEvent(
        evt_create_damm_v2_migration_metadata_event::EvtCreateDammV2MigrationMetadataEvent,
    ),
    EvtCreateMeteoraMigrationMetadataEvent(
        evt_create_meteora_migration_metadata_event::EvtCreateMeteoraMigrationMetadataEvent,
    ),
    EvtCurveCompleteEvent(evt_curve_complete_event::EvtCurveCompleteEvent),
    EvtInitializePoolEvent(evt_initialize_pool_event::EvtInitializePoolEvent),
    EvtPartnerMetadataEvent(evt_partner_metadata_event::EvtPartnerMetadataEvent),
    EvtPartnerWithdrawSurplusEvent(
        evt_partner_withdraw_surplus_event::EvtPartnerWithdrawSurplusEvent,
    ),
    EvtProtocolWithdrawSurplusEvent(
        evt_protocol_withdraw_surplus_event::EvtProtocolWithdrawSurplusEvent,
    ),
    EvtSwapEvent(evt_swap_event::EvtSwapEvent),
    EvtVirtualPoolMetadataEvent(evt_virtual_pool_metadata_event::EvtVirtualPoolMetadataEvent),
}

impl carbon_core::instruction::InstructionDecoder<'_> for VirtualCurveDecoder {
    type InstructionType = VirtualCurveInstruction;

    fn decode_instruction(
        &self,
        instruction: &solana_instruction::Instruction,
    ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
        if !instruction.program_id.eq(&PROGRAM_ID) {
            return None;
        }
        carbon_core::try_decode_instructions!(instruction,
            VirtualCurveInstruction::ClaimProtocolFee => claim_protocol_fee::ClaimProtocolFee,
            VirtualCurveInstruction::ClaimTradingFee => claim_trading_fee::ClaimTradingFee,
            VirtualCurveInstruction::CloseClaimFeeOperator => close_claim_fee_operator::CloseClaimFeeOperator,
            VirtualCurveInstruction::CreateClaimFeeOperator => create_claim_fee_operator::CreateClaimFeeOperator,
            VirtualCurveInstruction::CreateConfig => create_config::CreateConfig,
            VirtualCurveInstruction::CreateLocker => create_locker::CreateLocker,
            VirtualCurveInstruction::CreatePartnerMetadata => create_partner_metadata::CreatePartnerMetadata,
            VirtualCurveInstruction::CreateVirtualPoolMetadata => create_virtual_pool_metadata::CreateVirtualPoolMetadata,
            VirtualCurveInstruction::InitializeVirtualPoolWithSplToken => initialize_virtual_pool_with_spl_token::InitializeVirtualPoolWithSplToken,
            VirtualCurveInstruction::InitializeVirtualPoolWithToken2022 => initialize_virtual_pool_with_token2022::InitializeVirtualPoolWithToken2022,
            VirtualCurveInstruction::MigrateMeteoraDamm => migrate_meteora_damm::MigrateMeteoraDamm,
            VirtualCurveInstruction::MigrateMeteoraDammClaimLpToken => migrate_meteora_damm_claim_lp_token::MigrateMeteoraDammClaimLpToken,
            VirtualCurveInstruction::MigrateMeteoraDammLockLpToken => migrate_meteora_damm_lock_lp_token::MigrateMeteoraDammLockLpToken,
            VirtualCurveInstruction::MigrationDammV2 => migration_damm_v2::MigrationDammV2,
            VirtualCurveInstruction::MigrationDammV2CreateMetadata => migration_damm_v2_create_metadata::MigrationDammV2CreateMetadata,
            VirtualCurveInstruction::MigrationMeteoraDammCreateMetadata => migration_meteora_damm_create_metadata::MigrationMeteoraDammCreateMetadata,
            VirtualCurveInstruction::PartnerWithdrawSurplus => partner_withdraw_surplus::PartnerWithdrawSurplus,
            VirtualCurveInstruction::ProtocolWithdrawSurplus => protocol_withdraw_surplus::ProtocolWithdrawSurplus,
            VirtualCurveInstruction::Swap => swap::Swap,
            VirtualCurveInstruction::EvtClaimProtocolFeeEvent => evt_claim_protocol_fee_event::EvtClaimProtocolFeeEvent,
            VirtualCurveInstruction::EvtClaimTradingFeeEvent => evt_claim_trading_fee_event::EvtClaimTradingFeeEvent,
            VirtualCurveInstruction::EvtCloseClaimFeeOperatorEvent => evt_close_claim_fee_operator_event::EvtCloseClaimFeeOperatorEvent,
            VirtualCurveInstruction::EvtCreateClaimFeeOperatorEvent => evt_create_claim_fee_operator_event::EvtCreateClaimFeeOperatorEvent,
            VirtualCurveInstruction::EvtCreateConfigEvent => evt_create_config_event::EvtCreateConfigEvent,
            VirtualCurveInstruction::EvtCreateDammV2MigrationMetadataEvent => evt_create_damm_v2_migration_metadata_event::EvtCreateDammV2MigrationMetadataEvent,
            VirtualCurveInstruction::EvtCreateMeteoraMigrationMetadataEvent => evt_create_meteora_migration_metadata_event::EvtCreateMeteoraMigrationMetadataEvent,
            VirtualCurveInstruction::EvtCurveCompleteEvent => evt_curve_complete_event::EvtCurveCompleteEvent,
            VirtualCurveInstruction::EvtInitializePoolEvent => evt_initialize_pool_event::EvtInitializePoolEvent,
            VirtualCurveInstruction::EvtPartnerMetadataEvent => evt_partner_metadata_event::EvtPartnerMetadataEvent,
            VirtualCurveInstruction::EvtPartnerWithdrawSurplusEvent => evt_partner_withdraw_surplus_event::EvtPartnerWithdrawSurplusEvent,
            VirtualCurveInstruction::EvtProtocolWithdrawSurplusEvent => evt_protocol_withdraw_surplus_event::EvtProtocolWithdrawSurplusEvent,
            VirtualCurveInstruction::EvtSwapEvent => evt_swap_event::EvtSwapEvent,
            VirtualCurveInstruction::EvtVirtualPoolMetadataEvent => evt_virtual_pool_metadata_event::EvtVirtualPoolMetadataEvent,
        )
    }
}