solana_trader_client_rust/provider/grpc/
quote.rs

1use anyhow::Result;
2use solana_trader_proto::api;
3use tonic::Request;
4
5use super::GrpcClient;
6
7impl GrpcClient {
8    pub async fn get_raydium_quotes(
9        &mut self,
10        request: &api::GetRaydiumQuotesRequest,
11    ) -> Result<api::GetRaydiumQuotesResponse> {
12        let response = self
13            .client
14            .get_raydium_quotes(Request::new(request.clone()))
15            .await
16            .map_err(|e| anyhow::anyhow!("GetRaydiumQuotes error: {}", e))?;
17
18        Ok(response.into_inner())
19    }
20
21    pub async fn get_raydium_cpmm_quotes(
22        &mut self,
23        request: &api::GetRaydiumCpmmQuotesRequest,
24    ) -> Result<api::GetRaydiumCpmmQuotesResponse> {
25        let response = self
26            .client
27            .get_raydium_cpmm_quotes(Request::new(request.clone()))
28            .await
29            .map_err(|e| anyhow::anyhow!("GetRaydiumCPMMQuotes error: {}", e))?;
30
31        Ok(response.into_inner())
32    }
33
34    pub async fn get_raydium_clmm_quotes(
35        &mut self,
36        request: &api::GetRaydiumClmmQuotesRequest,
37    ) -> Result<api::GetRaydiumClmmQuotesResponse> {
38        let response = self
39            .client
40            .get_raydium_clmm_quotes(Request::new(request.clone()))
41            .await
42            .map_err(|e| anyhow::anyhow!("GetRaydiumCLMMQuotes error: {}", e))?;
43
44        Ok(response.into_inner())
45    }
46
47    pub async fn get_raydium_clmm_pools(
48        &mut self,
49        request: &api::GetRaydiumClmmPoolsRequest,
50    ) -> Result<api::GetRaydiumClmmPoolsResponse> {
51        let response = self
52            .client
53            .get_raydium_clmm_pools(Request::new(request.clone()))
54            .await
55            .map_err(|e| anyhow::anyhow!("GetRaydiumClmmPools error: {}", e))?;
56
57        Ok(response.into_inner())
58    }
59
60    pub async fn get_raydium_pool_reserve(
61        &mut self,
62        request: &api::GetRaydiumPoolReserveRequest,
63    ) -> Result<api::GetRaydiumPoolReserveResponse> {
64        let response = self
65            .client
66            .get_raydium_pool_reserve(Request::new(request.clone()))
67            .await
68            .map_err(|e| anyhow::anyhow!("GetRaydiumPoolReserve error: {}", e))?;
69
70        Ok(response.into_inner())
71    }
72
73    pub async fn get_raydium_pools(
74        &mut self,
75        request: &api::GetRaydiumPoolsRequest,
76    ) -> Result<api::GetRaydiumPoolsResponse> {
77        let response = self
78            .client
79            .get_raydium_pools(Request::new(request.clone()))
80            .await
81            .map_err(|e| anyhow::anyhow!("GetRaydiumPools error: {}", e))?;
82
83        Ok(response.into_inner())
84    }
85    
86    pub async fn get_pump_fun_quotes(
87        &mut self,
88        request: &api::GetPumpFunQuotesRequest,
89    ) -> Result<api::GetPumpFunQuotesResponse> {
90        let response = self
91            .client
92            .get_pump_fun_quotes(Request::new(request.clone()))
93            .await
94            .map_err(|e| anyhow::anyhow!("GetPumpFunQuotes error: {}", e))?;
95
96        Ok(response.into_inner())
97    }
98
99    pub async fn get_pump_fun_amm_quotes(
100        &mut self,
101        request: &api::GetPumpFunAmmQuotesRequest,
102    ) -> Result<api::GetPumpFunAmmQuotesResponse> {
103        let response = self
104            .client
105            .get_pump_fun_amm_quotes(Request::new(request.clone()))
106            .await
107            .map_err(|e| anyhow::anyhow!("GetPumpFunAmmQuotes error: {}", e))?;
108
109        Ok(response.into_inner())
110    }
111
112    // NOTE: Fast mode is not used as of 11/1/24, breaks the endpoint.
113    pub async fn get_jupiter_quotes(
114        &mut self,
115        request: &api::GetJupiterQuotesRequest,
116    ) -> Result<api::GetJupiterQuotesResponse> {
117        let req = Request::new(request.clone());
118
119        let response = self
120            .client
121            .get_jupiter_quotes(req)
122            .await
123            .map_err(|e| anyhow::anyhow!("GetJupiterQuotes error: {}", e))?;
124
125        Ok(response.into_inner())
126    }
127
128    pub async fn get_quotes(
129        &mut self,
130        request: &api::GetQuotesRequest,
131    ) -> Result<api::GetQuotesResponse> {
132        let response = self
133            .client
134            .get_quotes(Request::new(request.clone()))
135            .await
136            .map_err(|e| anyhow::anyhow!("GetQuotes error: {}", e))?;
137
138        Ok(response.into_inner())
139    }
140
141    pub async fn get_raydium_prices(
142        &mut self,
143        tokens: Vec<String>,
144    ) -> Result<api::GetRaydiumPricesResponse> {
145        let request = Request::new(api::GetRaydiumPricesRequest { tokens });
146
147        let response = self
148            .client
149            .get_raydium_prices(request)
150            .await
151            .map_err(|e| anyhow::anyhow!("GetRaydiumPrices error: {}", e))?;
152
153        Ok(response.into_inner())
154    }
155
156    pub async fn get_jupiter_prices(
157        &mut self,
158        tokens: Vec<String>,
159    ) -> Result<api::GetJupiterPricesResponse> {
160        let request = Request::new(api::GetJupiterPricesRequest { tokens });
161
162        let response = self
163            .client
164            .get_jupiter_prices(request)
165            .await
166            .map_err(|e| anyhow::anyhow!("GetJupiterPrices error: {}", e))?;
167
168        Ok(response.into_inner())
169    }
170}