jupiter_sdk/api/
trigger.rs1use crate::{
2 api::TransactionRequest, common::ExecuteRes, trigger::{
3 CancelOrderReq,
4 CancelOrderRes,
5 CancelOrdersReq,
6 CancelOrdersRes,
7 CreateOrderReq,
8 CreateOrderRes,
9 GetTriggerOrdersReq,
10 GetTriggerOrdersRes,
11 }, JupiterClient, JupiterError
12};
13
14
15
16
17
18#[derive(Clone)]
19pub struct TriggerService<'a>{
20 client: &'a JupiterClient,
21}
22
23
24impl<'a> TriggerService<'a> {
26 pub fn new(client: &'a JupiterClient) -> Self {
27 Self { client }
28 }
29
30
31 pub async fn create_order(
32 &self,
33 req: &CreateOrderReq,
34 ) -> Result<CreateOrderRes, JupiterError> {
35 let path = "/lend/v1/earn/positions";
36 self.client.get_json_with_query(&path, req).await
37 }
38
39 pub async fn execute(
40 &self,
41 req: &TransactionRequest,
42 ) -> Result<ExecuteRes, JupiterError> {
43 let path = "/trigger/v1/execute";
44 self.client.post(&path, req).await
45 }
46
47 pub async fn cancel_order(
48 &self,
49 req: &CancelOrderReq,
50 ) -> Result<CancelOrderRes, JupiterError> {
51 let path = "/trigger/v1/cancelOrder";
52 self.client.post(&path, req).await
53 }
54
55 pub async fn cancel_orders(
56 &self,
57 req: &CancelOrdersReq,
58 ) -> Result<CancelOrdersRes, JupiterError> {
59 let path = "/trigger/v1/cancelOrders";
60 self.client.post(&path, req).await
61 }
62
63 pub async fn get_trigger_orders(
64 &self,
65 req: &GetTriggerOrdersReq,
66 ) -> Result<GetTriggerOrdersRes, JupiterError> {
67 let path = "/trigger/v1/getTriggerOrders";
68 self.client.get_json_with_query(&path, req).await
69 }
70}
71
72
73
74
75#[cfg(test)]
76mod tests {
77
78 use crate::trigger::CreateOrderParams;
79
80 use super::*;
81
82 #[tokio::test]
83 async fn test_create_order() {
84 let client = JupiterClient::new(crate::JupiterConfig::default()).unwrap();
85 let trigger_service = TriggerService::new(&client);
86
87 let res = trigger_service.create_order(&CreateOrderReq {
88 input_mint: "".to_string(),
89 output_mint: "".to_string(),
90 maker: "".to_string(),
91 payer: "".to_string(),
92 params: CreateOrderParams{
93 making_amount: "".to_string(),
94 taking_amount: "".to_string(),
95 expired_at: "".to_string(),
96 slippage_bps: "".to_string(),
97 fee_bps: "".to_string(),
98 },
99 compute_unit_price: None,
100 fee_account: None,
101 wrap_and_unwrap_sol: None,
102 }).await;
103
104 match res {
105 Ok(res) => {
106 println!("create_order: {}", serde_json::to_string_pretty(&res).unwrap());
108 }
109 Err(e) => {
110 panic!("create_order error: {}", e);
111 }
112 }
113 }
114}
115