import type { PrimitiveProps } from '../Primitive';
import type { FocusOutsideEvent, PointerDownOutsideEvent } from './utils';
export interface DismissableLayerProps extends PrimitiveProps {
    /**
     * When `true`, hover/focus/click interactions will be disabled on elements outside
     * the `DismissableLayer`. Users will need to click twice on outside elements to
     * interact with them: once to close the `DismissableLayer`, and again to trigger the element.
     */
    disableOutsidePointerEvents?: boolean;
}
export type DismissableLayerEmits = {
    /**
     * Event handler called when the escape key is down.
     * Can be prevented.
     */
    'escapeKeyDown': [event: KeyboardEvent];
    /**
     * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.
     * Can be prevented.
     */
    'pointerDownOutside': [event: PointerDownOutsideEvent];
    /**
     * Event handler called when the focus moves outside of the `DismissableLayer`.
     * Can be prevented.
     */
    'focusOutside': [event: FocusOutsideEvent];
    /**
     * Event handler called when an interaction happens outside the `DismissableLayer`.
     * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.
     * Can be prevented.
     */
    'interactOutside': [event: PointerDownOutsideEvent | FocusOutsideEvent];
    /**
     * Handler called when the `DismissableLayer` should be dismissed
     */
    'dismiss': [];
};
export declare const context: {
    layersRoot: Set<HTMLElement>;
    layersWithOutsidePointerEventsDisabled: Set<HTMLElement>;
    branches: Set<HTMLElement>;
};
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
    asChild: {
        type: import("vue").PropType<boolean>;
    };
    as: {
        type: import("vue").PropType<import('../Primitive').AsTag | import("vue").Component>;
    };
    disableOutsidePointerEvents: {
        type: import("vue").PropType<boolean>;
        default: boolean;
    };
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
    escapeKeyDown: (event: KeyboardEvent) => void;
    pointerDownOutside: (event: PointerDownOutsideEvent) => void;
    focusOutside: (event: FocusOutsideEvent) => void;
    interactOutside: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;
    dismiss: () => void;
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
    asChild: {
        type: import("vue").PropType<boolean>;
    };
    as: {
        type: import("vue").PropType<import('../Primitive').AsTag | import("vue").Component>;
    };
    disableOutsidePointerEvents: {
        type: import("vue").PropType<boolean>;
        default: boolean;
    };
}>> & {
    onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
    onPointerDownOutside?: ((event: PointerDownOutsideEvent) => any) | undefined;
    onFocusOutside?: ((event: FocusOutsideEvent) => any) | undefined;
    onInteractOutside?: ((event: PointerDownOutsideEvent | FocusOutsideEvent) => any) | undefined;
    onDismiss?: (() => any) | undefined;
}, {
    disableOutsidePointerEvents: boolean;
}, {}>, {
    default?(_: {}): any;
}>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
