import type { ReactiveController, ReactiveControllerHost } from 'lit';
import type { EventBus } from '../events/EventBus.js';
import type { ActiveNotification } from '../notifications/types.js';
import type { TileConfig } from '../types.js';
/**
 * NotificationsController — Lit ReactiveController equivalent of useNotifications().
 *
 * Subscribes to the EventBus, evaluates notification rules from tile configs,
 * and manages the active toast queue.
 *
 * Features:
 * - Max 3 visible toasts (FIFO eviction when exceeded)
 * - Deduplication by tileId + itemId
 * - Cooldown per rule (prevents rapid re-firing)
 * - Auto-dismiss after TTL
 * - Publishes NOTIFICATION_SHOWN / NOTIFICATION_DISMISSED telemetry events
 *
 * Usage (decorator-free):
 *   class MyElement extends LitElement {
 *     private _notifications: NotificationsController;
 *
 *     constructor() {
 *       super();
 *       this._notifications = new NotificationsController(this, eventBus, tiles);
 *     }
 *
 *     render() {
 *       return html`${this._notifications.notifications.map(...)}`;
 *     }
 *   }
 */
export declare class NotificationsController implements ReactiveController {
    private host;
    private eventBus;
    private tiles;
    private _notifications;
    private _cooldownMap;
    private _timerIds;
    private _unsubscribe;
    constructor(host: ReactiveControllerHost, eventBus: EventBus | null, tiles: TileConfig[]);
    /** Returns the current list of active (visible) notifications. */
    get notifications(): ActiveNotification[];
    /** Update the tile configs (and thus notification rules) after construction. */
    setTiles(tiles: TileConfig[]): void;
    /**
     * Swap the EventBus after construction (e.g. when runtimeRef changes).
     * Tears down the existing subscription and re-subscribes on the new bus.
     */
    setEventBus(eventBus: EventBus | null): void;
    hostConnected(): void;
    hostDisconnected(): void;
    /**
     * Push a notification directly into the visible queue (bypasses EventBus matching).
     * Used by the theme editor to preview toast styling.
     */
    push(notif: ActiveNotification): void;
    /**
     * Manually dismiss a notification by ID.
     * Cancels its auto-dismiss timer and publishes NOTIFICATION_DISMISSED.
     */
    dismiss(id: string): void;
    private _publishDismissed;
    private _scheduleDismiss;
}
