import React from 'react';
import { DefaultProps, MantineSize } from '../../theme';
import { InputWrapperBaseProps, InputWrapperStylesNames } from '../InputWrapper/InputWrapper';
import { InputBaseProps, InputStylesNames } from '../Input/Input';
import { MantineTransition } from '../Transition/Transition';
import useStyles from './Autocomplete.styles';
export declare type AutocompleteStylesNames = InputStylesNames | InputWrapperStylesNames | keyof ReturnType<typeof useStyles>;
export interface AutocompleteItem {
    value: string;
    [key: string]: any;
}
export interface AutocompleteProps extends DefaultProps<AutocompleteStylesNames>, InputBaseProps, InputWrapperBaseProps, Omit<React.ComponentPropsWithoutRef<'input'>, 'size' | 'onChange'> {
    /** Input size */
    size?: MantineSize;
    /** Get input ref */
    elementRef?: React.ForwardedRef<HTMLInputElement>;
    /** Autocomplete data used to renderer items in dropdown */
    data: AutocompleteItem[];
    /** Change item renderer */
    itemComponent?: React.FC<any>;
    /** Dropdown shadow from theme or any value to set box-shadow */
    shadow?: string;
    /** Limit amount of items rendered in dropdown */
    limit?: number;
    /** Called when item from dropdown was selected */
    onItemSubmit?(item: AutocompleteItem): void;
    /** Controlled input value */
    value?: string;
    /** Uncontrolled input defaultValue */
    defaultValue?: string;
    /** Controlled input onChange handler */
    onChange?(value: string): void;
    /** Dropdown body appear/disappear transition */
    transition?: MantineTransition;
    /** Dropdown body transition duration */
    transitionDuration?: number;
    /** Dropdown body transition timing function, defaults to theme.transitionTimingFunction */
    transitionTimingFunction?: string;
    /** Initial dropdown opened state */
    initiallyOpened?: boolean;
    /** Function based on which items in dropdown are filtered */
    filter?(value: string, item: AutocompleteItem): boolean;
}
export declare function Autocomplete({ className, style, required, label, id, error, description, size, shadow, data, limit, value, defaultValue, onChange, itemComponent: Item, onItemSubmit, onKeyDown, onFocus, onBlur, onClick, transition, transitionDuration, initiallyOpened, transitionTimingFunction, wrapperProps, elementRef, themeOverride, classNames, styles, filter, ...others }: AutocompleteProps): JSX.Element;
export declare namespace Autocomplete {
    var displayName: string;
}
//# sourceMappingURL=Autocomplete.d.ts.map