import type { Component } from 'vue'; import type { ComponentProps, ComponentEmit } from 'vue-component-type-helpers'; type CloseEventArgType = T extends (event: 'close', args_0: infer R) => void ? R : never; export type OverlayOptions> = { defaultOpen?: boolean; props?: OverlayAttrs; destroyOnClose?: boolean; }; interface ManagedOverlayOptionsPrivate { component?: T; id: symbol; isMounted: boolean; isOpen: boolean; resolvePromise?: (value: any) => void; } export type Overlay = OverlayOptions & ManagedOverlayOptionsPrivate; type OverlayInstance = Omit, 'component'> & { id: symbol; open: (props?: ComponentProps) => OpenedOverlay; close: (value?: any) => void; patch: (props: Partial>) => void; }; type OpenedOverlay = Omit, 'open' | 'close' | 'patch' | 'modelValue' | 'resolvePromise'> & { result: Promise>>; }; declare function _useOverlay(): { overlays: import("vue").ShallowReactive; open: (id: symbol, props?: ComponentProps) => OpenedOverlay; close: (id: symbol, value?: any) => void; closeAll: () => void; create: (component: T, _options?: OverlayOptions>) => OverlayInstance; patch: (id: symbol, props: Partial>) => void; unMount: (id: symbol) => void; isOpen: (id: symbol) => boolean; }; export declare const useOverlay: typeof _useOverlay; export {};