/** * Rate Limit Handler * * Handles rate limit events from AI Provider and pauses workers. */ import { EventEmitter } from 'events'; import type { RateLimitInfo } from '../types.js'; /** * Rate Limit Handler Events */ export interface RateLimitHandlerEvents { 'rate_limit:detected': RateLimitInfo; 'rate_limit:cleared': void; 'rate_limit:workers_should_pause': void; 'rate_limit:workers_can_resume': void; } /** * Rate Limit Handler */ export declare class RateLimitHandler extends EventEmitter { private isRateLimited; private rateLimitInfo?; private autoResumeTimeout?; private resumeCheckInterval?; private subscribed; /** * Default backoff time when rate limited (5 minutes) */ private backoffMs; /** * Bound event handlers (stored to enable proper unsubscription) */ private boundHandleRateLimitHit; private boundHandleRateLimitCleared; /** * Subscribe to AI Provider rate limit events */ subscribe(): void; /** * Unsubscribe from AI Provider events */ unsubscribe(): void; /** * Handle rate limit hit event */ private handleRateLimitHit; /** * Handle rate limit cleared event */ private handleRateLimitCleared; /** * Schedule a check to see if we can resume */ private scheduleResumeCheck; /** * Attempt to resume after backoff */ private attemptResume; /** * Clear rate limit state */ clearRateLimit(): void; /** * Clear all timers */ private clearTimers; /** * Manually trigger rate limit (e.g., from failure detection) */ triggerRateLimit(message: string, backoffMs?: number): void; /** * Check if currently rate limited */ isCurrentlyRateLimited(): boolean; /** * Get rate limit info */ getRateLimitInfo(): RateLimitInfo | undefined; /** * Get estimated time until resume */ getEstimatedResumeTime(): Date | undefined; /** * Get remaining backoff time in ms */ getRemainingBackoffMs(): number; /** * Update backoff duration */ setBackoffMs(ms: number): void; /** * Get backoff duration */ getBackoffMs(): number; /** * Force resume (skip backoff) */ forceResume(): void; /** * Destroy handler and cleanup */ destroy(): void; } /** * Create a rate limit handler instance */ export declare function createRateLimitHandler(): RateLimitHandler; //# sourceMappingURL=rate-limit-handler.d.ts.map