interface RateLimiterConfig {
    rpm: number;
    burst?: number;
    window?: number;
}
interface AdaptiveRateLimiterConfig extends RateLimiterConfig {
    backoffFactor?: number;
    recoveryFactor?: number;
    maxBackoff?: number;
}
interface QueueRequest {
    resolve: () => void;
    reject: (error: Error) => void;
    timestamp: number;
}
interface RateLimiterStatus {
    tokens: number;
    queueLength: number;
    rpm: number;
    burst: number;
}
export interface AdaptiveStatus extends RateLimiterStatus {
    consecutiveErrors: number;
    adaptedRpm: number;
    originalRpm: number;
}
export declare class RateLimiter {
    protected rpm: number;
    protected burst: number;
    protected window: number;
    protected interval: number;
    protected tokens: number;
    protected lastRefill: number;
    protected queue: QueueRequest[];
    constructor({ rpm, burst, window }: RateLimiterConfig);
    acquire(): Promise<void>;
    private processQueue;
    private refillTokens;
    getStatus(): RateLimiterStatus;
    reset(): void;
}
export declare class AdaptiveRateLimiter extends RateLimiter {
    private consecutiveErrors;
    private originalRpm;
    private backoffFactor;
    private recoveryFactor;
    private maxBackoff;
    constructor(config: AdaptiveRateLimiterConfig);
    onSuccess(): void;
    onError(error: Error): void;
    getAdaptiveStatus(): AdaptiveStatus;
}
export {};
//# sourceMappingURL=rate-limiter.d.ts.map