import type { NativeModalInfo, NativeSnapshotModalContext } from '../core/types';
export interface ModalPushInput {
    id: string;
    title?: string;
    type?: NativeModalInfo['type'];
    blocking?: boolean;
    dismissible?: boolean;
}
/**
 * Declarative modal store. Components/hooks call pushModal/dismissModal directly
 * — there is no DOM/tree scanner. The detector is the single source of truth for
 * the snapshot's modalStack context.
 */
export declare class ModalDetector {
    /** Map preserves O(1) idempotent replace by id; ordering comes from detectedAt. */
    private modals;
    pushModal(modal: ModalPushInput): void;
    /**
     * Remove a modal from the stack. Returns `true` if a modal with that id
     * was actually deleted, `false` if nothing matched (idempotent so repeated
     * calls don't throw, but callers — e.g. the HTTP test-hook endpoint — can
     * surface the miss to clients).
     */
    dismissModal(id: string): boolean;
    getSnapshotModalContext(): NativeSnapshotModalContext;
    getActive(): NativeModalInfo[];
    clear(): void;
}
//# sourceMappingURL=modal-detector.d.ts.map