1use serde::{Deserialize, Serialize};
2use serde_with::serde_as;
3
4
5
6
7
8
9#[derive(Debug, Deserialize, Serialize)]
10#[serde(rename_all = "camelCase")]
11#[serde_as]
12pub struct DepositReq {
13 pub asset: String,
14 pub signer: String,
15 pub amount: String,
16}
17
18#[derive(Debug, Deserialize, Serialize)]
19#[serde(rename_all = "camelCase")]
20#[serde_as]
21pub struct DepositRes {
22 pub transaction: String,
23}
24
25
26
27#[derive(Debug, Deserialize, Serialize)]
28#[serde(rename_all = "camelCase")]
29#[serde_as]
30pub struct WithdrawReq {
31 pub asset: String,
32 pub signer: String,
33 pub amount: String,
34}
35
36#[derive(Debug, Deserialize, Serialize)]
37#[serde(rename_all = "camelCase")]
38#[serde_as]
39pub struct WithdrawRes {
40 pub transaction: String,
41}
42
43#[derive(Debug, Deserialize, Serialize)]
44#[serde(rename_all = "camelCase")]
45#[serde_as]
46pub struct MintReq {
47 pub asset: String,
48 pub signer: String,
49 pub amount: String,
50}
51
52#[derive(Debug, Deserialize, Serialize)]
53#[serde(rename_all = "camelCase")]
54#[serde_as]
55pub struct MintRes {
56 pub transaction: String,
57}
58
59#[derive(Debug, Deserialize, Serialize)]
60#[serde(rename_all = "camelCase")]
61#[serde_as]
62pub struct RedeemReq {
63 pub asset: String,
64 pub signer: String,
65 pub amount: String,
66}
67
68#[derive(Debug, Deserialize, Serialize)]
69#[serde(rename_all = "camelCase")]
70#[serde_as]
71pub struct RedeemRes {
72 pub transaction: String,
73}
74
75
76#[derive(Debug, Deserialize, Serialize)]
77#[serde(rename_all = "camelCase")]
78#[serde_as]
79pub struct DepositInstructionsReq {
80 pub asset: String,
81 pub signer: String,
82 pub amount: String,
83}
84
85
86#[derive(Debug, Deserialize, Serialize)]
87#[serde(rename_all = "camelCase")]
88#[serde_as]
89pub struct AccountInfo {
90 pub pubkey: String,
91 pub is_signer: bool,
92 pub is_writable: bool,
93}
94
95
96#[derive(Debug, Deserialize, Serialize)]
97#[serde(rename_all = "camelCase")]
98#[serde_as]
99pub struct DepositInstructionsRes {
100 pub program_id: Vec<String>,
101 pub accounts: Vec<AccountInfo>,
102 pub data: String,
103}
104
105#[derive(Debug, Deserialize, Serialize)]
106#[serde(rename_all = "camelCase")]
107#[serde_as]
108pub struct WithdrawInstructionsReq {
109 pub asset: String,
110 pub signer: String,
111 pub amount: String,
112}
113
114#[derive(Debug, Deserialize, Serialize)]
115#[serde(rename_all = "camelCase")]
116#[serde_as]
117pub struct WithdrawInstructionsRes {
118 pub program_id: Vec<String>,
119 pub accounts: Vec<AccountInfo>,
120 pub data: String,
121}
122
123
124
125#[derive(Debug, Deserialize, Serialize)]
126#[serde(rename_all = "camelCase")]
127#[serde_as]
128pub struct MintInstructionsReq {
129 pub asset: String,
130 pub signer: String,
131 pub amount: String,
132}
133
134#[derive(Debug, Deserialize, Serialize)]
135#[serde(rename_all = "camelCase")]
136#[serde_as]
137pub struct Instruction {
138 pub program_id: Vec<String>,
139 pub accounts: Vec<AccountInfo>,
140 pub data: String,
141}
142
143
144#[derive(Debug, Deserialize, Serialize)]
145#[serde(rename_all = "camelCase")]
146#[serde_as]
147pub struct RedeemInstructionsReq {
148 pub asset: String,
149 pub signer: String,
150 pub amount: String,
151}
152
153#[derive(Debug, Deserialize, Serialize)]
154#[serde(rename_all = "camelCase")]
155#[serde_as]
156pub struct RedeemInstructionsRes {
157 pub program_id: Vec<String>,
158 pub accounts: Vec<AccountInfo>,
159 pub data: String,
160}
161
162#[derive(Debug, Deserialize, Serialize)]
163#[serde(rename_all = "camelCase")]
164#[serde_as]
165pub struct Asset {
166 pub address: String,
167 pub chain_id: String,
168 pub name: String,
169 pub symbol: String,
170 pub decimals: u32,
171 pub logo_uri: Option<String>,
172 pub price: String,
173 pub coingecko_id: String,
174}
175
176#[derive(Debug, Deserialize, Serialize)]
177#[serde(rename_all = "camelCase")]
178#[serde_as]
179pub struct LiquiditySupplyData {
180 pub mode_with_interest: bool,
181 pub supply: String,
182 pub withdrawal_limit: String,
183 pub last_update_timestamp: String,
184 pub expand_percent: f64,
185 pub expand_duration: String,
186 pub base_withdrawal_limit: String,
187 pub withdrawable_until_limit: String,
188 pub withdrawable: String,
189}
190
191#[derive(Debug, Deserialize, Serialize)]
192#[serde(rename_all = "camelCase")]
193#[serde_as]
194pub struct Token {
195 pub id: u64,
196 pub address: String,
197 pub name: String,
198 pub symbol: String,
199 pub decimals: u32,
200 pub asset_address: String,
201 pub asset: Asset,
202 pub total_assets: String,
203 pub total_supply: String,
204 pub convert_to_shares: String,
205 pub convert_to_assets: String,
206 pub rewards_rate: String,
207 pub supply_rate: String,
208 pub total_rate: String,
209 pub rebalance_difference: String,
210 pub liquidity_supply_data: LiquiditySupplyData,
211}
212
213
214
215#[derive(Debug, Deserialize, Serialize)]
216#[serde(rename_all = "camelCase")]
217#[serde_as]
218pub struct GetPositionsReq {
219 pub users: String,
220}
221
222pub type GetPositionsRes = Vec<Position>;
223
224#[derive(Debug, Deserialize, Serialize)]
225#[serde(rename_all = "camelCase")]
226#[serde_as]
227pub struct Position {
228 pub token: Token,
229 pub owner_address: String,
231 pub shares: String,
233 pub underlying_assets: String,
235 pub underlying_balance: String,
237 pub allowance: String,
238}
239
240
241
242#[derive(Debug, Deserialize, Serialize)]
243#[serde(rename_all = "camelCase")]
244#[serde_as]
245pub struct GetEarningsReq {
246 pub user: String,
247 pub positions: String,
248}
249
250
251pub type GetEarningsRes = Vec<GetEarningsResItem>;
252
253#[derive(Debug, Deserialize, Serialize)]
254#[serde(rename_all = "camelCase")]
255#[serde_as]
256pub struct GetEarningsResItem {
257 pub address: String,
258 pub owner_address: String,
259 pub total_deposits: String,
260 pub total_withdraws: String,
261 pub total_balance: String,
262 pub total_assets: String,
263 pub earnings: String,
264 pub slot: u64,
265}