import React from "react";
import { FormControlProps, AutocompleteChangeReason, AutocompleteChangeDetails, AutocompleteProps, AutocompleteRenderInputParams } from "@mui/material";
import { FormikValues } from "formik";
import OptionsType from "../../../components/Form/definitions/OptionsType";
import OptionInterface from "../../../components/Form/definitions/OptionInterface";
import FieldPlaceholderInterface from "../../../components/Form/definitions/FieldPlaceholderInterface";
import { SelectValueType, Multiple, DisableClearable, FreeSolo } from "../../../components/Form/definitions/AutocompleteTypes";
type MultiselectAutocompleteProps = AutocompleteProps<OptionInterface, Multiple, DisableClearable, FreeSolo>;
type MultiselectAutocompletePartialProps<T> = {
    [P in keyof T]?: T[P];
};
type MultiselectAutocompleteOptionalProps = MultiselectAutocompletePartialProps<MultiselectAutocompleteProps>;
interface MultiselectSpecificProps {
    options: OptionsType;
    disableTranslateOption?: boolean;
    onChange?: (path: string, setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void, value: SelectValueType, onChange: () => void, values: FormikValues, event: React.SyntheticEvent, reason: AutocompleteChangeReason, name: string, details?: AutocompleteChangeDetails<OptionInterface>) => void;
    groupBy?: (option: OptionInterface) => string;
    disableTranslateGroupBy?: boolean;
    renderInput?: (params: MultiselectRenderInputProps) => React.ReactNode;
    autocompleteProps?: MultiselectAutocompleteOptionalProps;
    formControlProps?: FormControlProps;
}
type MultiselectProps = MultiselectSpecificProps & FieldPlaceholderInterface;
interface MultiselectRenderInputProps extends AutocompleteRenderInputParams {
    label?: React.ReactNode;
    required: boolean;
    placeholder?: string;
    onBlur: () => void;
    error: boolean;
}
declare const MultiselectRenderInput: (params: MultiselectRenderInputProps) => React.JSX.Element;
declare const Multiselect: ({ options, disableTranslateOption, onChange, groupBy, disableTranslateGroupBy, renderInput, autocompleteProps, formControlProps, validate: fieldValidate, ...field }: MultiselectProps) => React.JSX.Element | null;
export default Multiselect;
export { MultiselectProps, MultiselectSpecificProps, MultiselectRenderInput, MultiselectRenderInputProps, MultiselectAutocompleteProps, MultiselectAutocompleteOptionalProps, };
