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