Skip to main content

jupiter_sdk/models/recurring/
mod.rs

1use serde::{Deserialize, Serialize};
2use serde_with::serde_as;
3
4use crate::trigger::Trade;
5
6
7
8
9#[derive(Debug, Deserialize, Serialize)]
10#[serde(rename_all = "camelCase")]
11#[serde_as]
12pub struct CreateRecurringOrderReq {
13    pub input_mint: String,
14    pub output_mint: String,
15    pub params: CreateRecurringOrderParams,
16    pub user: String,
17}
18
19#[derive(Debug, Deserialize, Serialize)]
20#[serde(rename_all = "camelCase")]
21#[serde_as]
22pub struct CreateRecurringOrderParams {
23  pub in_amount: i64,
24  pub interval: i64,
25  pub max_price: Option<f64>,
26  pub min_price: Option<f64>,
27  pub number_of_orders: i64, 
28  pub start_at: i64,
29}
30
31
32#[derive(Debug, Deserialize, Serialize)]
33#[serde(rename_all = "camelCase")]
34#[serde_as]
35pub struct CreateRecurringOrderRes {
36    pub request_id: String,
37    pub transaction: String,
38}
39
40
41#[derive(Debug, Deserialize, Serialize)]
42#[serde(rename_all = "camelCase")]
43pub enum CloseRecurringType {
44  Time,
45  Price,
46}
47
48
49#[derive(Debug, Deserialize, Serialize)]
50#[serde(rename_all = "camelCase")]
51#[serde_as]
52pub struct CancelRecurringOrderReq {
53  pub order: String,
54  pub recurring_type: CloseRecurringType,
55  pub user: String,
56}
57
58#[derive(Debug, Deserialize, Serialize)]
59#[serde(rename_all = "camelCase")]
60#[serde_as]
61pub struct CancelRecurringOrderRes {
62  pub request_id: String,
63  pub transaction: String,
64}
65
66
67#[derive(Debug, Deserialize, Serialize)]
68#[serde(rename_all = "camelCase")]
69#[serde_as]
70pub struct PriceDepositReq {
71  pub amount: String,
72  pub order: String,
73  pub user: String,
74}
75
76#[derive(Debug, Deserialize, Serialize)]
77#[serde(rename_all = "camelCase")]
78#[serde_as]
79pub struct PriceDepositRes {
80  pub request_id: String,
81  pub transaction: String,
82}
83
84
85#[derive(Debug, Deserialize, Serialize)]
86#[serde(rename_all = "camelCase")]
87#[serde_as]
88pub enum Withdrawal {
89  In,
90  Out,
91}
92
93#[derive(Debug, Deserialize, Serialize)]
94#[serde(rename_all = "camelCase")]
95#[serde_as]
96pub struct PriceWithdrawReq {
97  pub amount: String,
98  pub input_or_output: Withdrawal,
99  pub order: String,
100  pub user: String,
101}
102
103#[derive(Debug, Deserialize, Serialize)]
104#[serde(rename_all = "camelCase")]
105#[serde_as]
106pub struct PriceWithdrawRes {
107  pub request_id: String,
108  pub transaction: String,
109}
110
111
112#[derive(Debug, Deserialize, Serialize)]
113#[serde(rename_all = "camelCase")]
114#[serde_as]
115pub enum RecurringOrderType {
116  Time,
117  Price,
118  All,
119}
120
121#[derive(Debug, Deserialize, Serialize)]
122#[serde(rename_all = "camelCase")]
123#[serde_as]
124pub enum OrderStatus {
125  Active,
126  History,
127}
128
129#[derive(Debug, Deserialize, Serialize)]
130#[serde(rename_all = "camelCase")]
131#[serde_as]
132pub struct GetRecurringOrdersReq {
133  pub recurring_type: RecurringOrderType,
134  pub order_status: OrderStatus,
135  pub user: String,
136  pub page: i64,
137  pub include_failed_tx: bool,
138  pub mint: Option<String>,
139}
140
141
142
143#[derive(Debug, Deserialize, Serialize)]
144#[serde(rename_all = "camelCase")]
145#[serde_as]
146pub struct GetRecurringOrdersRes {
147  pub order_status: OrderStatus,
148  pub page: i64,
149  pub total_pages: i64,
150  pub user: String,
151  pub timer: Option<Vec<TimeOrder>>,
152  pub price: Option<Vec<PriceOrder>>,
153}
154
155#[derive(Debug, Deserialize, Serialize)]
156#[serde(rename_all = "camelCase")]
157#[serde_as]
158pub struct TimeOrder {
159  pub close_tx: String,
160  pub created_at: String,
161  pub cycle_frequency: String,
162  pub in_amount_per_cycle: String,
163  pub in_deposited: String,
164  pub in_used: String,
165  pub in_withdrawn: String,
166  pub input_mint: String,
167  pub max_out_amount: String,
168  pub min_out_amount: String,
169  pub open_tx: String,
170  pub order_key: String,
171  pub out_received: String,
172  pub out_withdrawn: String,
173  pub output_mint: String,
174  pub raw_in_amount_per_cycl: String,
175  pub raw_in_deposited: String,
176  pub raw_in_used: String,
177  pub raw_in_withdrawn: String,
178  pub raw_max_out_amount: String,
179  pub raw_min_out_amount: String,
180  pub raw_out_received: String,
181  pub raw_out_withdrawn: String,
182  pub trades: Vec<Trade>,
183  pub updated_at: String,
184  pub user_closed: bool,
185  pub user_pubkey: String,
186}
187
188
189#[derive(Debug, Deserialize, Serialize)]
190#[serde(rename_all = "camelCase")]
191#[serde_as]
192pub struct PriceOrder {
193  pub close_tx: String,
194  pub closed_by: String,
195  pub created_by: String,
196  pub estimated_usdc_value_spent: String,
197  pub in_deposited: String,
198  pub in_left: String,
199  pub in_used: String,
200  pub in_withdrawn: String,
201  pub incremental_usd_value: String,
202  pub input_mint: String,
203  pub open_tx: String,
204  pub order_interval: String,
205  pub order_key: String,
206  pub out_received: String,
207  pub out_withdrawn: String,
208  pub output_mint: String,
209  pub raw_estimated_usdc_value_spent: String,
210  pub raw_in_deposited: String,
211  pub raw_in_left: String,
212  pub raw_in_used: String,
213  pub raw_in_withdrawn: String,
214  pub raw_incremental_usd_value: String,
215  pub raw_out_received: String,
216  pub raw_out_withdrawn: String,
217  pub raw_supposed_usd_value: String,
218  pub start_at: String,
219  pub status: String,
220  pub supposed_usd_value: String,
221  pub trades: Vec<Trade>,
222  pub updated_at: String,
223  pub user_pubkey: String,
224}