import * as react_jsx_runtime from 'react/jsx-runtime';
import { SelectFieldProps } from '@chakra-ui/react';
import { MultiValue, SingleValue, Props, PropsValue, SelectInstance, GroupBase } from 'chakra-react-select';
import { ReactNode, Ref } from 'react';

interface SelectOptionGroup<T = SelectFieldProps['value']> {
    label: string;
    options: SelectOption<T>[];
}
interface SelectOption<T = SelectFieldProps['value']> {
    value: T;
    label?: string | ReactNode;
    disabled?: boolean;
    invalid?: boolean;
}
interface SelectProps<T> extends Props<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;
}
declare function isSingleValue<T>(option: MultiValue<SelectOption<T>> | SingleValue<SelectOption<T>>): option is SingleValue<SelectOption<T>>;
declare function isMultiValue<T>(option: MultiValue<SelectOption<T>> | SingleValue<SelectOption<T>>): option is SelectOption<T>[];
declare function isSingleSelectOptions<T>(options: SelectOption<T>[] | SelectOptionGroup<T>[]): options is SelectOption<T>[];
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>) => react_jsx_runtime.JSX.Element;

export { SelectOption, SelectOptionGroup, SelectProps, Select as default, isGroupSelectOptions, isMultiValue, isSingleSelectOptions, isSingleValue };
