carbon-openbook-v2-decoder 2.0.0

Openbook V2 Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use crate::{OpenbookV2Decoder, PROGRAM_ID};

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

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

pub mod cancel_all_and_place_orders;
pub mod cancel_all_orders;
pub mod cancel_order;
pub mod cancel_order_by_client_order_id;
pub mod close_market;
pub mod close_open_orders_account;
pub mod close_open_orders_indexer;
pub mod consume_events;
pub mod consume_given_events;
pub mod cpi_event;
pub mod create_market;
pub mod create_open_orders_account;
pub mod create_open_orders_indexer;
pub mod deposit;
pub mod edit_order;
pub mod edit_order_pegged;
pub mod place_order;
pub mod place_order_pegged;
pub mod place_orders;
pub mod place_take_order;
pub mod prune_orders;
pub mod refill;
pub mod set_delegate;
pub mod set_market_expired;
pub mod settle_funds;
pub mod settle_funds_expired;
pub mod stub_oracle_close;
pub mod stub_oracle_create;
pub mod stub_oracle_set;
pub mod sweep_fees;

pub use self::{
    cancel_all_and_place_orders::*, cancel_all_orders::*, cancel_order::*,
    cancel_order_by_client_order_id::*, close_market::*, close_open_orders_account::*,
    close_open_orders_indexer::*, consume_events::*, consume_given_events::*, cpi_event::*,
    create_market::*, create_open_orders_account::*, create_open_orders_indexer::*, deposit::*,
    edit_order::*, edit_order_pegged::*, place_order::*, place_order_pegged::*, place_orders::*,
    place_take_order::*, prune_orders::*, refill::*, set_delegate::*, set_market_expired::*,
    settle_funds::*, settle_funds_expired::*, stub_oracle_close::*, stub_oracle_create::*,
    stub_oracle_set::*, sweep_fees::*,
};

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum OpenbookV2Instruction {
    CancelAllAndPlaceOrders {
        program_id: solana_pubkey::Pubkey,
        data: CancelAllAndPlaceOrders,
        accounts: CancelAllAndPlaceOrdersInstructionAccounts,
    },
    CancelAllOrders {
        program_id: solana_pubkey::Pubkey,
        data: CancelAllOrders,
        accounts: CancelAllOrdersInstructionAccounts,
    },
    CancelOrder {
        program_id: solana_pubkey::Pubkey,
        data: CancelOrder,
        accounts: CancelOrderInstructionAccounts,
    },
    CancelOrderByClientOrderId {
        program_id: solana_pubkey::Pubkey,
        data: CancelOrderByClientOrderId,
        accounts: CancelOrderByClientOrderIdInstructionAccounts,
    },
    CloseMarket {
        program_id: solana_pubkey::Pubkey,
        data: CloseMarket,
        accounts: CloseMarketInstructionAccounts,
    },
    CloseOpenOrdersAccount {
        program_id: solana_pubkey::Pubkey,
        data: CloseOpenOrdersAccount,
        accounts: CloseOpenOrdersAccountInstructionAccounts,
    },
    CloseOpenOrdersIndexer {
        program_id: solana_pubkey::Pubkey,
        data: CloseOpenOrdersIndexer,
        accounts: CloseOpenOrdersIndexerInstructionAccounts,
    },
    ConsumeEvents {
        program_id: solana_pubkey::Pubkey,
        data: ConsumeEvents,
        accounts: ConsumeEventsInstructionAccounts,
    },
    ConsumeGivenEvents {
        program_id: solana_pubkey::Pubkey,
        data: ConsumeGivenEvents,
        accounts: ConsumeGivenEventsInstructionAccounts,
    },
    CreateMarket {
        program_id: solana_pubkey::Pubkey,
        data: CreateMarket,
        accounts: CreateMarketInstructionAccounts,
    },
    CreateOpenOrdersAccount {
        program_id: solana_pubkey::Pubkey,
        data: CreateOpenOrdersAccount,
        accounts: CreateOpenOrdersAccountInstructionAccounts,
    },
    CreateOpenOrdersIndexer {
        program_id: solana_pubkey::Pubkey,
        data: CreateOpenOrdersIndexer,
        accounts: CreateOpenOrdersIndexerInstructionAccounts,
    },
    Deposit {
        program_id: solana_pubkey::Pubkey,
        data: Deposit,
        accounts: DepositInstructionAccounts,
    },
    EditOrder {
        program_id: solana_pubkey::Pubkey,
        data: EditOrder,
        accounts: EditOrderInstructionAccounts,
    },
    EditOrderPegged {
        program_id: solana_pubkey::Pubkey,
        data: EditOrderPegged,
        accounts: EditOrderPeggedInstructionAccounts,
    },
    PlaceOrder {
        program_id: solana_pubkey::Pubkey,
        data: PlaceOrder,
        accounts: PlaceOrderInstructionAccounts,
    },
    PlaceOrderPegged {
        program_id: solana_pubkey::Pubkey,
        data: PlaceOrderPegged,
        accounts: PlaceOrderPeggedInstructionAccounts,
    },
    PlaceOrders {
        program_id: solana_pubkey::Pubkey,
        data: PlaceOrders,
        accounts: PlaceOrdersInstructionAccounts,
    },
    PlaceTakeOrder {
        program_id: solana_pubkey::Pubkey,
        data: PlaceTakeOrder,
        accounts: PlaceTakeOrderInstructionAccounts,
    },
    PruneOrders {
        program_id: solana_pubkey::Pubkey,
        data: PruneOrders,
        accounts: PruneOrdersInstructionAccounts,
    },
    Refill {
        program_id: solana_pubkey::Pubkey,
        data: Refill,
        accounts: RefillInstructionAccounts,
    },
    SetDelegate {
        program_id: solana_pubkey::Pubkey,
        data: SetDelegate,
        accounts: SetDelegateInstructionAccounts,
    },
    SetMarketExpired {
        program_id: solana_pubkey::Pubkey,
        data: SetMarketExpired,
        accounts: SetMarketExpiredInstructionAccounts,
    },
    SettleFunds {
        program_id: solana_pubkey::Pubkey,
        data: SettleFunds,
        accounts: SettleFundsInstructionAccounts,
    },
    SettleFundsExpired {
        program_id: solana_pubkey::Pubkey,
        data: SettleFundsExpired,
        accounts: SettleFundsExpiredInstructionAccounts,
    },
    StubOracleClose {
        program_id: solana_pubkey::Pubkey,
        data: StubOracleClose,
        accounts: StubOracleCloseInstructionAccounts,
    },
    StubOracleCreate {
        program_id: solana_pubkey::Pubkey,
        data: StubOracleCreate,
        accounts: StubOracleCreateInstructionAccounts,
    },
    StubOracleSet {
        program_id: solana_pubkey::Pubkey,
        data: StubOracleSet,
        accounts: StubOracleSetInstructionAccounts,
    },
    SweepFees {
        program_id: solana_pubkey::Pubkey,
        data: SweepFees,
        accounts: SweepFeesInstructionAccounts,
    },
    CpiEvent {
        program_id: solana_pubkey::Pubkey,
        data: CpiEvent,
        accounts: CpiEventInstructionAccounts,
    },
}

