import type { Dialog } from "@base-ui/react/dialog"; /** Read synchronously by the shortcut registry so an open overlay's keystrokes (e.g. Ctrl+F) are not * hijacked by page shortcuts. */ export declare function isOverlayScopeActive(): boolean; export interface OverlayScope { /** Call exactly once on close. */ release: () => void; /** Whether this surface was opened last, owning dismissal keys. */ isTopmost: () => boolean; } /** The testable core; components use `useOverlayScope`. */ export declare function pushOverlayScope(): OverlayScope; /** For overlay primitives, not call sites. The reader is stable and answers `false` while closed, so a * dismissal handler may call it unconditionally. */ export declare function useOverlayScope(active: boolean): { isTopmost: () => boolean; }; /** The `onOpenChange` every kit overlay passes Base UI, judged against the caller's `scope` * ({@link useOverlayScope}) — the caller's, since a surface's own keys (a drawer's ←/→) ask the same * question. It refuses an Escape meant for a surface above: `isTopmost` is the only reading spanning * React roots. Declining must allow propagation, since Base UI otherwise stops the key — a picker inside * a dialog, listening on the document, never heard it. Backdrop dismissal is refused at the Root * (`disablePointerDismissal`), a fact about the whole surface. */ export declare function useOverlayOpenChange(scope: { isTopmost: () => boolean; }, onOpenChange: (open: boolean) => void): (next: boolean, details: Dialog.Root.ChangeEventDetails) => void;