import type { SelectProps as MuiSelectProps } from '@mui/material/Select';
import { type ReactNode } from 'react';
import { type WithoutEmotionSpecific } from '../types/WithoutEmotionSpecific';
export type SelectProps<TValue> = WithoutEmotionSpecific<Omit<MuiSelectProps<TValue>, 'variant' | 'color' | 'onOpen'>> & {
    loading?: boolean;
    placeholder?: string;
    getOptionLabel?: (value: string | number) => string | number;
    /**
     * Добавляет вспомогательный текст под селектом
     */
    helperText?: ReactNode;
    /**
     * Включает/отключает резервирование места под helperText
     */
    hideHelperText?: boolean;
    /**
     * Если `false`, кнопка сброса не отобразится
     * @default true
     */
    isShowClearButton?: boolean;
    success?: boolean;
    error?: boolean;
    label?: string;
    /**
     * Если true, то отобразится option "Выбрать все"
     * работает только с multiple
     */
    isEnableAllSelection?: boolean;
    /**
     * Массив value, нужен для работы опции "Выбрать все"
     */
    valueOptions?: TValue;
    /**
     * Выполняется при выборе всех элементов, после нажатия 'Выбрать все'
     */
    onSelectAll?: () => void;
    /**
     * Выполняется при отмене выбора всех элементов, после нажатия 'Выбрать все'
     */
    onUnselectAll?: () => void;
    /**
     * Выполняется при открытии поповера со списком элементов
     */
    onOpen?: VoidFunction;
};
export type ClearButtonProps = {
    onClick: () => void;
    disabled?: boolean;
};