impl carbon_core::instruction::InstructionDecoder<'_> for OpenbookV2Decoder {
    type InstructionType = OpenbookV2Instruction;

    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,
            OpenbookV2Instruction::CancelAllAndPlaceOrders => CancelAllAndPlaceOrders,
            OpenbookV2Instruction::CancelAllOrders => CancelAllOrders,
            OpenbookV2Instruction::CancelOrder => CancelOrder,
            OpenbookV2Instruction::CancelOrderByClientOrderId => CancelOrderByClientOrderId,
            OpenbookV2Instruction::CloseMarket => CloseMarket,
            OpenbookV2Instruction::CloseOpenOrdersAccount => CloseOpenOrdersAccount,
            OpenbookV2Instruction::CloseOpenOrdersIndexer => CloseOpenOrdersIndexer,
            OpenbookV2Instruction::ConsumeEvents => ConsumeEvents,
            OpenbookV2Instruction::ConsumeGivenEvents => ConsumeGivenEvents,
            OpenbookV2Instruction::CreateMarket => CreateMarket,
            OpenbookV2Instruction::CreateOpenOrdersAccount => CreateOpenOrdersAccount,
            OpenbookV2Instruction::CreateOpenOrdersIndexer => CreateOpenOrdersIndexer,
            OpenbookV2Instruction::Deposit => Deposit,
            OpenbookV2Instruction::EditOrder => EditOrder,
            OpenbookV2Instruction::EditOrderPegged => EditOrderPegged,
            OpenbookV2Instruction::PlaceOrder => PlaceOrder,
            OpenbookV2Instruction::PlaceOrderPegged => PlaceOrderPegged,
            OpenbookV2Instruction::PlaceOrders => PlaceOrders,
            OpenbookV2Instruction::PlaceTakeOrder => PlaceTakeOrder,
            OpenbookV2Instruction::PruneOrders => PruneOrders,
            OpenbookV2Instruction::Refill => Refill,
            OpenbookV2Instruction::SetDelegate => SetDelegate,
            OpenbookV2Instruction::SetMarketExpired => SetMarketExpired,
            OpenbookV2Instruction::SettleFunds => SettleFunds,
            OpenbookV2Instruction::SettleFundsExpired => SettleFundsExpired,
            OpenbookV2Instruction::StubOracleClose => StubOracleClose,
            OpenbookV2Instruction::StubOracleCreate => StubOracleCreate,
            OpenbookV2Instruction::StubOracleSet => StubOracleSet,
            OpenbookV2Instruction::SweepFees => SweepFees,
            OpenbookV2Instruction::CpiEvent => CpiEvent,
        )
    }
}