import { ReactNode } from 'react';
import { Control, FieldValues, Path, PathValue } from 'react-hook-form';
import { SelectChangeEvent, SelectProps as MuiSelectProps } from '@mui/material';

export interface SelectValueOption {
    value: string | number;
    label: ReactNode;
    disabled?: boolean;
}
type OnChangeHandler<T> = (event: SelectChangeEvent<PathValue<T, Path<T>>[]>, child: ReactNode) => void;
interface SelectProps<T extends FieldValues> {
    name: Path<T>;
    control: Control<T>;
    label: string;
    options: SelectValueOption[];
    defaultValue?: PathValue<T, Path<T>>;
    errorMessage?: string;
    multiple?: boolean;
    disabled?: boolean;
    required?: boolean;
    dataTestId?: string;
    leadingOption?: ReactNode;
    renderValue?: (value: PathValue<T, Path<T>> | PathValue<T, Path<T>>[]) => ReactNode;
    onChange?: OnChangeHandler<T>;
    variant?: MuiSelectProps['variant'];
    size?: MuiSelectProps['size'];
    clearable?: boolean;
}
export declare const Select: <T extends FieldValues>({ name, control, label, defaultValue: defaultValueProp, options, errorMessage: errorMessageProps, multiple, disabled, required, dataTestId, renderValue, onChange: onChangeProps, variant, size, clearable, }: SelectProps<T>) => import("react/jsx-runtime").JSX.Element;
export {};
