pub struct RateLimitedClient<C> { /* private fields */ }Expand description
A rate-limited wrapper around any KrakenClient implementation.
This wrapper automatically handles:
- Public endpoint rate limits (sliding window)
- Private endpoint rate limits (token bucket, tier-based)
- Trading rate limits with order lifetime penalties
§Example
ⓘ
use kraken_api_client::spot::rest::SpotRestClient;
use kraken_api_client::rate_limit::{RateLimitedClient, RateLimitConfig};
let client = SpotRestClient::new();
let rate_limited = RateLimitedClient::new(client, RateLimitConfig::default());
// Requests are automatically rate limited
let time = rate_limited.get_server_time().await?;Implementations§
Source§impl<C> RateLimitedClient<C>
impl<C> RateLimitedClient<C>
Sourcepub fn new(inner: C, config: RateLimitConfig) -> Self
pub fn new(inner: C, config: RateLimitConfig) -> Self
Create a new rate-limited client wrapper.
Sourcepub fn with_tier(inner: C, tier: VerificationTier) -> Self
pub fn with_tier(inner: C, tier: VerificationTier) -> Self
Create a new rate-limited client with a specific verification tier.
Sourcepub fn config(&self) -> &RateLimitConfig
pub fn config(&self) -> &RateLimitConfig
Get the current configuration.
Sourcepub fn set_enabled(&mut self, enabled: bool)
pub fn set_enabled(&mut self, enabled: bool)
Enable or disable rate limiting.
Trait Implementations§
Source§impl<C: Clone> Clone for RateLimitedClient<C>
impl<C: Clone> Clone for RateLimitedClient<C>
Source§impl<C: Debug> Debug for RateLimitedClient<C>
impl<C: Debug> Debug for RateLimitedClient<C>
Source§impl<C: KrakenClient> KrakenClient for RateLimitedClient<C>
impl<C: KrakenClient> KrakenClient for RateLimitedClient<C>
Source§async fn get_server_time(&self) -> Result<ServerTime, KrakenError>
async fn get_server_time(&self) -> Result<ServerTime, KrakenError>
Get the server time.
Source§async fn get_system_status(&self) -> Result<SystemStatus, KrakenError>
async fn get_system_status(&self) -> Result<SystemStatus, KrakenError>
Get the system status.
Source§async fn get_assets(
&self,
request: Option<&AssetInfoRequest>,
) -> Result<HashMap<String, AssetInfo>, KrakenError>
async fn get_assets( &self, request: Option<&AssetInfoRequest>, ) -> Result<HashMap<String, AssetInfo>, KrakenError>
Get asset information.
Source§async fn get_asset_pairs(
&self,
request: Option<&AssetPairsRequest>,
) -> Result<HashMap<String, AssetPair>, KrakenError>
async fn get_asset_pairs( &self, request: Option<&AssetPairsRequest>, ) -> Result<HashMap<String, AssetPair>, KrakenError>
Get tradable asset pairs.
Source§async fn get_ticker(
&self,
pairs: &str,
) -> Result<HashMap<String, TickerInfo>, KrakenError>
async fn get_ticker( &self, pairs: &str, ) -> Result<HashMap<String, TickerInfo>, KrakenError>
Get ticker information for one or more pairs.
Source§async fn get_ohlc(
&self,
request: &OhlcRequest,
) -> Result<OhlcResponse, KrakenError>
async fn get_ohlc( &self, request: &OhlcRequest, ) -> Result<OhlcResponse, KrakenError>
Get OHLC (candlestick) data.
Source§async fn get_order_book(
&self,
request: &OrderBookRequest,
) -> Result<HashMap<String, OrderBook>, KrakenError>
async fn get_order_book( &self, request: &OrderBookRequest, ) -> Result<HashMap<String, OrderBook>, KrakenError>
Get order book for a pair.
Source§async fn get_recent_trades(
&self,
request: &RecentTradesRequest,
) -> Result<RecentTradesResponse, KrakenError>
async fn get_recent_trades( &self, request: &RecentTradesRequest, ) -> Result<RecentTradesResponse, KrakenError>
Get recent trades for a pair.
Source§async fn get_recent_spreads(
&self,
request: &RecentSpreadsRequest,
) -> Result<RecentSpreadsResponse, KrakenError>
async fn get_recent_spreads( &self, request: &RecentSpreadsRequest, ) -> Result<RecentSpreadsResponse, KrakenError>
Get recent spreads for a pair.
Source§async fn get_account_balance(
&self,
) -> Result<HashMap<String, Decimal>, KrakenError>
async fn get_account_balance( &self, ) -> Result<HashMap<String, Decimal>, KrakenError>
Get account balance.
Source§async fn get_extended_balance(&self) -> Result<ExtendedBalances, KrakenError>
async fn get_extended_balance(&self) -> Result<ExtendedBalances, KrakenError>
Get extended balance with hold amounts.
Source§async fn get_trade_balance(
&self,
request: Option<&TradeBalanceRequest>,
) -> Result<TradeBalance, KrakenError>
async fn get_trade_balance( &self, request: Option<&TradeBalanceRequest>, ) -> Result<TradeBalance, KrakenError>
Get trade balance (margin account details).
Source§async fn get_open_orders(
&self,
request: Option<&OpenOrdersRequest>,
) -> Result<OpenOrders, KrakenError>
async fn get_open_orders( &self, request: Option<&OpenOrdersRequest>, ) -> Result<OpenOrders, KrakenError>
Get open orders.
Source§async fn get_closed_orders(
&self,
request: Option<&ClosedOrdersRequest>,
) -> Result<ClosedOrders, KrakenError>
async fn get_closed_orders( &self, request: Option<&ClosedOrdersRequest>, ) -> Result<ClosedOrders, KrakenError>
Get closed orders.
Source§async fn query_orders(
&self,
request: &QueryOrdersRequest,
) -> Result<HashMap<String, Order>, KrakenError>
async fn query_orders( &self, request: &QueryOrdersRequest, ) -> Result<HashMap<String, Order>, KrakenError>
Query specific orders by ID.
Source§async fn get_trades_history(
&self,
request: Option<&TradesHistoryRequest>,
) -> Result<TradesHistory, KrakenError>
async fn get_trades_history( &self, request: Option<&TradesHistoryRequest>, ) -> Result<TradesHistory, KrakenError>
Get trades history.
Source§async fn get_open_positions(
&self,
request: Option<&OpenPositionsRequest>,
) -> Result<HashMap<String, Position>, KrakenError>
async fn get_open_positions( &self, request: Option<&OpenPositionsRequest>, ) -> Result<HashMap<String, Position>, KrakenError>
Get open positions.
Source§async fn get_ledgers(
&self,
request: Option<&LedgersRequest>,
) -> Result<LedgersInfo, KrakenError>
async fn get_ledgers( &self, request: Option<&LedgersRequest>, ) -> Result<LedgersInfo, KrakenError>
Get ledger entries.
Source§async fn get_trade_volume(
&self,
request: Option<&TradeVolumeRequest>,
) -> Result<TradeVolume, KrakenError>
async fn get_trade_volume( &self, request: Option<&TradeVolumeRequest>, ) -> Result<TradeVolume, KrakenError>
Get trade volume and fee info.
Source§async fn get_deposit_methods(
&self,
request: &DepositMethodsRequest,
) -> Result<Vec<DepositMethod>, KrakenError>
async fn get_deposit_methods( &self, request: &DepositMethodsRequest, ) -> Result<Vec<DepositMethod>, KrakenError>
Get available deposit methods.
Source§async fn get_deposit_addresses(
&self,
request: &DepositAddressesRequest,
) -> Result<Vec<DepositAddress>, KrakenError>
async fn get_deposit_addresses( &self, request: &DepositAddressesRequest, ) -> Result<Vec<DepositAddress>, KrakenError>
Get deposit addresses.
Source§async fn get_deposit_status(
&self,
request: Option<&DepositStatusRequest>,
) -> Result<DepositWithdrawStatusResponse, KrakenError>
async fn get_deposit_status( &self, request: Option<&DepositStatusRequest>, ) -> Result<DepositWithdrawStatusResponse, KrakenError>
Get deposit status.
Source§async fn get_withdraw_methods(
&self,
request: Option<&WithdrawMethodsRequest>,
) -> Result<Vec<WithdrawMethod>, KrakenError>
async fn get_withdraw_methods( &self, request: Option<&WithdrawMethodsRequest>, ) -> Result<Vec<WithdrawMethod>, KrakenError>
Get available withdrawal methods.
Source§async fn get_withdraw_addresses(
&self,
request: Option<&WithdrawAddressesRequest>,
) -> Result<Vec<WithdrawalAddress>, KrakenError>
async fn get_withdraw_addresses( &self, request: Option<&WithdrawAddressesRequest>, ) -> Result<Vec<WithdrawalAddress>, KrakenError>
Get withdrawal addresses.
Source§async fn get_withdraw_info(
&self,
request: &WithdrawInfoRequest,
) -> Result<WithdrawInfo, KrakenError>
async fn get_withdraw_info( &self, request: &WithdrawInfoRequest, ) -> Result<WithdrawInfo, KrakenError>
Get withdrawal info.
Source§async fn withdraw_funds(
&self,
request: &WithdrawRequest,
) -> Result<ConfirmationRefId, KrakenError>
async fn withdraw_funds( &self, request: &WithdrawRequest, ) -> Result<ConfirmationRefId, KrakenError>
Withdraw funds.
Source§async fn get_withdraw_status(
&self,
request: Option<&WithdrawStatusRequest>,
) -> Result<DepositWithdrawStatusResponse, KrakenError>
async fn get_withdraw_status( &self, request: Option<&WithdrawStatusRequest>, ) -> Result<DepositWithdrawStatusResponse, KrakenError>
Get withdrawal status.
Source§async fn withdraw_cancel(
&self,
request: &WithdrawCancelRequest,
) -> Result<bool, KrakenError>
async fn withdraw_cancel( &self, request: &WithdrawCancelRequest, ) -> Result<bool, KrakenError>
Cancel a withdrawal.
Source§async fn wallet_transfer(
&self,
request: &WalletTransferRequest,
) -> Result<ConfirmationRefId, KrakenError>
async fn wallet_transfer( &self, request: &WalletTransferRequest, ) -> Result<ConfirmationRefId, KrakenError>
Transfer funds between wallets.
Source§async fn earn_allocate(
&self,
request: &EarnAllocateRequest,
) -> Result<bool, KrakenError>
async fn earn_allocate( &self, request: &EarnAllocateRequest, ) -> Result<bool, KrakenError>
Allocate funds to an earn strategy.
Source§async fn earn_deallocate(
&self,
request: &EarnAllocateRequest,
) -> Result<bool, KrakenError>
async fn earn_deallocate( &self, request: &EarnAllocateRequest, ) -> Result<bool, KrakenError>
Deallocate funds from an earn strategy.
Source§async fn get_earn_allocation_status(
&self,
request: &EarnAllocationStatusRequest,
) -> Result<AllocationStatus, KrakenError>
async fn get_earn_allocation_status( &self, request: &EarnAllocationStatusRequest, ) -> Result<AllocationStatus, KrakenError>
Get earn allocation status.
Source§async fn get_earn_deallocation_status(
&self,
request: &EarnAllocationStatusRequest,
) -> Result<AllocationStatus, KrakenError>
async fn get_earn_deallocation_status( &self, request: &EarnAllocationStatusRequest, ) -> Result<AllocationStatus, KrakenError>
Get earn deallocation status.
Source§async fn list_earn_strategies(
&self,
request: Option<&EarnStrategiesRequest>,
) -> Result<EarnStrategies, KrakenError>
async fn list_earn_strategies( &self, request: Option<&EarnStrategiesRequest>, ) -> Result<EarnStrategies, KrakenError>
List earn strategies.
Source§async fn list_earn_allocations(
&self,
request: Option<&EarnAllocationsRequest>,
) -> Result<EarnAllocations, KrakenError>
async fn list_earn_allocations( &self, request: Option<&EarnAllocationsRequest>, ) -> Result<EarnAllocations, KrakenError>
List earn allocations.
Source§async fn add_order(
&self,
request: &AddOrderRequest,
) -> Result<AddOrderResponse, KrakenError>
async fn add_order( &self, request: &AddOrderRequest, ) -> Result<AddOrderResponse, KrakenError>
Add a new order.
Source§async fn cancel_order(
&self,
request: &CancelOrderRequest,
) -> Result<CancelOrderResponse, KrakenError>
async fn cancel_order( &self, request: &CancelOrderRequest, ) -> Result<CancelOrderResponse, KrakenError>
Cancel an order.
Source§async fn cancel_all_orders(&self) -> Result<CancelOrderResponse, KrakenError>
async fn cancel_all_orders(&self) -> Result<CancelOrderResponse, KrakenError>
Cancel all open orders.
Source§async fn get_websocket_token(&self) -> Result<WebSocketToken, KrakenError>
async fn get_websocket_token(&self) -> Result<WebSocketToken, KrakenError>
Get a WebSocket authentication token.
Auto Trait Implementations§
impl<C> Freeze for RateLimitedClient<C>where
C: Freeze,
impl<C> !RefUnwindSafe for RateLimitedClient<C>
impl<C> Send for RateLimitedClient<C>where
C: Send,
impl<C> Sync for RateLimitedClient<C>where
C: Sync,
impl<C> Unpin for RateLimitedClient<C>where
C: Unpin,
impl<C> !UnwindSafe for RateLimitedClient<C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more