import * as React from "react";
import * as PropTypes from "prop-types";
import { Size } from "../utils/Forms";
import "react-select/dist/react-select.css";
import "./Select.less";
import "../less/forms.less";
export interface SelectValueType {
    label: string;
    value: string;
}
export interface Props {
    id: string;
    name: string;
    clearable?: boolean;
    disabled?: boolean;
    label?: string;
    multi?: boolean;
    onFocus?: () => void;
    isLoading?: boolean;
    onChange?: Function;
    optionRenderer?: Function;
    options?: SelectValueType[];
    lazy?: boolean;
    loadOptions?: Function;
    filterOptions?: Function;
    placeholder?: string;
    readOnly?: boolean;
    searchable?: boolean;
    creatable?: boolean;
    creatablePromptFn?: Function;
    noResultsText?: React.ReactNode;
    required?: boolean;
    value?: string | SelectValueType | string[] | SelectValueType[];
    className?: string;
    error?: string;
    size?: Size;
    closeMenuOnSelect?: boolean;
    ariaLabel?: string;
}
interface State {
    hasBeenFocused: boolean;
}
export declare const cssClass: {
    CONTAINER: string;
    LABEL: string;
    LABEL_CONTAINER: string;
    LABEL_HIDDEN: string;
    REACT_SELECT: string;
    READ_ONLY: string;
};
export declare class Select extends React.Component<Props, State> {
    static propTypes: {
        id: PropTypes.Validator<string>;
        name: PropTypes.Validator<string>;
        clearable: PropTypes.Requireable<boolean>;
        disabled: PropTypes.Requireable<boolean>;
        label: PropTypes.Requireable<string>;
        multi: PropTypes.Requireable<boolean>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        isLoading: PropTypes.Requireable<boolean>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        optionRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        options: PropTypes.Requireable<PropTypes.InferProps<{
            label: PropTypes.Validator<string>;
            value: PropTypes.Validator<string>;
        }>[]>;
        lazy: PropTypes.Requireable<boolean>;
        loadOptions: PropTypes.Requireable<(...args: any[]) => any>;
        filterOptions: PropTypes.Requireable<(...args: any[]) => any>;
        placeholder: PropTypes.Requireable<string>;
        readOnly: PropTypes.Requireable<boolean>;
        searchable: PropTypes.Requireable<boolean>;
        creatable: PropTypes.Requireable<boolean>;
        creatablePromptFn: PropTypes.Requireable<(...args: any[]) => any>;
        noResultsText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        required: PropTypes.Requireable<boolean>;
        value: PropTypes.Requireable<string | string[] | PropTypes.InferProps<{
            label: PropTypes.Validator<string>;
            value: PropTypes.Validator<string>;
        }> | PropTypes.InferProps<{
            label: PropTypes.Validator<string>;
            value: PropTypes.Validator<string>;
        }>[]>;
        className: PropTypes.Requireable<string>;
        error: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<import("../utils/types").Values<{
            readonly SMALL: "small";
            readonly MEDIUM: "medium";
            readonly LARGE: "large";
            readonly FULL_WIDTH: "fullWidth";
        }>>;
        closeMenuOnSelect: PropTypes.Requireable<boolean>;
        ariaLabel: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        clearable: boolean;
        placeholder: string;
        searchable: boolean;
        creatable: boolean;
        closeMenuOnSelect: boolean;
        size: "fullWidth";
    };
    constructor(props: Props);
    render(): JSX.Element;
}
export {};
