import { NotificationGroup, NotificationConfig, NotifyMessageOptions, NotifyMessageStackGroup } from '../../../shared/types/message'; type NotificationGroupListener = (groups: Record) => void; /** * Servicio de notificaciones agrupadas por `stackKey` (`primary` / `secondary` / `auto`), cola antigua → reciente * y `stackMax`. El temporizador y la barra de progreso aplican solo a la **más reciente**; al expirar se vacía * el mazo entero (`dismissStack`). `dismiss(id)` sobre la más reciente equivale a vaciar el mazo; sobre otra * entrada solo retira esa. `dismissGroup` / `dismissStack` vacían mazos con animación. */ declare class NotificationService { private listeners; private idCounter; private groups; private timers; private progressIntervals; private removeTimers; /** * Encola una notificación agrupada (API unificada `notify.message`). */ message(options: NotifyMessageOptions): number; private enqueueFromOptions; /** * Si la cola supera `stackMax`, elimina la más antigua hasta cumplir el límite. */ private evictOldestWhileOverCap; /** * Actualiza la leyenda del pie de apilado según la última llamada a `notify.message` para ese mazo. */ private applyStackSummaryLegend; /** * Cancela solo el timeout que borra el mazo tras `dismissStack` (no toca timers de progreso). */ private cancelStackRemovalTimer; /** * Agrega una notificación al grupo correspondiente */ private addToGroup; /** * Inicia el timer del grupo solo para la notificación **más reciente** (`queue[queue.length - 1]`). * Al expirar se vacía el mazo con `dismissStack` (las demás no tienen timer propio). */ private startTimer; /** * Reinicia el timer para un grupo */ private resetTimer; /** * Limpia el timer de un grupo */ private clearTimer; /** * Cierra todas las notificaciones de un mazo explícito (`primary` | `secondary`). */ dismissGroup(stackGroup: NotifyMessageStackGroup): void; /** * Cierra todas las notificaciones del mazo identificado por `stackKey` (`primary`, `secondary`, `auto`, …). */ dismissStack(stackKey: string): void; /** * Elimina una notificación concreta de su grupo por `id`. * Si `id` es la más reciente del mazo, equivale a `dismissStack` (cierra todo el grupo). * Si no, retira solo esa entrada y reinicia el timer para la nueva más reciente. */ dismiss(id: number): void; /** * Configura las opciones del servicio */ configure(options: Partial): void; /** * Obtiene los grupos actuales (solo mazos con cola activa). */ getGroups(): Record; /** * Suscribirse a cambios */ subscribe(listener: NotificationGroupListener): () => void; /** * Notifica a todos los listeners */ private notifyListeners; /** * Obtiene la configuración actual */ getConfig(): NotificationConfig; } /** * Instancia singleton del servicio de notificaciones agrupadas; la usan `notification`, `notify` y `useNotification`. */ export declare const notificationService: NotificationService; /** * Expone el mismo singleton que `notificationService` (acceso directo al servicio desde componentes o pruebas). * * @returns Instancia de `NotificationService` compartida en toda la app. */ export declare const useNotificationService: () => NotificationService; export {}; //# sourceMappingURL=NotificationService.d.ts.map