/**
 * Single source of truth for overlay z-index allocation.
 *
 * Every surface that paints into the shared stacking context — modals,
 * popovers, drawers — claims a slot here on open and releases it on close.
 * Slots are dense integers starting at 1; z-index is `OVERLAY_BASE_Z_INDEX +
 * order`. Freed slots compact naturally because we always assign
 * `max(orders) + 1`, so once the stack drains the counter returns to 1.
 *
 * Kinds are tracked so callers can ask "what's the topmost <kind>" without
 * having to keep their own parallel maps.
 */
export declare const OVERLAY_BASE_Z_INDEX = 1100;
export type OverlayKind = 'modal' | 'popover' | 'drawer';
declare class OverlayStackingServiceClass {
    private order;
    private kind;
    /** Assign the next slot above all currently-mounted overlays and return its z-index. */
    register(id: string, kind: OverlayKind): number;
    /** Free the slot. The next opener will reuse the now-vacated topmost order. */
    unregister(id: string): void;
    /** Slot order for an id, or 0 if not registered. */
    getOrder(id: string): number;
    /**
     * Topmost z-index across all overlays, or — when `kind` is supplied — the
     * topmost z within that kind only. Returns `OVERLAY_BASE_Z_INDEX` (the
     * stacking floor) when nothing of the requested kind is registered.
     */
    getTopmostZIndex(kind?: OverlayKind): number;
    /** Test-only: wipe internal state. Not for production code paths. */
    __resetForTests(): void;
    private getMaxOrder;
}
export declare const OverlayStackingService: OverlayStackingServiceClass;
export {};
