export interface BaseOption {
    [key: string]: any;
}
export interface SelectFilterOption {
    label: string;
    value: any;
    [key: string]: any;
}
export interface Props {
    /** Items to show in the menu (must contain label & value) */
    items: SelectFilterOption[];
    /** v-model value (single or multiple depending on `multiple`) */
    modelValue?: any | any[] | null;
    /** Enable multi-select */
    multiple?: boolean;
    /** Placeholder text when nothing selected */
    placeholder?: string;
    /** Search input placeholder */
    searchPlaceholder?: string;
    /** Disable the whole control */
    disabled?: boolean;
    /** Visual variant */
    variant?: "default" | "dark";
    /** Allow clearing selection with clear button (single only currently) */
    clearable?: boolean;
    /** Show search box */
    searchable?: boolean;
    /** Auto select first option when available */
    autoSelectFirst?: boolean;
    /** Custom icon for chip */
    chipIcon?: string;
    /** If true and multiple, show an All toggle entry */
    showSelectAll?: boolean;
    /** Max height for options scroll area */
    maxHeight?: string | number;
    /** When user selected some items, we should display like "selectedPrefix: <count>" */
    selectedPrefix?: string;
    /** Loading state */
    isLoading?: boolean;
}
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
    items: () => never[];
    multiple: boolean;
    placeholder: string;
    searchPlaceholder: string;
    disabled: boolean;
    variant: string;
    clearable: boolean;
    searchable: boolean;
    autoSelectFirst: boolean;
    chipIcon: string;
    showSelectAll: boolean;
    maxHeight: number;
    selectedPrefix: string;
    isLoading: boolean;
}>>, {
    open: () => void | undefined;
    close: () => void | undefined;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
    "update:modelValue": (value: any) => void;
    change: (value: any) => void;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
    items: () => never[];
    multiple: boolean;
    placeholder: string;
    searchPlaceholder: string;
    disabled: boolean;
    variant: string;
    clearable: boolean;
    searchable: boolean;
    autoSelectFirst: boolean;
    chipIcon: string;
    showSelectAll: boolean;
    maxHeight: number;
    selectedPrefix: string;
    isLoading: boolean;
}>>> & Readonly<{
    onChange?: ((value: any) => any) | undefined;
    "onUpdate:modelValue"?: ((value: any) => any) | undefined;
}>, {
    disabled: boolean;
    variant: "default" | "dark";
    isLoading: boolean;
    items: SelectFilterOption[];
    placeholder: string;
    maxHeight: string | number;
    searchable: boolean;
    multiple: boolean;
    clearable: boolean;
    searchPlaceholder: string;
    autoSelectFirst: boolean;
    chipIcon: string;
    showSelectAll: boolean;
    selectedPrefix: string;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
    "menu-button"?(_: {}): any;
    option?(_: {
        option: SelectFilterOption;
        selected: boolean;
        toggle: () => void;
    }): any;
    "append-right"?(_: {}): any;
}>;
export default _default;
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: import('vue').PropType<T[K]>;
        required: true;
    };
};
type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};
type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
