import * as React from 'react';
import { TextFieldProps } from '@material-ui/core/TextField';
import { Theme, WithStyles } from '@material-ui/core/styles';
import { ValueType } from 'react-select/lib/types';
import { OptionProps } from 'react-select/lib/components/Option';
import { getOptionValue, getOptionLabel } from 'react-select/lib/builtins';
import { StylesConfig } from 'react-select/lib/styles';
import { SelectComponents } from 'react-select/lib/components';
import './Autocomplete.scss';
declare const styles: ({ spacing, palette, transitions }: Theme) => Record<"input" | "valueContainer" | "valueContainerWithItems" | "chipFocused" | "chip" | "noOptionsMessage" | "menuItem" | "placeholder" | "inputUnderline" | "inputUnderlineDisabled" | "outlinedInput" | "filledInput" | "dropdownChevron" | "dropdownChevronFocused", import("@material-ui/styles").CSSProperties | (() => import("@material-ui/styles").CSSProperties)>;
interface IDefaultOptionType {
    label: string;
    value: string;
}
export interface IProps<OptionType = IDefaultOptionType> extends WithStyles<typeof styles> {
    options: OptionType[];
    getOptionLabel?: getOptionLabel<OptionType>;
    getOptionValue?: getOptionValue<OptionType>;
    chipAvatar?: (d: OptionType) => React.ReactNode;
    groupBy?: (d: OptionType) => string | undefined | null;
    creatable?: boolean;
    isLoading?: boolean;
    selection?: string | ValueType<OptionType>;
    onChange?: (val: ValueType<OptionType>) => void;
    optionRenderer?: (props: OptionProps<OptionType>) => JSX.Element;
    placeholder?: string;
    errorText?: string;
    visibleRows?: number;
    rowHeight?: number;
    disabled?: boolean;
    isClearable?: boolean;
    textFieldProps?: TextFieldProps;
    className?: string;
    isMulti?: boolean;
    label?: string;
    components?: Partial<SelectComponents<OptionType>>;
    styles?: StylesConfig;
}
export declare function Autocomplete<OptionType = IDefaultOptionType>(props: IProps<OptionType>): JSX.Element;
declare function Wrapper<OptionType>(props: Pick<IProps<OptionType>, Exclude<keyof IProps<OptionType>, 'classes'>> & {
    classes?: Partial<WithStyles<typeof styles>['classes']>;
}): JSX.Element;
export default Wrapper;
