/** * Queue service for managing API rate limits and concurrent requests */ import { IQueueService } from '../types'; /** * Queue service implementation using p-queue */ export declare class QueueService implements IQueueService { private queue; private readonly rateLimitPerMinute; constructor(); /** * Set up queue event listeners for monitoring */ private setupEventListeners; /** * Add a task to the queue */ add(task: () => Promise, priority?: number): Promise; /** * Pause the queue */ pause(): void; /** * Resume the queue */ resume(): void; /** * Clear all pending tasks */ clear(): void; /** * Get queue size (waiting tasks) */ size(): number; /** * Get number of pending tasks (running + waiting) */ pending(): number; /** * Check if queue is paused */ isPaused(): boolean; /** * Check if queue is idle */ isIdle(): boolean; /** * Wait for all tasks to complete */ onIdle(): Promise; /** * Wait for queue to be empty (no waiting tasks) */ onEmpty(): Promise; /** * Get queue statistics */ getStats(): { size: number; pending: number; isPaused: boolean; concurrency: number; rateLimitPerMinute: number; }; /** * Add multiple tasks as a batch */ addBatch(tasks: Array<() => Promise>, priority?: number): Promise; /** * Execute a task with retry logic */ addWithRetry(task: () => Promise, options?: { retries?: number; retryDelay?: number; priority?: number; onRetry?: (attempt: number, error: Error) => void; }): Promise; /** * Execute tasks with rate limiting per time window */ createRateLimitedExecutor(windowMs: number, maxRequests: number): (task: () => Promise) => Promise; /** * Shutdown the queue gracefully */ shutdown(): Promise; } export declare const queueService: QueueService; //# sourceMappingURL=queue.d.ts.map