Skip to main content

jupiter_sdk/models/lend/
mod.rs

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    // Address of user's wallet
230    pub owner_address: String,
231    // Balance of user's jlTokens
232    pub shares: String,
233    // Balance of user's USDC in protocol (including intereste accured)
234    pub underlying_assets: String,
235    // Balance of user's USDC in wallet
236    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}