import { AutocompleteProps as MuiAutocompleteProps, TypographyProps } from '@mui/material';
export type BaseAutocompleteProps<T> = {
    /**
     * Name of the component. Must match a key from initialValues in Formik.
     * @required
     */
    name: string;
    /**
     * The label for the text field.
     * @recommended
     */
    label?: string;
    /**
     * List of options for the autocomplete in label/value format
     * @recommended
     */
    options: T[];
    /**
     * Specifies the visual input style.
     * @default 'outlined'
     */
    variant?: 'filled' | 'outlined' | 'standard';
    /**
     * If true, the prepackaged dynamic input label that comes with Material UI's input components
     * will be replaced with a static typography label above the input.
     * @default false
     */
    staticLabel?: boolean;
    /**
     * Props from MUI-Bueno's Typography component.
     * Used to customize the label when the static label option is selected.
     */
    staticLabelProps?: TypographyProps;
    /**
     * Margin for the FormControl
     */
    margin?: 'dense' | 'none' | 'normal';
    /**
     * If true, an asterisk will be displayed next to the label
     * Most browsers will automatically validate this, but it's recommended to also
     * have Formik also validate as well so that `Error` displays for consistency.
     * @default false
     */
    required?: boolean;
    /**
     * When true, clears the input text when the user selects an option from the dropdown.
     * Useful when adding items from the Autocomplete to a list or table.
     */
    clearOnSelect?: boolean;
    /**
     * When using Autocomplete with objects, this prop can be used to store only a property of that object in formik.
     *
     * For example, if you have `type User = { id: number; firstName: string; lastName: string; ... }`, you can
     * set useFieldAsValue="id" if you want formik to only store the user's id rather than the whole user object.
     *
     * NOTE: This will require extra processing on the client-side compared to just using the object for the formik value
     * because the Autocomplete will have to search `options` for the object with the property matching formik's initial value.
     *
     */
    useFieldAsValue?: string;
};
/**
 * Type used to define props passed into Autocomplete component
 */
export type AutocompleteProps<T> = BaseAutocompleteProps<T> & Omit<MuiAutocompleteProps<T, // Option type
false, // Multiple -- allows multiple options to be selected (enables `multiple` prop)
boolean, // DisableClearable -- allows disabling of the clear button (enables `disableClearable` prop)
false>, 'renderInput' | 'options' | 'value' | 'multiple' | 'freeSolo' | 'inputValue'>;
/**
 * `Autocomplete` is a mix between a `TextField` and `Select` component.
 * As the user types, options that match their query are presented.
 *
 * Use this component when you have a lot of options and want to reduce the amount of scrolling
 * users would have to do if they were to use a `Select`.
 *
 * Can be used with primitives or objects. For objects, make sure to override `getOptionLabel`.
 *
 * __IMPORTANT__: If you need to dynamically load options as the user types, check out `DynamicAutocomplete`, as this
 * has automated a lot of the settings.
 */
export declare const Autocomplete: <T>(props: AutocompleteProps<T>) => import("react/jsx-runtime").JSX.Element;
