import { ReactNode } from 'react';
import { Option } from '../../atoms/InputSelect/InputSelect';
export type SelectOption = Option<string | number | readonly string[] | undefined>;
interface CommonProps {
    /**
     * Name of the field
     */
    name?: string;
    /**
     * List of available options
     */
    options: SelectOption[];
    /**
     * Select variation that will switch between styles for the Button .
     */
    variation?: 'initial' | 'default' | 'primary' | 'secondary';
    /**
     * className for the select.
     */
    className?: string;
    /**
     * String text for the label.
     */
    label?: string;
    /**
     * String text for the placeholder or a component element.
     */
    placeholder?: string;
    /**
     * Smaller descriptive text that can be added to the input.
     */
    message?: string;
    /**
     * className for the message.
     */
    messageClassName?: string;
    /**
     * className for the search input.
     */
    inputClassName?: string;
    /**
     * className for the wrapping Block element.
     */
    containerCss?: string;
    /**
     * Makes select required.
     */
    required?: boolean;
    /**
     * Allows to reset select value
     */
    isClearable?: boolean;
    /**
     * Disable select
     */
    isDisabled?: boolean;
    /**
     * menuIconProp
     */
    menuIcon?: ReactNode;
    /**
     * listSelected is a boolean, if true it will list the selected items after the select.
     */
    listSelected?: boolean;
    /**
     * A className for the Block element that is a parent of the list selected items.
     */
    listSelectedClassName?: string;
}
interface SingleValue extends CommonProps {
    defaultValue?: SelectOption;
    value?: SelectOption | null;
    onChange?: (value: SelectOption | null) => void;
    isMulti?: false;
}
interface MultiValue extends CommonProps {
    defaultValue?: SelectOption[];
    value?: SelectOption[];
    onChange?: (value: SelectOption[]) => void;
    isMulti: true;
}
export type SelectProps = SingleValue | MultiValue;
declare function Select({ options, name, isMulti, defaultValue, value, onChange, isClearable, placeholder, label, message, messageClassName, inputClassName, className, containerCss, required, isDisabled, variation, menuIcon, listSelected, listSelectedClassName, }: SelectProps): JSX.Element;
declare const MemoizedSelect: import("react").MemoExoticComponent<typeof Select>;
export default MemoizedSelect;
