export interface RateLimitConfig {
    searchDelay?: number;
    downloadDelay?: number;
    maxConcurrent?: number;
    cooldownAfterError?: number;
}
export declare class RateLimiter {
    private queue;
    private logger;
    private lastSearchTime;
    private lastDownloadTime;
    private config;
    private static instance;
    private errorCount;
    constructor(config?: RateLimitConfig);
    static getInstance(config?: RateLimitConfig): RateLimiter;
    waitForSearchDelay(): Promise<void>;
    waitForDownloadDelay(): Promise<void>;
    handleError(): Promise<void>;
    executeSearch<T>(fn: () => Promise<T>): Promise<T>;
    executeDownload<T>(fn: () => Promise<T>): Promise<T>;
    private delay;
    getQueueSize(): number;
    getPendingCount(): number;
    onIdle(): Promise<void>;
    clear(): void;
    pause(): void;
    resume(): void;
    static reset(): void;
}
//# sourceMappingURL=rate-limiter.d.ts.map