/**
 * Notification Manager
 *
 * Manages notification preferences, quiet hours, rate limiting, and history.
 */
import { EventEmitter } from 'events';
import type { MessagePriority, ProactiveMessage } from './proactive-agent.js';
export interface NotificationPreferences {
    /** Enabled channels */
    channels: string[];
    /** Quiet hours (24h format) */
    quietHoursStart?: number;
    quietHoursEnd?: number;
    /** Max notifications per hour */
    maxPerHour: number;
    /** Min priority to send during quiet hours */
    quietHoursMinPriority: MessagePriority;
}
export interface NotificationRecord {
    timestamp: Date;
    channelType: string;
    priority: MessagePriority;
    delivered: boolean;
}
export declare class NotificationManager extends EventEmitter {
    private preferences;
    private history;
    private maxHistory;
    constructor(preferences?: Partial<NotificationPreferences>);
    /**
     * Check if a notification should be sent
     */
    shouldSend(msg: ProactiveMessage): {
        allowed: boolean;
        reason?: string;
    };
    /**
     * Record a notification
     */
    record(msg: ProactiveMessage, delivered: boolean): void;
    /**
     * Check if currently in quiet hours
     */
    isQuietHours(): boolean;
    /**
     * Check if rate limit is exceeded
     */
    isRateLimited(): boolean;
    /**
     * Update preferences
     */
    setPreferences(prefs: Partial<NotificationPreferences>): void;
    /**
     * Get current preferences
     */
    getPreferences(): NotificationPreferences;
    /**
     * Get notification history
     */
    getHistory(limit?: number): NotificationRecord[];
    /**
     * Get stats
     */
    getStats(): {
        totalSent: number;
        lastHour: number;
        deliveryRate: number;
    };
}
export declare function getNotificationManager(prefs?: Partial<NotificationPreferences>): NotificationManager;
export declare function resetNotificationManager(): void;
