import { Identifiable } from '@empathyco/x-types';
import { PropType } from 'vue';
type DropdownItem = string | number | Identifiable;
/**
 * Dropdown component that mimics a Select element behavior, but with the option
 * to customize the toggle button and each item contents.
 */
declare const _default: import("vue").DefineComponent<{
    /** List of items to display.*/
    items: {
        type: PropType<DropdownItem[]>;
        required: true;
    };
    /** The selected item. */
    modelValue: {
        type: PropType<DropdownItem | null>;
        validator: (v: any) => boolean;
        required: true;
    };
    /** Description of what the dropdown is used for. */
    ariaLabel: StringConstructor;
    /**
     * Animation component to use for expanding the dropdown. This is a single element animation,
     * so only `<transition>` components are allowed.
     */
    animation: {
        type: (StringConstructor | ObjectConstructor | FunctionConstructor)[];
        default: () => import("vue").DefineComponent<{}, {}, any, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
    };
    /** Time to wait without receiving any keystroke before resetting the items search query. */
    searchTimeoutMs: {
        type: NumberConstructor;
        default: number;
    };
}, {
    hasToggleSlot: boolean;
    closeAndFocusToggleButton: () => void;
    dropdownCSSClasses: import("vue").ComputedRef<{
        'x-dropdown--is-open': import("vue").Ref<boolean>;
    }>;
    emitSelectedItemChanged: (item: DropdownItem) => void;
    highlightFirstItem: () => void;
    highlightLastItem: () => void;
    highlightNextItem: () => void;
    highlightPreviousItem: () => void;
    highlightedItemIndex: import("vue").Ref<number>;
    isOpen: import("vue").Ref<boolean>;
    itemsButtonRefs: import("vue").Ref<HTMLButtonElement[]>;
    itemsCSSClasses: import("vue").ComputedRef<{
        'x-dropdown__item--is-selected': boolean;
        'x-dropdown__item--is-highlighted': boolean;
    }[]>;
    listId: string;
    open: () => boolean;
    rootRef: import("vue").Ref<HTMLElement | undefined>;
    toggle: () => boolean;
    toggleButtonRef: import("vue").Ref<HTMLButtonElement | undefined>;
    updateSearchBuffer: (event: KeyboardEvent) => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    /** List of items to display.*/
    items: {
        type: PropType<DropdownItem[]>;
        required: true;
    };
    /** The selected item. */
    modelValue: {
        type: PropType<DropdownItem | null>;
        validator: (v: any) => boolean;
        required: true;
    };
    /** Description of what the dropdown is used for. */
    ariaLabel: StringConstructor;
    /**
     * Animation component to use for expanding the dropdown. This is a single element animation,
     * so only `<transition>` components are allowed.
     */
    animation: {
        type: (StringConstructor | ObjectConstructor | FunctionConstructor)[];
        default: () => import("vue").DefineComponent<{}, {}, any, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
    };
    /** Time to wait without receiving any keystroke before resetting the items search query. */
    searchTimeoutMs: {
        type: NumberConstructor;
        default: number;
    };
}>> & {
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}, {
    animation: string | Function | Record<string, any>;
    searchTimeoutMs: number;
}, {}>;
export default _default;
//# sourceMappingURL=base-dropdown.vue?vue&type=script&lang.d.ts.map