import type { Placement } from '@floating-ui/dom'; import type { VirtualTrigger } from './virtual-trigger'; export type Constructor> = { new (...args: any[]): T; prototype: T; }; export type OverlayTypes = 'auto' | 'hint' | 'manual' | 'modal' | 'page'; export type TriggerInteraction = 'click' | 'longpress' | 'hover'; export type TriggerInteractions = OverlayTypes; export type TriggerInteractionsV1 = 'click' | 'longpress' | 'hover' | 'custom' | 'replace' | 'inline' | 'modal'; export type OverlayTriggerInteractions = Extract; export interface OverlayOpenCloseDetail { interaction: TriggerInteractions; reason?: 'external-click'; } export interface OverlayCloseReasonDetail { reason?: 'external-click'; } export type OverlayOptions = { delayed?: boolean; notImmediatelyClosable?: boolean; offset?: number | [number, number]; placement?: Placement; receivesFocus?: 'auto' | 'true' | 'false'; trigger?: HTMLElement | VirtualTrigger; type?: 'modal' | 'page' | 'hint' | 'auto' | 'manual'; }; export type OverlayOptionsV1 = { root?: HTMLElement; delayed?: boolean; placement?: Placement; offset?: number; receivesFocus?: 'true' | 'false' | 'auto'; notImmediatelyClosable?: boolean; abortPromise?: Promise; virtualTrigger?: VirtualTrigger; }; declare global { interface GlobalEventHandlersEventMap { 'luzmo-opened': CustomEvent; 'luzmo-closed': CustomEvent; } } export type OpenableElement = HTMLElement & { open: boolean; tipElement?: HTMLElement; updateComplete?: Promise; }; export type OverlayState = 'closed' | 'opening' | 'opened' | 'closing'; export { type Placement } from '@floating-ui/dom';