import { Repository } from 'typeorm'; import { NotificationQueue, NotificationLog, Notification, NotificationChannel } from '../entities'; export interface QueueItem { id: string; notification_id: string; channel: NotificationChannel; priority_value: number; attempts: number; notification: Notification; } export interface QueueStats { queued: number; processing: number; sent: number; failed: number; retrying: number; } export declare class NotificationQueueService { private readonly queueRepository; private readonly logRepository; private readonly notificationRepository; private readonly logger; constructor(queueRepository: Repository, logRepository: Repository, notificationRepository: Repository); enqueue(notificationId: string, channel: NotificationChannel, priority?: 'low' | 'normal' | 'high' | 'urgent', scheduledFor?: Date): Promise; enqueueBatch(notificationId: string, channels: NotificationChannel[], priority?: 'low' | 'normal' | 'high' | 'urgent'): Promise; getPendingItems(limit?: number, channel?: NotificationChannel): Promise; markAsProcessing(queueId: string): Promise; markAsSent(queueId: string, provider?: string, providerMessageId?: string, providerResponse?: Record): Promise; markAsFailed(queueId: string, errorMessage: string, provider?: string): Promise; getStats(): Promise; getStatsByChannel(): Promise>; cleanupOldItems(daysToKeep?: number): Promise; cancelPending(notificationId: string): Promise; private getPriorityValue; }