import { SyntheticEvent } from 'react';
import { Control, FieldValues, Path } from 'react-hook-form';
import { AutocompleteChangeDetails, AutocompleteChangeReason, AutocompleteProps as MuiAutocompleteProps } from '@mui/material';
export type BaseOption = string | {
    id?: any;
    [key: string]: any;
};
export type BaseAutocompleteProps<T extends BaseOption> = Omit<MuiAutocompleteProps<T, boolean, boolean, boolean>, 'renderInput'> & {
    label: string;
    placeholder?: string;
    size?: 'small' | 'medium';
    required?: boolean;
    ['data-testId']?: string;
    testId?: string;
    idGetter?: (option: T) => any;
    value?: T | T[] | null;
    onChange?: (event: SyntheticEvent<Element, Event>, value: string | T | (string | T)[] | null, reason: AutocompleteChangeReason, details?: AutocompleteChangeDetails<T> | undefined) => void;
    getOptionLabel: (option: string | T) => string;
    onInputChange?: (event: SyntheticEvent<Element, Event>, value: string) => void;
    inputValue?: string;
    filterOptions?: (options: T[]) => T[];
};
export interface AutocompleteProps<TFieldValues extends FieldValues, T extends BaseOption> extends Omit<BaseAutocompleteProps<T>, 'value' | 'onChange'> {
    name: Path<TFieldValues>;
    control: Control<TFieldValues>;
}
