export type AlertLevel = 'info' | 'warning' | 'error' | 'critical';
export type AlertType = 'system' | 'stream' | 'channel' | 'network';
export type AlertStatus = 'active' | 'acknowledged' | 'resolved' | 'ignored';
export interface Alert {
    id: string;
    level: AlertLevel;
    type: AlertType;
    title: string;
    message: string;
    source: string;
    channelId?: string;
    timestamp: number;
    acknowledged: boolean;
    status: AlertStatus;
    metadata?: Record<string, any>;
    acknowledgedAt?: number;
    acknowledgedBy?: string;
    resolvedAt?: number;
    notes?: string;
}
export type AlertOperator = '>' | '<' | '=' | '>=' | '<=' | '!=' | 'contains' | 'regex';
export type AlertConditionType = 'threshold' | 'state_change' | 'time_window' | 'pattern';
export interface AlertCondition {
    type: AlertConditionType;
    field: string;
    operator: AlertOperator;
    value: any;
    timeWindow?: number;
    logicalOperator?: 'AND' | 'OR';
}
export type AlertActionType = 'log' | 'notification' | 'email' | 'webhook' | 'sound';
export interface AlertAction {
    type: AlertActionType;
    config: Record<string, any>;
    enabled: boolean;
}
export interface AlertRule {
    id: string;
    name: string;
    description?: string;
    enabled: boolean;
    level: AlertLevel;
    type: AlertType;
    conditions: AlertCondition[];
    actions: AlertAction[];
    cooldown: number;
    priority: number;
    tags?: string[];
    createdAt: number;
    updatedAt: number;
    lastTriggered?: number;
    triggerCount: number;
}
export interface AlertHistoryEntry {
    alert: Alert;
    timestamp: number;
    action: string;
    user?: string;
    context?: Record<string, any>;
}
export interface AlertFilter {
    levels?: AlertLevel[];
    types?: AlertType[];
    statuses?: AlertStatus[];
    sources?: string[];
    channelIds?: string[];
    timeRange?: {
        start: number;
        end: number;
    };
    searchText?: string;
    acknowledgedOnly?: boolean;
    unacknowledgedOnly?: boolean;
}
export interface AlertGrouping {
    field: keyof Alert;
    sortOrder: 'asc' | 'desc';
    maxPerGroup?: number;
}
export interface AlertStatistics {
    total: number;
    byLevel: Record<AlertLevel, number>;
    byType: Record<AlertType, number>;
    byStatus: Record<AlertStatus, number>;
    bySource: Record<string, number>;
    last24Hours: number;
    mostFrequentType: AlertType;
    avgTimeToAck?: number;
    avgTimeToResolve?: number;
}
export interface AlertTrendPoint {
    timestamp: number;
    count: number;
    byLevel: Record<AlertLevel, number>;
}
export interface AlertNotificationConfig {
    soundEnabled: boolean;
    visualEnabled: boolean;
    desktopEnabled: boolean;
    emailEnabled: boolean;
    soundFile?: string;
    volume: number;
    minLevel: AlertLevel;
}
export interface AlertSystemConfig {
    maxAlertsInMemory: number;
    maxHistoryEntries: number;
    autoAckTimeout?: number;
    autoResolveTimeout?: number;
    persistenceEnabled: boolean;
    persistenceFile: string;
    notifications: AlertNotificationConfig;
    defaultCooldown: number;
    performance: {
        maxProcessingRate: number;
        batchSize: number;
        processingInterval: number;
    };
}
export interface AlertPanelConfig {
    maxDisplayItems: number;
    autoScroll: boolean;
    showTimestamps: boolean;
    showSources: boolean;
    showIds: boolean;
    timeFormat: 'relative' | 'absolute';
    colorCoding: boolean;
    compactMode: boolean;
}
export interface AlertEvaluationContext {
    timestamp: number;
    systemMetrics?: any;
    streamMetrics?: any;
    channelStatus?: any;
    networkMetrics?: any;
    alertHistory?: Alert[];
    custom?: Record<string, any>;
}
export interface AlertRuleEvaluationResult {
    ruleId: string;
    triggered: boolean;
    alert?: Omit<Alert, 'id' | 'timestamp'>;
    context: AlertEvaluationContext;
    evaluatedAt: number;
    details?: Record<string, any>;
}
//# sourceMappingURL=alert.d.ts.map