import type { InputProps } from '../input';
import type { PopupProps } from '../popup';
import type { TextareaProps } from '../textarea';
import type { LNode, SizeType } from '../../common';
export interface TypeAutoCompleteProps<T extends AutoCompleteOption = AutoCompleteOption> {
    autoFocus?: boolean;
    clearable?: boolean;
    default?: string | LNode;
    disabled?: boolean;
    filter?: (filterWords: string, option: T) => boolean | Promise<boolean>;
    filterable?: boolean;
    highlightKeyword?: boolean;
    inputProps?: InputProps;
    options?: Array<T>;
    panelBottomContent?: string | LNode;
    panelTopContent?: string | LNode;
    placeholder?: string;
    popupProps?: PopupProps;
    readonly?: boolean;
    size?: SizeType;
    status?: 'default' | 'success' | 'warning' | 'error';
    textareaProps?: TextareaProps;
    tips?: string | LNode;
    triggerElement?: string | LNode;
    value?: string;
    defaultValue?: string;
    onBlur?: (context: {
        e: FocusEvent;
        value: string;
    }) => void;
    onChange?: (value: string, context?: {
        e?: InputEvent | MouseEvent | KeyboardEvent;
    }) => void;
    onClear?: (context: {
        e: MouseEvent;
    }) => void;
    onCompositionend?: (context: {
        e: CompositionEvent;
        value: string;
    }) => void;
    onCompositionstart?: (context: {
        e: CompositionEvent;
        value: string;
    }) => void;
    onEnter?: (context: {
        e: KeyboardEvent;
        value: string;
    }) => void;
    onFocus?: (context: {
        e: FocusEvent;
        value: string;
    }) => void;
    onSelect?: (value: string, context: {
        e: MouseEvent | KeyboardEvent;
    }) => void;
}
export type AutoCompleteOption = string | AutoCompleteOptionObj;
export interface AutoCompleteOptionObj {
    label?: string | LNode;
    text?: string;
    [key: string]: any;
}
