solana_trader_client_rust/provider/ws/
quote.rs1use super::WebSocketClient;
2use anyhow::Result;
3use serde_json::json;
4use solana_trader_proto::api;
5
6impl WebSocketClient {
7 pub async fn get_raydium_quotes(
8 &self,
9 request: &api::GetRaydiumQuotesRequest,
10 ) -> Result<api::GetRaydiumQuotesResponse> {
11 let params = serde_json::to_value(request)
12 .map_err(|e| anyhow::anyhow!("Failed to serialize request: {}", e))?;
13
14 self.conn.request("GetRaydiumQuotes", params).await
15 }
16
17 pub async fn get_raydium_cpmm_quotes(
18 &self,
19 request: &api::GetRaydiumCpmmQuotesRequest,
20 ) -> Result<api::GetRaydiumCpmmQuotesResponse> {
21 let params = serde_json::to_value(request)
22 .map_err(|e| anyhow::anyhow!("Failed to serialize request: {}", e))?;
23
24 self.conn.request("GetRaydiumCPMMQuotes", params).await
25 }
26
27 pub async fn get_raydium_clmm_quotes(
28 &self,
29 request: &api::GetRaydiumClmmQuotesRequest,
30 ) -> Result<api::GetRaydiumClmmQuotesResponse> {
31 let params = serde_json::to_value(request)
32 .map_err(|e| anyhow::anyhow!("Failed to serialize request: {}", e))?;
33
34 self.conn.request("GetRaydiumCLMMQuotes", params).await
35 }
36
37 pub async fn get_pump_fun_quotes(
38 &self,
39 request: &api::GetPumpFunQuotesRequest,
40 ) -> Result<api::GetPumpFunQuotesResponse> {
41 let params = serde_json::json!({
42 "quoteType": request.quote_type,
43 "mintAddress": request.mint_address,
44 "bondingCurveAddress": request.bonding_curve_address,
45 "amount": request.amount,
46 });
47
48 self.conn.request("GetPumpFunQuotes", params).await
49 }
50
51 pub async fn get_jupiter_quotes(
53 &self,
54 request: &api::GetJupiterQuotesRequest,
55 ) -> Result<api::GetJupiterQuotesResponse> {
56 let params = serde_json::json!({
57 "inToken": request.in_token,
58 "outToken": request.out_token,
59 "inAmount": request.in_amount,
60 "slippage": request.slippage,
61 });
62
63 self.conn.request("GetJupiterQuotes", params).await
64 }
65
66 pub async fn get_quotes(
67 &self,
68 request: &api::GetQuotesRequest,
69 ) -> Result<api::GetQuotesResponse> {
70 let params = serde_json::to_value(request)
71 .map_err(|e| anyhow::anyhow!("Failed to serialize request: {}", e))?;
72
73 self.conn.request("GetQuotes", params).await
74 }
75
76 pub async fn get_raydium_prices(
77 &self,
78 tokens: Vec<String>,
79 ) -> Result<api::GetRaydiumPricesResponse> {
80 let request = api::GetRaydiumPricesRequest { tokens };
81
82 self.conn.request("GetRaydiumPrices", json!(request)).await
83 }
84
85 pub async fn get_jupiter_prices(
86 &self,
87 tokens: Vec<String>,
88 ) -> Result<api::GetJupiterPricesResponse> {
89 let request = api::GetJupiterPricesRequest { tokens };
90
91 self.conn.request("GetJupiterPrices", json!(request)).await
92 }
93}