/** Open, close, and what a toggle does when the thing it would open has nothing to show. */ export interface MdyOverlayLifecycleState { readonly open: boolean; } export type MdyOverlayLifecycleIntent = { readonly type: "toggle"; readonly disabled: boolean; readonly available: boolean; } | { readonly type: "open"; readonly disabled: boolean; readonly available: boolean; } | { readonly type: "close"; readonly restoreFocus?: boolean; } | { readonly type: "escape"; } | { readonly type: "outside"; readonly outside: boolean; } | { readonly type: "destroy"; }; export interface MdyOverlayLifecycleTransition { readonly state: MdyOverlayLifecycleState; readonly effect: "none" | "setup" | "teardown"; readonly restoreFocus: boolean; readonly announce: "opened" | "closed" | null; } /** * Framework-independent overlay lifecycle. Hosts install/remove concrete DOM * listeners and execute focus restoration, but do not decide when to close. */ export declare function overlayLifecycleTransition(state: MdyOverlayLifecycleState, intent: MdyOverlayLifecycleIntent): MdyOverlayLifecycleTransition;