@dbs-portal/core-api
Version:
HTTP client and API utilities for DBS Portal
79 lines • 2.01 kB
TypeScript
/**
* 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