import React from 'react';
import { PropRenderItem } from "../Select";
import { TextFieldProps } from "../TextField";
export declare type AutoCompleteItemDefault = {
    id: string | number;
    label: string;
    groupId?: number;
};
export declare type AutoCompleteGroupDefault = {
    label: string;
    id: number | string;
};
export declare type AutoCompletePropDropdownForm = 'default' | 'brick' | 'round';
export declare type AutoCompletePropGetItemLabel<ITEM> = (item: ITEM) => string;
export declare type AutoCompletePropGetItemKey<ITEM> = (item: ITEM) => string | number;
export declare type AutoCompletePropGetItemGroupId<ITEM> = (item: ITEM) => number | undefined;
export declare type AutoCompletePropGetGroupLabel<GROUP> = (group: GROUP) => string;
export declare type AutoCompletePropGetGroupId<GROUP> = (group: GROUP) => number | string;
export declare type AutoCompletePropSearchFunction<ITEM> = (item: ITEM, searchValue: string) => boolean;
export declare type AutoCompletePropOnChange = (value: string | null, props: {
    e: React.ChangeEvent | React.MouseEvent | React.KeyboardEvent;
    id?: string;
    name?: string;
}) => void;
export declare type AutoCompleteProps<TYPE extends string, ITEM = AutoCompleteItemDefault, GROUP = AutoCompleteGroupDefault> = {
    items: ITEM[];
    groups?: GROUP[];
    renderItem?: PropRenderItem<ITEM>;
    dropdownClassName?: string;
    dropdownForm?: AutoCompletePropDropdownForm;
    isLoading?: boolean;
    searchFunction?: AutoCompletePropSearchFunction<ITEM>;
    dropdownRef?: React.RefObject<HTMLDivElement>;
    getItemLabel?: AutoCompletePropGetItemLabel<ITEM>;
    getItemKey?: AutoCompletePropGetItemKey<ITEM>;
    getItemGroupKey?: AutoCompletePropGetItemGroupId<ITEM>;
    getGroupLabel?: AutoCompletePropGetGroupLabel<GROUP>;
    getGroupKey?: AutoCompletePropGetGroupId<GROUP>;
    onChange?: AutoCompletePropOnChange;
    virtualScroll?: boolean;
    onScrollToBottom?: () => void;
    onDropdownOpen?: (isOpen: boolean) => void;
    dropdownOpen?: boolean;
    ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
} & Omit<TextFieldProps<TYPE>, 'max' | 'min' | 'step' | 'incrementButtons' | 'onChange' | 'width'> & (ITEM extends {
    label: AutoCompleteItemDefault['label'];
} ? {} : {
    getItemLabel: AutoCompletePropGetItemLabel<ITEM>;
}) & (ITEM extends {
    id: AutoCompleteItemDefault['id'];
} ? {} : {
    getItemKey: AutoCompletePropGetItemKey<ITEM>;
}) & (GROUP extends {
    label: AutoCompleteGroupDefault['label'];
} ? {} : {
    getGroupLabel: AutoCompletePropGetGroupLabel<GROUP>;
}) & (GROUP extends {
    id: AutoCompleteGroupDefault['id'];
} ? {} : {
    getGroupKey: AutoCompletePropGetGroupId<GROUP>;
});
export declare type AutoCompleteComponent = <TYPE extends string, ITEM = AutoCompleteItemDefault, GROUP = AutoCompleteGroupDefault>(props: AutoCompleteProps<TYPE, ITEM, GROUP>) => React.ReactElement | null;
