/**
 * @license chowa v1.1.3
 *
 * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import * as React from 'react';
import * as PropTypes from 'prop-types';
import SelectOption, { SelectOptionProps } from './select-option';
import SelectOptionGroup, { SelectOptionGroupProps } from './select-option-group';
export declare type Option = SelectOptionProps & {
    children: React.ReactNode;
};
export interface OptionGroup extends SelectOptionGroupProps {
    options: [(Option | OptionGroup)?];
}
export declare type Options = [(Option | OptionGroup)?];
export interface SelectProps {
    className?: string;
    style?: React.CSSProperties;
    visible?: boolean;
    defaultVisible?: boolean;
    externalWheelHide?: boolean;
    options?: Options;
    tabIndex?: number;
    multiple?: boolean;
    disabled?: boolean;
    showArrow?: boolean;
    searchable?: boolean;
    defaultValue?: any | any[];
    value?: any | any[];
    placeholder?: string;
    onChange?: (value: any[] | any) => void;
    onDeselect?: (value: any) => void;
    onSelect?: (value: any) => void;
    onSearch?: (searchValue: string) => void;
    onFilter?: (searchValue: string, option: Option) => boolean;
    noDataDescription?: React.ReactNode;
    noDataImg?: string;
    noDataImgStyle?: React.CSSProperties;
    clearable?: boolean;
}
interface SelectState {
    renderOptions: Options;
    selectedOptions: Option[];
    selectorVisible: boolean;
    clearBtnVisible: boolean;
    searching: boolean;
    searchValue: string;
    activeOption: Option;
}
declare class Select extends React.PureComponent<SelectProps, SelectState> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        visible: PropTypes.Requireable<boolean>;
        defaultVisible: PropTypes.Requireable<boolean>;
        externalWheelHide: PropTypes.Requireable<boolean>;
        tabIndex: PropTypes.Requireable<number>;
        multiple: PropTypes.Requireable<boolean>;
        disabled: PropTypes.Requireable<boolean>;
        showArrow: PropTypes.Requireable<boolean>;
        searchable: PropTypes.Requireable<boolean>;
        defaultValue: PropTypes.Requireable<any>;
        value: PropTypes.Requireable<any>;
        placeholder: PropTypes.Requireable<string>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onDeselect: PropTypes.Requireable<(...args: any[]) => any>;
        onSelect: PropTypes.Requireable<(...args: any[]) => any>;
        onSearch: PropTypes.Requireable<(...args: any[]) => any>;
        onFilter: PropTypes.Requireable<(...args: any[]) => any>;
        noDataDescription: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        noDataImg: PropTypes.Requireable<string>;
        noDataImgStyle: PropTypes.Requireable<object>;
        clearable: PropTypes.Requireable<boolean>;
    };
    static defaultProps: {
        visible: boolean;
        defaultVisible: boolean;
        externalWheelHide: boolean;
        tabIndex: number;
        multiple: boolean;
        disabled: boolean;
        showArrow: boolean;
        searchable: boolean;
        clearable: boolean;
    };
    static Option: typeof SelectOption;
    static OptionGroup: typeof SelectOptionGroup;
    private inputElement;
    constructor(props: SelectProps & {
        children: React.ReactNode;
    });
    componentDidUpdate(preProps: SelectProps & {
        children: React.ReactElement<any>;
    }, preState: SelectState): void;
    private onKeyboardOperation;
    private onTriggerMouseEnterHandler;
    private onTriggerMouseLeaveHandler;
    private onSearchChangeHandler;
    private onSearchFocusHandler;
    private onSearchBlurHandler;
    private clearSelected;
    private onVisibleChange;
    private onDeSelectHandler;
    private onSelectHandler;
    private onOptionMouseEnter;
    private onOptionMouseLeave;
    private renderContent;
    render(): JSX.Element;
}
export default Select;
