/**
 * @fileoverview Rate limiter for API requests.
 *
 * This module provides a rate limiter for API requests to prevent
 * exceeding API rate limits. It uses a simple token bucket algorithm
 * to limit the number of requests per second.
 */
/**
 * Rate limiter options
 */
interface RateLimiterOptions {
    /**
     * Maximum number of tokens in the bucket
     */
    bucketSize: number;
    /**
     * Number of tokens added per second
     */
    tokensPerSecond: number;
    /**
     * Initial number of tokens in the bucket
     */
    initialTokens?: number;
}
/**
 * Rate limiter for API requests
 */
export declare class RateLimiter {
    private bucketSize;
    private tokensPerSecond;
    private tokens;
    private lastRefillTime;
    private waitQueue;
    /**
     * Create a new rate limiter
     * @param options Rate limiter options
     */
    constructor(options: RateLimiterOptions);
    /**
     * Refill the token bucket based on elapsed time
     */
    private refill;
    /**
     * Process the wait queue
     */
    private processQueue;
    /**
     * Acquire a token from the bucket
     * @param timeoutMs Timeout in milliseconds
     * @returns Promise that resolves when a token is acquired
     */
    acquire(timeoutMs?: number): Promise<void>;
    /**
     * Get the current number of tokens in the bucket
     * @returns Number of tokens
     */
    getTokens(): number;
    /**
     * Get the current queue length
     * @returns Queue length
     */
    getQueueLength(): number;
}
/**
 * Global rate limiter instance
 */
export declare const globalRateLimiter: RateLimiter;
export {};
