/** * Sistema de alertas inteligente que optimiza el ruido en logs * Filtra alertas basándose en contexto, frecuencia y severidad * @finity.org/ccl - Currency Conversion Library */ import { ErrorSeverity, ErrorCategory } from '../errors'; export interface AlertRule { id: string; name: string; category: ErrorCategory; severity: ErrorSeverity; enabled: boolean; maxFrequency: number; suppressInTestMode: boolean; suppressInSilentMode: boolean; contextFilters: string[]; messagePatterns: RegExp[]; cooldownMs: number; } export interface AlertContext { operation: string; module: string; severity: ErrorSeverity; category: ErrorCategory; message: string; timestamp: Date; metadata?: Record; } export interface AlertStats { totalAlerts: number; suppressedAlerts: number; alertsByCategory: Record; alertsBySeverity: Record; suppressionReasons: Record; } export declare class SmartAlertSystem { private static instance; private rules; private frequencyTracker; private cooldownManager; private stats; private enabled; private constructor(); static getInstance(): SmartAlertSystem; /** * Inicializa las reglas de alerta por defecto */ private initializeDefaultRules; /** * Agrega una nueva regla de alerta */ addRule(rule: AlertRule): void; /** * Evalúa si una alerta debe ser suprimida */ shouldSuppressAlert(context: AlertContext): { suppress: boolean; reason?: string; appliedRules: string[]; }; /** * Verifica si una regla aplica a un contexto de alerta */ private ruleApplies; /** * Verifica las condiciones de supresión para una regla */ private checkSuppressionConditions; /** * Procesa una alerta y determina si debe ser mostrada */ processAlert(context: AlertContext): boolean; /** * Habilita o deshabilita el sistema de alertas */ setEnabled(enabled: boolean): void; /** * Obtiene estadísticas del sistema de alertas */ getStats(): AlertStats; /** * Reinicia las estadísticas */ resetStats(): void; /** * Obtiene información sobre las reglas activas */ getRulesInfo(): Array<{ id: string; name: string; enabled: boolean; category: string; severity: string; }>; /** * Actualiza estadísticas por categoría */ private updateCategoryStats; /** * Actualiza estadísticas por severidad */ private updateSeverityStats; } export declare const smartAlertSystem: SmartAlertSystem; export declare const processAlert: (context: AlertContext) => boolean; export declare const createAlertContext: (operation: string, module: string, severity: ErrorSeverity, category: ErrorCategory, message: string, metadata?: Record) => AlertContext; //# sourceMappingURL=smart-alert-system.d.ts.map