import { StyleValue } from 'vue';
import { Placement } from '@floating-ui/dom';
import { ComponentSize, SelectOption } from '../../../xiaoye-primitives/index.js';
export interface SelectOptionGroup<T = string | number> {
    label: string;
    options: SelectOption<T>[];
    disabled?: boolean;
}
export type SelectOptionItem<T = string | number> = SelectOption<T> | SelectOptionGroup<T>;
export type SelectValue<T = string | number> = T | T[] | null;
export type SelectValueChangeHandler<T = string | number> = (value: SelectValue<T>) => void;
export type SelectVisibleChangeHandler = (value: boolean) => void;
export type SelectSearchChangeHandler = (value: string) => void;
export interface FlatSelectOption<T = string | number> extends SelectOption<T> {
    flatIndex: number;
    groupLabel?: string;
    created?: boolean;
}
export interface SelectOptionSlotProps<T = string | number> {
    option: FlatSelectOption<T>;
    selected: boolean;
    active: boolean;
}
export interface SelectProps<T = string | number> {
    modelValue?: SelectValue<T>;
    options: SelectOptionItem<T>[];
    placeholder?: string;
    disabled?: boolean;
    clearable?: boolean;
    searchable?: boolean;
    multiple?: boolean;
    collapseTags?: boolean;
    maxTagCount?: number;
    remote?: boolean;
    allowCreate?: boolean;
    size?: ComponentSize;
    noDataText?: string;
    noMatchText?: string;
    loading?: boolean;
    loadingText?: string;
    searchPlaceholder?: string;
    createText?: string;
    prefixIcon?: string;
    suffixIcon?: string;
    clearIcon?: string;
    teleported?: boolean;
    appendTo?: string | HTMLElement;
    placement?: Placement;
    offset?: number;
    popperClass?: string;
    popperStyle?: StyleValue;
    fitTriggerWidth?: boolean;
    fitInputWidth?: boolean;
    dropdownMinWidth?: string | number;
    dropdownMaxWidth?: string | number;
}
export interface SelectInstance {
    focus: () => void;
    blur: () => Promise<void>;
    open: () => Promise<void>;
    close: (shouldValidate?: boolean, restoreFocus?: boolean) => Promise<void>;
}
export declare const DEFAULT_CLEAR_ICON = "mdi:close-circle";
export declare const DEFAULT_SUFFIX_ICON = "mdi:chevron-down";
export declare const DEFAULT_LOADING_ICON = "mdi:loading";
