/**
 * Notification Manager
 *
 * Manages notification storage, retrieval, and lifecycle.
 *
 * @module core/notifications/notification-manager
 */
import { Notification, CreateNotificationInput, NotificationQueryOptions } from './notification-types.js';
import { Logger } from '../../utils/logger.js';
/**
 * Notification manager options
 */
export interface NotificationManagerOptions {
    /**
     * Path to .specweave directory
     */
    specweavePath?: string;
    /**
     * Logger instance
     */
    logger?: Logger;
    /**
     * Default cleanup age in days
     * @default 30
     */
    defaultRetentionDays?: number;
}
/**
 * NotificationManager - Central notification storage and retrieval
 *
 * Features:
 * - Add/query/dismiss notifications
 * - Automatic persistence
 * - Cleanup of old notifications
 */
export declare class NotificationManager {
    private readonly filePath;
    private readonly logger;
    private readonly defaultRetentionDays;
    private notifications;
    constructor(options?: NotificationManagerOptions);
    /**
     * Add a new notification
     *
     * @param input - Notification input
     * @returns Created notification
     */
    add(input: CreateNotificationInput): Promise<Notification>;
    /**
     * Get pending notifications (not dismissed)
     *
     * @returns Array of pending notifications
     */
    getPending(): Promise<Notification[]>;
    /**
     * Get all notifications with optional filtering
     *
     * @param options - Query options
     * @returns Array of notifications
     */
    getAll(options?: NotificationQueryOptions): Promise<Notification[]>;
    /**
     * Get a single notification by ID
     *
     * @param id - Notification ID
     * @returns Notification or undefined
     */
    getById(id: string): Promise<Notification | undefined>;
    /**
     * Mark notifications as read
     *
     * @param ids - Array of notification IDs to mark as read
     */
    markRead(ids: string[]): Promise<void>;
    /**
     * Dismiss notifications (hide from pending but keep in history)
     *
     * @param ids - Array of notification IDs to dismiss
     */
    dismiss(ids: string[]): Promise<void>;
    /**
     * Dismiss all pending notifications
     */
    dismissAll(): Promise<void>;
    /**
     * Cleanup old notifications
     *
     * @param olderThanDays - Remove notifications older than this many days
     * @returns Number of removed notifications
     */
    cleanup(olderThanDays?: number): Promise<number>;
    /**
     * Get summary for display
     *
     * @returns Summary object
     */
    getSummary(): Promise<{
        total: number;
        pending: number;
        bySeverity: Record<string, number>;
        byType: Record<string, number>;
    }>;
    /**
     * Check if there are any pending notifications
     *
     * @returns true if pending notifications exist
     */
    hasPending(): Promise<boolean>;
    /**
     * Load notifications from disk
     */
    private load;
    /**
     * Save notifications to disk
     */
    private save;
    /**
     * Clear cache (for testing)
     */
    clearCache(): void;
    /**
     * Get file path (for testing/debugging)
     */
    getFilePath(): string;
}
//# sourceMappingURL=notification-manager.d.ts.map