import { MaybeRefOrGetter, Ref } from 'vue';
export interface FloatingVisibilityOptions {
    modelValue?: MaybeRefOrGetter<boolean | undefined>;
    disabled?: MaybeRefOrGetter<boolean | undefined>;
    persistent?: MaybeRefOrGetter<boolean | undefined>;
    openDelay?: MaybeRefOrGetter<number | undefined>;
    closeDelay?: MaybeRefOrGetter<number | undefined>;
    beforeOpen?: (source: "internal" | "external") => void;
    beforeClose?: (source: "internal" | "external") => void;
    emitModelValue?: (value: boolean) => void;
    onOpen?: (source: "internal" | "external") => void;
    onClose?: (source: "internal" | "external") => void;
    immediateExternal?: MaybeRefOrGetter<boolean | undefined>;
}
export interface FloatingVisibilityChangeOptions {
    emitModelValue?: boolean;
    source?: "internal" | "external";
}
export declare function useFloatingVisibility(options?: FloatingVisibilityOptions): {
    visible: Ref<boolean, boolean>;
    rendered: Ref<boolean, boolean>;
    clearTimers: () => void;
    setVisible: (nextVisible: boolean, { emitModelValue, source }?: FloatingVisibilityChangeOptions) => void;
    open: (optionsOverride?: FloatingVisibilityChangeOptions & {
        immediate?: boolean;
    }) => void;
    close: (optionsOverride?: FloatingVisibilityChangeOptions & {
        immediate?: boolean;
    }) => void;
    toggle: (optionsOverride?: FloatingVisibilityChangeOptions) => void;
    handleAfterLeave: () => void;
};
