gmsol_decode/
gmsol.rs

1/// Implement [`Decode`](crate::Decode) for types defined in [`gmsol-programs`].
2#[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}