UNPKG

@dbs-portal/core-api

Version:

HTTP client and API utilities for DBS Portal

79 lines 2.01 kB
/** * Rate limiter for API requests */ import type { RateLimitConfig } from '../types'; /** * Token bucket rate limiter */ export declare class RateLimiter { private tokens; private lastRefill; private config; constructor(config: RateLimitConfig); /** * Acquires a token (waits if necessary) */ acquire(): Promise<void>; /** * Tries to acquire a token without waiting */ tryAcquire(): boolean; /** * Gets the current number of available tokens */ getAvailableTokens(): number; /** * Gets the time until next token is available */ getTimeUntilNextToken(): number; /** * Updates rate limit configuration */ updateConfig(config: Partial<RateLimitConfig>): void; /** * Gets current configuration */ getConfig(): RateLimitConfig; /** * Resets the rate limiter */ reset(): void; /** * Gets rate limiter statistics */ getStats(): { availableTokens: number; maxTokens: number; refillRate: number; timeUntilNextToken: number; }; /** * Refills tokens based on elapsed time */ private refillTokens; /** * Calculates wait time for next token */ private calculateWaitTime; /** * Creates a delay promise */ private delay; /** * Creates a rate limiter for requests per second */ static perSecond(requestsPerSecond: number): RateLimiter; /** * Creates a rate limiter for requests per minute */ static perMinute(requestsPerMinute: number): RateLimiter; /** * Creates a rate limiter for requests per hour */ static perHour(requestsPerHour: number): RateLimiter; /** * Creates a burst rate limiter (allows bursts up to maxBurst, then limits to sustainedRate) */ static burst(maxBurst: number, sustainedRate: number, perMilliseconds?: number): RateLimiter; } //# sourceMappingURL=rate-limiter.d.ts.map