import { SelectFieldProps } from '@chakra-ui/react';
import { Props as ChakraReactSelectProps, GroupBase, PropsValue, MultiValue, SelectInstance, SingleValue } from 'chakra-react-select';
import { ReactNode, Ref } from 'react';
export interface SelectOptionGroup<T = SelectFieldProps['value']> {
    label: string;
    options: SelectOption<T>[];
}
export interface SelectOption<T = SelectFieldProps['value']> {
    value: T;
    label?: string | ReactNode;
    disabled?: boolean;
    invalid?: boolean;
}
export interface SelectProps<T> extends ChakraReactSelectProps<SelectOption<T>> {
    max?: number;
    options: SelectOption<T>[] | SelectOptionGroup<T>[];
    value?: PropsValue<SelectOption<T>>;
    defaultValue?: PropsValue<SelectOption<T>>;
    innerRef?: Ref<SelectInstance<SelectOption<T>, boolean, GroupBase<SelectOption<T>>>>;
    creatable?: boolean;
}
export declare function isSingleValue<T>(option: MultiValue<SelectOption<T>> | SingleValue<SelectOption<T>>): option is SingleValue<SelectOption<T>>;
export declare function isMultiValue<T>(option: MultiValue<SelectOption<T>> | SingleValue<SelectOption<T>>): option is SelectOption<T>[];
export declare function isSingleSelectOptions<T>(options: SelectOption<T>[] | SelectOptionGroup<T>[]): options is SelectOption<T>[];
export declare function isGroupSelectOptions<T>(options: SelectOption<T>[] | SelectOptionGroup<T>[]): options is SelectOptionGroup<T>[];
declare const Select: <T = string | number | readonly string[] | undefined>({ name, options, isMulti, max, hideSelectedOptions, classNames, chakraStyles, innerRef, defaultValue, value, formatGroupLabel, selectedOptionColorScheme, selectedOptionStyle, onMenuOpen, onMenuClose, closeMenuOnSelect, components, creatable, ...otherProps }: SelectProps<T>) => import("react/jsx-runtime").JSX.Element;
export default Select;
