import { MaybeRefOrGetter, ComputedRef } from 'vue';
import { useFloatingVisibility } from './use-floating-visibility.js';
export interface OverlayDialogOptions {
    modelValue?: MaybeRefOrGetter<boolean | undefined>;
    destroyOnClose?: MaybeRefOrGetter<boolean | undefined>;
    lockScroll?: MaybeRefOrGetter<boolean | undefined>;
    openDelay?: MaybeRefOrGetter<number | undefined>;
    closeDelay?: MaybeRefOrGetter<number | undefined>;
    appendToBody?: MaybeRefOrGetter<boolean | undefined>;
    appendTo?: MaybeRefOrGetter<string | HTMLElement | undefined>;
    modal?: MaybeRefOrGetter<boolean | undefined>;
    zIndex?: MaybeRefOrGetter<number | undefined>;
}
export interface OverlayDialogCallbacks {
    destroyStrategy?: "content" | "wrapper";
    onOpen?: () => void;
    onClose?: () => void;
    onOpened?: () => void;
    onClosed?: () => void;
}
export interface OverlayDialogReturn {
    visible: ReturnType<typeof useFloatingVisibility>["visible"];
    rendered: ReturnType<typeof useFloatingVisibility>["rendered"];
    showModal: ComputedRef<boolean>;
    zIndex: ComputedRef<number>;
    appendTo: ComputedRef<string | HTMLElement>;
    teleportDisabled: ComputedRef<boolean>;
    contentRendered: ComputedRef<boolean>;
    isTopMost: () => boolean;
    close: () => void;
    handleAfterEnter: () => void;
    handleAfterLeave: () => void;
}
export declare function useOverlayDialog(options: OverlayDialogOptions, callbacks?: OverlayDialogCallbacks): OverlayDialogReturn;
