export declare class RateLimiter {
    private tokens;
    private lastRefill;
    private readonly maxTokens;
    private readonly refillRate;
    constructor(maxTokens: number, refillRate: number);
    private refill;
    consume(tokens?: number): Promise<void>;
    getAvailableTokens(): number;
}
declare const globalRateLimiter: RateLimiter;
export declare class ConcurrencyLimiter {
    private maxConcurrency;
    private activeCount;
    private pendingQueue;
    constructor(maxConcurrency: number);
    run<T>(fn: () => Promise<T>): Promise<T>;
    private processQueue;
    get active(): number;
    get pending(): number;
    clearQueue(): void;
}
declare const globalConcurrencyLimiter: ConcurrencyLimiter;
export declare function throttledRequest<T>(fn: () => Promise<T>, options?: {
    rateLimiter?: RateLimiter;
    concurrencyLimiter?: ConcurrencyLimiter;
}): Promise<T>;
export declare class AdaptiveRateLimiter {
    private baseRate;
    private maxTokens;
    private errorThreshold;
    private baseLimiter;
    private errorCount;
    private successCount;
    private lastErrorTime;
    private adaptationWindow;
    constructor(baseRate: number, maxTokens?: number, errorThreshold?: number);
    consume(): Promise<void>;
    onSuccess(): void;
    onError(): void;
    private adjustRate;
    getStats(): {
        errorCount: number;
        successCount: number;
        currentRate: number;
        availableTokens: number;
    };
}
export declare function rateLimit(intervalMs?: number): Promise<void>;
export { globalRateLimiter, globalConcurrencyLimiter };
//# sourceMappingURL=rate-limiter.d.ts.map