solana_trader_client_rust/provider/grpc/
quote.rs1use 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 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}