1use crate::{OpenbookV2Decoder, PROGRAM_ID};
3
4#[cfg(feature = "postgres")]
5pub mod postgres;
6
7#[cfg(feature = "graphql")]
8pub mod graphql;
9
10pub mod cancel_all_and_place_orders;
11pub mod cancel_all_orders;
12pub mod cancel_order;
13pub mod cancel_order_by_client_order_id;
14pub mod close_market;
15pub mod close_open_orders_account;
16pub mod close_open_orders_indexer;
17pub mod consume_events;
18pub mod consume_given_events;
19pub mod cpi_event;
20pub mod create_market;
21pub mod create_open_orders_account;
22pub mod create_open_orders_indexer;
23pub mod deposit;
24pub mod edit_order;
25pub mod edit_order_pegged;
26pub mod place_order;
27pub mod place_order_pegged;
28pub mod place_orders;
29pub mod place_take_order;
30pub mod prune_orders;
31pub mod refill;
32pub mod set_delegate;
33pub mod set_market_expired;
34pub mod settle_funds;
35pub mod settle_funds_expired;
36pub mod stub_oracle_close;
37pub mod stub_oracle_create;
38pub mod stub_oracle_set;
39pub mod sweep_fees;
40
41pub use self::{
42 cancel_all_and_place_orders::*, cancel_all_orders::*, cancel_order::*,
43 cancel_order_by_client_order_id::*, close_market::*, close_open_orders_account::*,
44 close_open_orders_indexer::*, consume_events::*, consume_given_events::*, cpi_event::*,
45 create_market::*, create_open_orders_account::*, create_open_orders_indexer::*, deposit::*,
46 edit_order::*, edit_order_pegged::*, place_order::*, place_order_pegged::*, place_orders::*,
47 place_take_order::*, prune_orders::*, refill::*, set_delegate::*, set_market_expired::*,
48 settle_funds::*, settle_funds_expired::*, stub_oracle_close::*, stub_oracle_create::*,
49 stub_oracle_set::*, sweep_fees::*,
50};
51
52#[derive(Debug, Clone, PartialEq)]
53#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
54#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
55pub enum OpenbookV2Instruction {
56 CancelAllAndPlaceOrders {
57 program_id: solana_pubkey::Pubkey,
58 data: CancelAllAndPlaceOrders,
59 accounts: CancelAllAndPlaceOrdersInstructionAccounts,
60 },
61 CancelAllOrders {
62 program_id: solana_pubkey::Pubkey,
63 data: CancelAllOrders,
64 accounts: CancelAllOrdersInstructionAccounts,
65 },
66 CancelOrder {
67 program_id: solana_pubkey::Pubkey,
68 data: CancelOrder,
69 accounts: CancelOrderInstructionAccounts,
70 },
71 CancelOrderByClientOrderId {
72 program_id: solana_pubkey::Pubkey,
73 data: CancelOrderByClientOrderId,
74 accounts: CancelOrderByClientOrderIdInstructionAccounts,
75 },
76 CloseMarket {
77 program_id: solana_pubkey::Pubkey,
78 data: CloseMarket,
79 accounts: CloseMarketInstructionAccounts,
80 },
81 CloseOpenOrdersAccount {
82 program_id: solana_pubkey::Pubkey,
83 data: CloseOpenOrdersAccount,
84 accounts: CloseOpenOrdersAccountInstructionAccounts,
85 },
86 CloseOpenOrdersIndexer {
87 program_id: solana_pubkey::Pubkey,
88 data: CloseOpenOrdersIndexer,
89 accounts: CloseOpenOrdersIndexerInstructionAccounts,
90 },
91 ConsumeEvents {
92 program_id: solana_pubkey::Pubkey,
93 data: ConsumeEvents,
94 accounts: ConsumeEventsInstructionAccounts,
95 },
96 ConsumeGivenEvents {
97 program_id: solana_pubkey::Pubkey,
98 data: ConsumeGivenEvents,
99 accounts: ConsumeGivenEventsInstructionAccounts,
100 },
101 CreateMarket {
102 program_id: solana_pubkey::Pubkey,
103 data: CreateMarket,
104 accounts: CreateMarketInstructionAccounts,
105 },
106 CreateOpenOrdersAccount {
107 program_id: solana_pubkey::Pubkey,
108 data: CreateOpenOrdersAccount,
109 accounts: CreateOpenOrdersAccountInstructionAccounts,
110 },
111 CreateOpenOrdersIndexer {
112 program_id: solana_pubkey::Pubkey,
113 data: CreateOpenOrdersIndexer,
114 accounts: CreateOpenOrdersIndexerInstructionAccounts,
115 },
116 Deposit {
117 program_id: solana_pubkey::Pubkey,
118 data: Deposit,
119 accounts: DepositInstructionAccounts,
120 },
121 EditOrder {
122 program_id: solana_pubkey::Pubkey,
123 data: EditOrder,
124 accounts: EditOrderInstructionAccounts,
125 },
126 EditOrderPegged {
127 program_id: solana_pubkey::Pubkey,
128 data: EditOrderPegged,
129 accounts: EditOrderPeggedInstructionAccounts,
130 },
131 PlaceOrder {
132 program_id: solana_pubkey::Pubkey,
133 data: PlaceOrder,
134 accounts: PlaceOrderInstructionAccounts,
135 },
136 PlaceOrderPegged {
137 program_id: solana_pubkey::Pubkey,
138 data: PlaceOrderPegged,
139 accounts: PlaceOrderPeggedInstructionAccounts,
140 },
141 PlaceOrders {
142 program_id: solana_pubkey::Pubkey,
143 data: PlaceOrders,
144 accounts: PlaceOrdersInstructionAccounts,
145 },
146 PlaceTakeOrder {
147 program_id: solana_pubkey::Pubkey,
148 data: PlaceTakeOrder,
149 accounts: PlaceTakeOrderInstructionAccounts,
150 },
151 PruneOrders {
152 program_id: solana_pubkey::Pubkey,
153 data: PruneOrders,
154 accounts: PruneOrdersInstructionAccounts,
155 },
156 Refill {
157 program_id: solana_pubkey::Pubkey,
158 data: Refill,
159 accounts: RefillInstructionAccounts,
160 },
161 SetDelegate {
162 program_id: solana_pubkey::Pubkey,
163 data: SetDelegate,
164 accounts: SetDelegateInstructionAccounts,
165 },
166 SetMarketExpired {
167 program_id: solana_pubkey::Pubkey,
168 data: SetMarketExpired,
169 accounts: SetMarketExpiredInstructionAccounts,
170 },
171 SettleFunds {
172 program_id: solana_pubkey::Pubkey,
173 data: SettleFunds,
174 accounts: SettleFundsInstructionAccounts,
175 },
176 SettleFundsExpired {
177 program_id: solana_pubkey::Pubkey,
178 data: SettleFundsExpired,
179 accounts: SettleFundsExpiredInstructionAccounts,
180 },
181 StubOracleClose {
182 program_id: solana_pubkey::Pubkey,
183 data: StubOracleClose,
184 accounts: StubOracleCloseInstructionAccounts,
185 },
186 StubOracleCreate {
187 program_id: solana_pubkey::Pubkey,
188 data: StubOracleCreate,
189 accounts: StubOracleCreateInstructionAccounts,
190 },
191 StubOracleSet {
192 program_id: solana_pubkey::Pubkey,
193 data: StubOracleSet,
194 accounts: StubOracleSetInstructionAccounts,
195 },
196 SweepFees {
197 program_id: solana_pubkey::Pubkey,
198 data: SweepFees,
199 accounts: SweepFeesInstructionAccounts,
200 },
201 CpiEvent {
202 program_id: solana_pubkey::Pubkey,
203 data: CpiEvent,
204 accounts: CpiEventInstructionAccounts,
205 },
206}
207
208impl carbon_core::instruction::InstructionDecoder<'_> for OpenbookV2Decoder {
209 type InstructionType = OpenbookV2Instruction;
210
211 fn decode_instruction(
212 &self,
213 instruction: &solana_instruction::Instruction,
214 ) -> Option<Self::InstructionType> {
215 if instruction.program_id != PROGRAM_ID {
216 return None;
217 }
218
219 carbon_core::try_decode_instructions!(
220 instruction,
221 PROGRAM_ID,
222 OpenbookV2Instruction::CancelAllAndPlaceOrders => CancelAllAndPlaceOrders,
223 OpenbookV2Instruction::CancelAllOrders => CancelAllOrders,
224 OpenbookV2Instruction::CancelOrder => CancelOrder,
225 OpenbookV2Instruction::CancelOrderByClientOrderId => CancelOrderByClientOrderId,
226 OpenbookV2Instruction::CloseMarket => CloseMarket,
227 OpenbookV2Instruction::CloseOpenOrdersAccount => CloseOpenOrdersAccount,
228 OpenbookV2Instruction::CloseOpenOrdersIndexer => CloseOpenOrdersIndexer,
229 OpenbookV2Instruction::ConsumeEvents => ConsumeEvents,
230 OpenbookV2Instruction::ConsumeGivenEvents => ConsumeGivenEvents,
231 OpenbookV2Instruction::CreateMarket => CreateMarket,
232 OpenbookV2Instruction::CreateOpenOrdersAccount => CreateOpenOrdersAccount,
233 OpenbookV2Instruction::CreateOpenOrdersIndexer => CreateOpenOrdersIndexer,
234 OpenbookV2Instruction::Deposit => Deposit,
235 OpenbookV2Instruction::EditOrder => EditOrder,
236 OpenbookV2Instruction::EditOrderPegged => EditOrderPegged,
237 OpenbookV2Instruction::PlaceOrder => PlaceOrder,
238 OpenbookV2Instruction::PlaceOrderPegged => PlaceOrderPegged,
239 OpenbookV2Instruction::PlaceOrders => PlaceOrders,
240 OpenbookV2Instruction::PlaceTakeOrder => PlaceTakeOrder,
241 OpenbookV2Instruction::PruneOrders => PruneOrders,
242 OpenbookV2Instruction::Refill => Refill,
243 OpenbookV2Instruction::SetDelegate => SetDelegate,
244 OpenbookV2Instruction::SetMarketExpired => SetMarketExpired,
245 OpenbookV2Instruction::SettleFunds => SettleFunds,
246 OpenbookV2Instruction::SettleFundsExpired => SettleFundsExpired,
247 OpenbookV2Instruction::StubOracleClose => StubOracleClose,
248 OpenbookV2Instruction::StubOracleCreate => StubOracleCreate,
249 OpenbookV2Instruction::StubOracleSet => StubOracleSet,
250 OpenbookV2Instruction::SweepFees => SweepFees,
251 OpenbookV2Instruction::CpiEvent => CpiEvent,
252 )
253 }
254}