import type { Ref } from 'vue';
import type { PopperContentProps } from '../Popper';
import type { PointerDownOutsideEvent } from '../DismissableLayer';
interface SelectContentContext {
    content?: Ref<HTMLElement | undefined>;
    viewport?: Ref<HTMLElement | undefined>;
    onViewportChange: (node: HTMLElement | undefined) => void;
    itemRefCallback: (node: HTMLElement | undefined, value: string, disabled: boolean) => void;
    selectedItem?: Ref<HTMLElement | undefined>;
    onItemLeave?: () => void;
    itemTextRefCallback: (node: HTMLElement | undefined, value: string, disabled: boolean) => void;
    focusSelectedItem?: () => void;
    selectedItemText?: Ref<HTMLElement | undefined>;
    position?: 'item-aligned' | 'popper';
    isPositioned?: Ref<boolean>;
    searchRef?: Ref<string>;
}
export declare const SelectContentDefaultContextValue: SelectContentContext;
export type SelectContentImplEmits = {
    closeAutoFocus: [event: Event];
    /**
     * 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];
};
export interface SelectContentImplProps extends PopperContentProps {
    position?: 'item-aligned' | 'popper';
}
export declare const injectSelectContentContext: <T extends SelectContentContext | null | undefined = SelectContentContext>(fallback?: T | undefined) => T extends null ? SelectContentContext | null : SelectContentContext, provideSelectContentContext: (contextValue: SelectContentContext) => SelectContentContext;
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
    position: {
        type: import("vue").PropType<"popper" | "item-aligned">;
    };
    side: {
        type: import("vue").PropType<"right" | "left" | "bottom" | "top">;
    };
    sideOffset: {
        type: import("vue").PropType<number>;
    };
    align: {
        type: import("vue").PropType<"center" | "end" | "start">;
    };
    alignOffset: {
        type: import("vue").PropType<number>;
    };
    avoidCollisions: {
        type: import("vue").PropType<boolean>;
    };
    collisionBoundary: {
        type: import("vue").PropType<Element | (Element | null)[] | null>;
    };
    collisionPadding: {
        type: import("vue").PropType<number | Partial<Record<"right" | "left" | "bottom" | "top", number>>>;
    };
    arrowPadding: {
        type: import("vue").PropType<number>;
    };
    sticky: {
        type: import("vue").PropType<"partial" | "always">;
    };
    hideWhenDetached: {
        type: import("vue").PropType<boolean>;
    };
    updatePositionStrategy: {
        type: import("vue").PropType<"always" | "optimized">;
    };
    onPlaced: {
        type: import("vue").PropType<() => void>;
    };
    prioritizePosition: {
        type: import("vue").PropType<boolean>;
    };
    asChild: {
        type: import("vue").PropType<boolean>;
    };
    as: {
        type: import("vue").PropType<import("../Primitive").AsTag | import("vue").Component>;
    };
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
    escapeKeyDown: (event: KeyboardEvent) => void;
    pointerDownOutside: (event: PointerDownOutsideEvent) => void;
    closeAutoFocus: (event: Event) => void;
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
    position: {
        type: import("vue").PropType<"popper" | "item-aligned">;
    };
    side: {
        type: import("vue").PropType<"right" | "left" | "bottom" | "top">;
    };
    sideOffset: {
        type: import("vue").PropType<number>;
    };
    align: {
        type: import("vue").PropType<"center" | "end" | "start">;
    };
    alignOffset: {
        type: import("vue").PropType<number>;
    };
    avoidCollisions: {
        type: import("vue").PropType<boolean>;
    };
    collisionBoundary: {
        type: import("vue").PropType<Element | (Element | null)[] | null>;
    };
    collisionPadding: {
        type: import("vue").PropType<number | Partial<Record<"right" | "left" | "bottom" | "top", number>>>;
    };
    arrowPadding: {
        type: import("vue").PropType<number>;
    };
    sticky: {
        type: import("vue").PropType<"partial" | "always">;
    };
    hideWhenDetached: {
        type: import("vue").PropType<boolean>;
    };
    updatePositionStrategy: {
        type: import("vue").PropType<"always" | "optimized">;
    };
    onPlaced: {
        type: import("vue").PropType<() => void>;
    };
    prioritizePosition: {
        type: import("vue").PropType<boolean>;
    };
    asChild: {
        type: import("vue").PropType<boolean>;
    };
    as: {
        type: import("vue").PropType<import("../Primitive").AsTag | import("vue").Component>;
    };
}>> & {
    onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
    onPointerDownOutside?: ((event: PointerDownOutsideEvent) => any) | undefined;
    onCloseAutoFocus?: ((event: Event) => any) | undefined;
}, {}, {}>, {
    default?(_: {}): any;
}>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
