import type { BroadcastServer } from './server'; declare interface Job { id: string data: T } declare interface JobContract { connection?: string queue?: string delay?: number tries?: number timeout?: number backoff?: [number, number] handle(context: unknown): Promise failed?(error: Error): void } export declare interface BroadcastQueueConfig { enabled?: boolean connection?: string defaultQueue?: string retry?: { attempts?: number backoff?: { type: 'fixed' | 'exponential' delay: number } } deadLetter?: { enabled?: boolean maxRetries?: number } } /** * Broadcast Job - queues a broadcast event for async delivery */ export declare class BroadcastJob implements JobContract { connection?: string; queue?: string; delay?: number; tries?: number; timeout?: number; backoff?: [number, number]; constructor(channel: string, event: string, data: unknown, excludeSocketId?: string | string[]); handle(server: BroadcastServer): Promise; failed(error: Error): void; } /** * Delayed Broadcast Job - schedules a broadcast for future delivery */ export declare class DelayedBroadcastJob extends BroadcastJob { constructor(channel: string, event: string, data: unknown, delayMs: number, excludeSocketId?: string | string[]); } /** * Recurring Broadcast Job - broadcasts at regular intervals */ export declare class RecurringBroadcastJob implements JobContract { connection?: string; queue?: string; delay?: number; tries?: number; timeout?: number; constructor(channel: string, event: string, dataFn: () => unknown | Promise, cronExpression: string); handle(server: BroadcastServer): Promise; failed(error: Error): void; } /** * Queue Manager for Broadcasting System */ export declare class BroadcastQueueManager { constructor(server: BroadcastServer, config?: BroadcastQueueConfig); queueBroadcast(channel: string | string[], event: string, data: unknown, options?: { delay?: number excludeSocketId?: string | string[] priority?: number }): Promise | Job[]>; scheduleRecurringBroadcast(channel: string, event: string, dataFn: () => unknown | Promise, cronExpression: string): Promise; cancelRecurringBroadcast(jobId: string): Promise; getStats(): Promise<{ waiting: number active: number completed: number failed: number delayed: number deadLetter: number } | null>; getFailedJobs(start?: number, end?: number): Promise[]>; getDeadLetterJobs(start?: number, end?: number): Promise[]>; retryJob(jobId: string): Promise | null>; republishDeadLetterJob(jobId: string, resetRetries?: boolean): Promise | null>; clearFailedJobs(): Promise; clearDeadLetterQueue(): Promise; isEnabled(): boolean; close(): Promise; }