kraken_api_client/spot/rest/private/
mod.rs1mod types;
6
7pub use types::*;
8
9use crate::error::KrakenError;
10use crate::spot::rest::SpotRestClient;
11use crate::spot::rest::endpoints::private;
12
13impl SpotRestClient {
14 pub async fn get_account_balance(
38 &self,
39 ) -> Result<std::collections::HashMap<String, rust_decimal::Decimal>, KrakenError> {
40 #[derive(serde::Serialize)]
41 struct Empty {}
42 self.private_post(private::BALANCE, &Empty {}).await
43 }
44
45 pub async fn get_extended_balance(&self) -> Result<ExtendedBalances, KrakenError> {
47 #[derive(serde::Serialize)]
48 struct Empty {}
49 self.private_post(private::BALANCE_EX, &Empty {}).await
50 }
51
52 pub async fn get_trade_balance(
56 &self,
57 request: Option<&TradeBalanceRequest>,
58 ) -> Result<TradeBalance, KrakenError> {
59 match request {
60 Some(req) => self.private_post(private::TRADE_BALANCE, req).await,
61 None => {
62 #[derive(serde::Serialize)]
63 struct Empty {}
64 self.private_post(private::TRADE_BALANCE, &Empty {}).await
65 }
66 }
67 }
68
69 pub async fn get_open_orders(
71 &self,
72 request: Option<&OpenOrdersRequest>,
73 ) -> Result<OpenOrders, KrakenError> {
74 match request {
75 Some(req) => self.private_post(private::OPEN_ORDERS, req).await,
76 None => {
77 #[derive(serde::Serialize)]
78 struct Empty {}
79 self.private_post(private::OPEN_ORDERS, &Empty {}).await
80 }
81 }
82 }
83
84 pub async fn get_closed_orders(
86 &self,
87 request: Option<&ClosedOrdersRequest>,
88 ) -> Result<ClosedOrders, KrakenError> {
89 match request {
90 Some(req) => self.private_post(private::CLOSED_ORDERS, req).await,
91 None => {
92 #[derive(serde::Serialize)]
93 struct Empty {}
94 self.private_post(private::CLOSED_ORDERS, &Empty {}).await
95 }
96 }
97 }
98
99 pub async fn query_orders(
101 &self,
102 request: &QueryOrdersRequest,
103 ) -> Result<std::collections::HashMap<String, Order>, KrakenError> {
104 self.private_post(private::QUERY_ORDERS, request).await
105 }
106
107 pub async fn get_trades_history(
109 &self,
110 request: Option<&TradesHistoryRequest>,
111 ) -> Result<TradesHistory, KrakenError> {
112 match request {
113 Some(req) => self.private_post(private::TRADES_HISTORY, req).await,
114 None => {
115 #[derive(serde::Serialize)]
116 struct Empty {}
117 self.private_post(private::TRADES_HISTORY, &Empty {}).await
118 }
119 }
120 }
121
122 pub async fn get_open_positions(
124 &self,
125 request: Option<&OpenPositionsRequest>,
126 ) -> Result<std::collections::HashMap<String, Position>, KrakenError> {
127 match request {
128 Some(req) => self.private_post(private::OPEN_POSITIONS, req).await,
129 None => {
130 #[derive(serde::Serialize)]
131 struct Empty {}
132 self.private_post(private::OPEN_POSITIONS, &Empty {}).await
133 }
134 }
135 }
136
137 pub async fn get_ledgers(
139 &self,
140 request: Option<&LedgersRequest>,
141 ) -> Result<LedgersInfo, KrakenError> {
142 match request {
143 Some(req) => self.private_post(private::LEDGERS, req).await,
144 None => {
145 #[derive(serde::Serialize)]
146 struct Empty {}
147 self.private_post(private::LEDGERS, &Empty {}).await
148 }
149 }
150 }
151
152 pub async fn get_trade_volume(
154 &self,
155 request: Option<&TradeVolumeRequest>,
156 ) -> Result<TradeVolume, KrakenError> {
157 match request {
158 Some(req) => self.private_post(private::TRADE_VOLUME, req).await,
159 None => {
160 #[derive(serde::Serialize)]
161 struct Empty {}
162 self.private_post(private::TRADE_VOLUME, &Empty {}).await
163 }
164 }
165 }
166
167 pub async fn get_deposit_methods(
171 &self,
172 request: &DepositMethodsRequest,
173 ) -> Result<Vec<DepositMethod>, KrakenError> {
174 self.private_post(private::DEPOSIT_METHODS, request).await
175 }
176
177 pub async fn get_deposit_addresses(
179 &self,
180 request: &DepositAddressesRequest,
181 ) -> Result<Vec<DepositAddress>, KrakenError> {
182 self.private_post(private::DEPOSIT_ADDRESSES, request).await
183 }
184
185 pub async fn get_deposit_status(
187 &self,
188 request: Option<&DepositStatusRequest>,
189 ) -> Result<DepositWithdrawStatusResponse, KrakenError> {
190 match request {
191 Some(req) => self.private_post(private::DEPOSIT_STATUS, req).await,
192 None => {
193 #[derive(serde::Serialize)]
194 struct Empty {}
195 self.private_post(private::DEPOSIT_STATUS, &Empty {}).await
196 }
197 }
198 }
199
200 pub async fn get_withdraw_methods(
202 &self,
203 request: Option<&WithdrawMethodsRequest>,
204 ) -> Result<Vec<WithdrawMethod>, KrakenError> {
205 match request {
206 Some(req) => self.private_post(private::WITHDRAW_METHODS, req).await,
207 None => {
208 #[derive(serde::Serialize)]
209 struct Empty {}
210 self.private_post(private::WITHDRAW_METHODS, &Empty {})
211 .await
212 }
213 }
214 }
215
216 pub async fn get_withdraw_addresses(
218 &self,
219 request: Option<&WithdrawAddressesRequest>,
220 ) -> Result<Vec<WithdrawalAddress>, KrakenError> {
221 match request {
222 Some(req) => self.private_post(private::WITHDRAW_ADDRESSES, req).await,
223 None => {
224 #[derive(serde::Serialize)]
225 struct Empty {}
226 self.private_post(private::WITHDRAW_ADDRESSES, &Empty {})
227 .await
228 }
229 }
230 }
231
232 pub async fn get_withdraw_info(
234 &self,
235 request: &WithdrawInfoRequest,
236 ) -> Result<WithdrawInfo, KrakenError> {
237 self.private_post(private::WITHDRAW_INFO, request).await
238 }
239
240 pub async fn withdraw_funds(
242 &self,
243 request: &WithdrawRequest,
244 ) -> Result<ConfirmationRefId, KrakenError> {
245 self.private_post(private::WITHDRAW, request).await
246 }
247
248 pub async fn get_withdraw_status(
250 &self,
251 request: Option<&WithdrawStatusRequest>,
252 ) -> Result<DepositWithdrawStatusResponse, KrakenError> {
253 match request {
254 Some(req) => self.private_post(private::WITHDRAW_STATUS, req).await,
255 None => {
256 #[derive(serde::Serialize)]
257 struct Empty {}
258 self.private_post(private::WITHDRAW_STATUS, &Empty {}).await
259 }
260 }
261 }
262
263 pub async fn withdraw_cancel(
265 &self,
266 request: &WithdrawCancelRequest,
267 ) -> Result<bool, KrakenError> {
268 self.private_post(private::WITHDRAW_CANCEL, request).await
269 }
270
271 pub async fn wallet_transfer(
273 &self,
274 request: &WalletTransferRequest,
275 ) -> Result<ConfirmationRefId, KrakenError> {
276 self.private_post(private::WALLET_TRANSFER, request).await
277 }
278
279 pub async fn earn_allocate(&self, request: &EarnAllocateRequest) -> Result<bool, KrakenError> {
283 self.private_post(private::EARN_ALLOCATE, request).await
284 }
285
286 pub async fn earn_deallocate(
288 &self,
289 request: &EarnAllocateRequest,
290 ) -> Result<bool, KrakenError> {
291 self.private_post(private::EARN_DEALLOCATE, request).await
292 }
293
294 pub async fn get_earn_allocation_status(
296 &self,
297 request: &EarnAllocationStatusRequest,
298 ) -> Result<AllocationStatus, KrakenError> {
299 self.private_post(private::EARN_ALLOCATE_STATUS, request)
300 .await
301 }
302
303 pub async fn get_earn_deallocation_status(
305 &self,
306 request: &EarnAllocationStatusRequest,
307 ) -> Result<AllocationStatus, KrakenError> {
308 self.private_post(private::EARN_DEALLOCATE_STATUS, request)
309 .await
310 }
311
312 pub async fn list_earn_strategies(
314 &self,
315 request: Option<&EarnStrategiesRequest>,
316 ) -> Result<EarnStrategies, KrakenError> {
317 match request {
318 Some(req) => self.private_post(private::EARN_STRATEGIES, req).await,
319 None => {
320 #[derive(serde::Serialize)]
321 struct Empty {}
322 self.private_post(private::EARN_STRATEGIES, &Empty {}).await
323 }
324 }
325 }
326
327 pub async fn list_earn_allocations(
329 &self,
330 request: Option<&EarnAllocationsRequest>,
331 ) -> Result<EarnAllocations, KrakenError> {
332 match request {
333 Some(req) => self.private_post(private::EARN_ALLOCATIONS, req).await,
334 None => {
335 #[derive(serde::Serialize)]
336 struct Empty {}
337 self.private_post(private::EARN_ALLOCATIONS, &Empty {})
338 .await
339 }
340 }
341 }
342
343 pub async fn add_order(
375 &self,
376 request: &AddOrderRequest,
377 ) -> Result<AddOrderResponse, KrakenError> {
378 self.private_post(private::ADD_ORDER, request).await
379 }
380
381 pub async fn cancel_order(
383 &self,
384 request: &CancelOrderRequest,
385 ) -> Result<CancelOrderResponse, KrakenError> {
386 self.private_post(private::CANCEL_ORDER, request).await
387 }
388
389 pub async fn cancel_all_orders(&self) -> Result<CancelOrderResponse, KrakenError> {
391 #[derive(serde::Serialize)]
392 struct Empty {}
393 self.private_post(private::CANCEL_ALL, &Empty {}).await
394 }
395
396 pub async fn get_websocket_token(&self) -> Result<WebSocketToken, KrakenError> {
401 #[derive(serde::Serialize)]
402 struct Empty {}
403 self.private_post(private::GET_WEBSOCKETS_TOKEN, &Empty {})
404 .await
405 }
406}