import { type AutocompleteRenderInputParams, type AutocompleteProps as MuiAutocompleteProps } from '@mui/material/Autocomplete';
import { type ReactNode } from 'react';
import { type OverflowedElementProps } from '../OverflowTypography';
import { type TextFieldProps } from '../TextField';
import type { WithoutEmotionSpecific } from '../types/WithoutEmotionSpecific';
export type { AutocompleteOwnerState, AutocompleteProps as MuiAutocompleteProps, AutocompleteRenderGetTagProps, AutocompleteRenderInputParams, AutocompleteRenderOptionState, } from '@mui/material/Autocomplete';
export type { PopperProps } from '@mui/material/Popper';
export type AutocompleteSize = 'small' | 'medium';
export type AutocompleteProps<TAutocompleteValueProps, TMultiple extends boolean, TDisableClearable extends boolean, TFreeSolo extends boolean> = Omit<WithoutEmotionSpecific<MuiAutocompleteProps<TAutocompleteValueProps, TMultiple, TDisableClearable, TFreeSolo>>, 'size' | 'renderInput' | 'noOptionsText' | 'closeText' | 'openText' | 'clearText'> & Pick<TextFieldProps, 'error' | 'success' | 'helperText' | 'label' | 'required' | 'inputRef' | 'placeholder' | 'inputProps'> & {
    renderInput?: (props: TextFieldProps & Omit<AutocompleteRenderInputParams, 'size'>) => ReactNode;
    size?: AutocompleteSize;
    /**
     * Опции для OverflowTypography, который оборачивает содержимое item
     */
    overflowOption?: OverflowedElementProps;
    /**
     * Текст ошибки, который будет отображаться в меню автокомплита
     * Пример использования: информирование пользователя о том, что АПИ
     * используемого сервиса в текущий момент недоступно
     */
    loadedDataError?: string;
    /**
     * Если true, будет отображено сообщение об ошибке при загрузке данных
     * в меню автокомплита
     */
    isLoadedDataError?: boolean;
    /**
     * Текст для отображения, когда нет данных
     * @default Нет данных
     */
    noOptionsText?: ReactNode;
    /**
     * Переопределяет текст для кнопки закрытия всплывающего окна
     * @default Закрыть
     */
    closeText?: string;
    /**
     * Переопределяет текст для кнопки открытия всплывающего окна
     * @default Открыть
     */
    openText?: string;
    /**
     * Переопределяет текст для кнопки отчистки поля
     * @default Очистить
     */
    clearText?: string;
    /**
     * Включает/отключает резервирование места под helperText
     */
    hideHelperText?: boolean;
};
