1#[cfg(feature = "gmsol-programs")]
3pub mod programs {
4 use crate::{impl_decode_for_cpi_event, impl_decode_for_zero_copy};
5 use crate::{untagged, value::UnknownOwnedData};
6 use gmsol_programs::gmsol_store::{
7 accounts::{
8 Deposit, Glv, GlvDeposit, GlvShift, GlvWithdrawal, Market, Order, Position, Shift,
9 Store, UserHeader, VirtualInventory, Withdrawal,
10 },
11 events::{
12 BorrowingFeesUpdated, DepositExecuted, DepositRemoved, GlvDepositRemoved, GlvPricing,
13 GlvTokenValue, GlvWithdrawalRemoved, GtBuyback, GtUpdated,
14 InsufficientFundingFeePayment, MarketFeesUpdated, MarketStateUpdated, MarketTokenValue,
15 OrderRemoved, OrderUpdated, PositionDecreased, PositionIncreased, ShiftRemoved,
16 SwapExecuted, TradeEvent, WithdrawalExecuted, WithdrawalRemoved,
17 },
18 };
19
20 impl_decode_for_zero_copy!(Store);
21 impl_decode_for_zero_copy!(Position);
22 impl_decode_for_zero_copy!(Market);
23 impl_decode_for_zero_copy!(VirtualInventory);
24 impl_decode_for_zero_copy!(Deposit);
25 impl_decode_for_zero_copy!(Withdrawal);
26 impl_decode_for_zero_copy!(Shift);
27 impl_decode_for_zero_copy!(Order);
28 impl_decode_for_zero_copy!(GlvDeposit);
29 impl_decode_for_zero_copy!(GlvWithdrawal);
30 impl_decode_for_zero_copy!(GlvShift);
31 impl_decode_for_zero_copy!(Glv);
32 impl_decode_for_zero_copy!(UserHeader);
33
34 impl_decode_for_cpi_event!(DepositRemoved);
35 impl_decode_for_cpi_event!(DepositExecuted);
36 impl_decode_for_cpi_event!(WithdrawalRemoved);
37 impl_decode_for_cpi_event!(WithdrawalExecuted);
38 impl_decode_for_cpi_event!(ShiftRemoved);
39 impl_decode_for_cpi_event!(GlvDepositRemoved);
40 impl_decode_for_cpi_event!(GlvWithdrawalRemoved);
41 impl_decode_for_cpi_event!(GlvPricing);
42 impl_decode_for_cpi_event!(OrderUpdated);
43 impl_decode_for_cpi_event!(PositionIncreased);
44 impl_decode_for_cpi_event!(PositionDecreased);
45 impl_decode_for_cpi_event!(InsufficientFundingFeePayment);
46 impl_decode_for_cpi_event!(OrderRemoved);
47 impl_decode_for_cpi_event!(TradeEvent);
48 impl_decode_for_cpi_event!(MarketFeesUpdated);
49 impl_decode_for_cpi_event!(BorrowingFeesUpdated);
50 impl_decode_for_cpi_event!(MarketStateUpdated);
51 impl_decode_for_cpi_event!(SwapExecuted);
52 impl_decode_for_cpi_event!(GtUpdated);
53 impl_decode_for_cpi_event!(GtBuyback);
54 impl_decode_for_cpi_event!(MarketTokenValue);
55 impl_decode_for_cpi_event!(GlvTokenValue);
56
57 untagged!(
58 GMSOLAccountData,
59 [
60 Deposit,
61 Withdrawal,
62 Shift,
63 Order,
64 GlvDeposit,
65 GlvWithdrawal,
66 GlvShift,
67 Glv,
68 Store,
69 Market,
70 VirtualInventory,
71 Position,
72 UserHeader,
73 UnknownOwnedData
74 ]
75 );
76
77 type Account = crate::value::Account<GMSOLAccountData>;
78
79 untagged!(
80 GMSOLCPIEvent,
81 [
82 DepositExecuted,
83 DepositRemoved,
84 WithdrawalExecuted,
85 WithdrawalRemoved,
86 ShiftRemoved,
87 GlvDepositRemoved,
88 GlvWithdrawalRemoved,
89 GlvPricing,
90 OrderUpdated,
91 PositionIncreased,
92 PositionDecreased,
93 InsufficientFundingFeePayment,
94 OrderRemoved,
95 TradeEvent,
96 MarketFeesUpdated,
97 BorrowingFeesUpdated,
98 MarketStateUpdated,
99 SwapExecuted,
100 GtUpdated,
101 GtBuyback,
102 MarketTokenValue,
103 GlvTokenValue,
104 UnknownOwnedData
105 ]
106 );
107
108 type CPIEvents = crate::value::AnchorCPIEvents<GMSOLCPIEvent>;
109
110 untagged!(GMSOLData, [Account, CPIEvents]);
111}