import * as React from 'react';
import { AutocompleteOption, AutocompleteValue, TextFieldFilteredProps } from '../../../models/Autocomplete';
import { IconId } from '../../icon';
export declare const autocompleteVariants: readonly ["default", "text"];
type AutocompleteVariant = (typeof autocompleteVariants)[number];
export declare const autocompleteModes: readonly ["startsWith", "contains", "endsWith"];
type AutocompleteMode = (typeof autocompleteModes)[number];
export declare const autocompleteSizes: readonly ["S", "XS"];
type AutocompleteSize = (typeof autocompleteSizes)[number];
export type AutocompleteProps<T extends string, Multiple extends boolean | undefined, Value = AutocompleteValue<T, Multiple>, Option = AutocompleteOption<T>> = {
    /**
     * The variant of the Autocomplete
     */
    variant?: AutocompleteVariant;
    /**
     * The value handled by this Autocomplete component. If multiple=true, it should be an array of ids.
     * If multiple=false (by default) it should be a string.
     */
    value: Value;
    /**
     * The available options to be shown on dropdown
     */
    options: readonly Option[];
    /**
     * Whether the autocomplete is disabled or not.
     */
    disabled?: boolean;
    /**
     * Whether this component is working in multiple mode or single mode. By default it is single mode.
     * See `value` prop description for more info.
     */
    multiple?: Multiple;
    /**
     * Called when the value changes. You should handle it and update the `value` prop.
     */
    onChange?: (event: React.SyntheticEvent, value: Value) => void;
    /**
     * Properties to be pass through inner TextField component.
     */
    textFieldProps?: TextFieldFilteredProps;
    /**
     * Whether the search pattern is case sensitive or not.
     */
    isCaseSensitive?: boolean;
    /**
     * Whether the search pattern is diacritic sensitive or not.
     */
    isDiacriticSensitive?: boolean;
    /**
     * The mode to search within the options.
     */
    mode?: AutocompleteMode;
    /**
     * Use this function to render the desired text for each id. Leave it empty if the id is also the label.
     */
    renderLabel?: (id: T) => string;
    /**
     * Whether the autocomplete options are loading or not. Use only on initial load or if using async search approach
     */
    isLoading?: boolean;
    /**
     * This callback will be called when the searchText changes, so you can perform asynchronous on-demand load of options.
     * Use it along with the `isLoading` prop.
     */
    onSearch?: (searchText: string) => void;
    /**
     * Custom text to be shown when autocomplete options are loading by the `isLoading` prop.
     */
    loadingText?: string;
    /**
     * Custom text to be shown when no options are available to be selected.
     */
    noOptionsText?: string;
    /**
     * Enables the feature to use text written by the user besides predefined options
     */
    allowFreeText?: boolean;
    /**
     * Custom text to be shown when allowFreeText feature is enabled and written text is a new value to add.
     */
    addNewValueText?: string;
    /**
     * Enables close popover when an option is selected. Default value is true if not multiple, false if multiple.
     */
    closeOnSelect?: boolean;
    /**
     * Maximum length of the value
     */
    maxValueLength?: number;
    /**
     * Maximum amount of values allowed when multiple is enabled. If not set, there is no limit.
     */
    maxValues?: number;
    /**
     * Custom text to be shown when number of values reaches maxValues.
     */
    maxValuesText?: string;
    /**
     * Callback when options list popover is opened.
     */
    onOpen?: () => void;
    /**
     * Callback when options list popover is closed.
     */
    onClose?: () => void;
    /**
     * Disables clear button at the end of the component when field is dirty.
     */
    disableClear?: boolean;
    /**
     * Prevents the popover from closing when clicking outside of the autocomplete.
     * @default false
     */
    disableCloseOnClickAway?: boolean;
    /**
     * start icon in autocomplete
     */
    startIconId?: IconId;
    /**
     * Define min with that autocomplete can have. S => 328px. XS => 248px. @default 'S'
     */
    size?: AutocompleteSize;
    /**
     * Ref to the inner HTMLInputElement
     */
    ref?: React.Ref<HTMLInputElement>;
};
/**
 * Powered TextField with the ability to select from a predefined list of options, allowing to select one or multiple values.
 */
declare const Autocomplete: <T extends string, Multiple extends boolean | undefined = undefined, Value = AutocompleteValue<T, Multiple>>({ variant, value, multiple, textFieldProps, options, disabled, mode, isCaseSensitive, isDiacriticSensitive, onChange, renderLabel, isLoading, onSearch, loadingText, noOptionsText, allowFreeText, addNewValueText, closeOnSelect, maxValueLength, maxValues, maxValuesText, startIconId, onClose, onOpen, disableClear, disableCloseOnClickAway, size }: AutocompleteProps<T, Multiple, Value>) => import("react/jsx-runtime").JSX.Element;
export default Autocomplete;
