/** * SMI-645: WebhookQueue - Queue webhook events for processing * * Provides: * - Priority queue for webhook events * - Debouncing for rapid updates to the same repository * - Retry mechanism for failed processing * - Processing with configurable concurrency */ export type { QueueItemType, QueuePriority, WebhookQueueItem, QueueProcessResult, QueueStats, WebhookQueueOptions, } from './WebhookQueue.types.js'; import type { WebhookQueueItem, QueueStats, WebhookQueueOptions } from './WebhookQueue.types.js'; /** * Webhook event queue with priority, debouncing, and retry support */ export declare class WebhookQueue { private items; private processing; private debounceTimers; private isProcessing; private processingPromise; private concurrency; private debounceMs; private maxRetries; private retryDelayMs; private maxSize; private processor?; private onProcessed?; private log; private deadLetterSink?; constructor(options?: WebhookQueueOptions); /** * Add an item to the queue * Returns true if added, false if debounced or queue full */ add(item: WebhookQueueItem): Promise; /** * Add an item immediately without debouncing */ addImmediate(item: WebhookQueueItem): boolean; /** * Remove an item from the queue */ remove(id: string): boolean; /** * Get the next item to process based on priority */ private getNextItem; /** * Trigger processing if not already running */ private triggerProcessing; /** * Process items in the queue */ private processQueue; /** * Process a single item */ private processItem; /** * Get queue statistics */ getStats(): QueueStats; /** * Get all items in the queue */ getItems(): WebhookQueueItem[]; /** * Clear all items from the queue */ clear(): void; /** * Wait for all current processing to complete */ waitForProcessing(): Promise; /** * Set the processor function */ setProcessor(processor: (item: WebhookQueueItem) => Promise): void; /** * Check if queue has pending items */ hasPendingItems(): boolean; /** * Get count of items being processed */ getProcessingCount(): number; } export default WebhookQueue; //# sourceMappingURL=WebhookQueue.d.ts.map