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, GlvDeposit, GlvShift, GlvWithdrawal, Market, Order, Position, Shift, Store,
9 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!(UserHeader);
32
33 impl_decode_for_cpi_event!(DepositRemoved);
34 impl_decode_for_cpi_event!(DepositExecuted);
35 impl_decode_for_cpi_event!(WithdrawalRemoved);
36 impl_decode_for_cpi_event!(WithdrawalExecuted);
37 impl_decode_for_cpi_event!(ShiftRemoved);
38 impl_decode_for_cpi_event!(GlvDepositRemoved);
39 impl_decode_for_cpi_event!(GlvWithdrawalRemoved);
40 impl_decode_for_cpi_event!(GlvPricing);
41 impl_decode_for_cpi_event!(OrderUpdated);
42 impl_decode_for_cpi_event!(PositionIncreased);
43 impl_decode_for_cpi_event!(PositionDecreased);
44 impl_decode_for_cpi_event!(InsufficientFundingFeePayment);
45 impl_decode_for_cpi_event!(OrderRemoved);
46 impl_decode_for_cpi_event!(TradeEvent);
47 impl_decode_for_cpi_event!(MarketFeesUpdated);
48 impl_decode_for_cpi_event!(BorrowingFeesUpdated);
49 impl_decode_for_cpi_event!(MarketStateUpdated);
50 impl_decode_for_cpi_event!(SwapExecuted);
51 impl_decode_for_cpi_event!(GtUpdated);
52 impl_decode_for_cpi_event!(GtBuyback);
53 impl_decode_for_cpi_event!(MarketTokenValue);
54 impl_decode_for_cpi_event!(GlvTokenValue);
55
56 untagged!(
57 GMSOLAccountData,
58 [
59 Deposit,
60 Withdrawal,
61 Shift,
62 Order,
63 GlvDeposit,
64 GlvWithdrawal,
65 GlvShift,
66 Store,
67 Market,
68 VirtualInventory,
69 Position,
70 UserHeader,
71 UnknownOwnedData
72 ]
73 );
74
75 type Account = crate::value::Account<GMSOLAccountData>;
76
77 untagged!(
78 GMSOLCPIEvent,
79 [
80 DepositExecuted,
81 DepositRemoved,
82 WithdrawalExecuted,
83 WithdrawalRemoved,
84 ShiftRemoved,
85 GlvDepositRemoved,
86 GlvWithdrawalRemoved,
87 GlvPricing,
88 OrderUpdated,
89 PositionIncreased,
90 PositionDecreased,
91 InsufficientFundingFeePayment,
92 OrderRemoved,
93 TradeEvent,
94 MarketFeesUpdated,
95 BorrowingFeesUpdated,
96 MarketStateUpdated,
97 SwapExecuted,
98 GtUpdated,
99 GtBuyback,
100 MarketTokenValue,
101 GlvTokenValue,
102 UnknownOwnedData
103 ]
104 );
105
106 type CPIEvents = crate::value::AnchorCPIEvents<GMSOLCPIEvent>;
107
108 untagged!(GMSOLData, [Account, CPIEvents]);
109}