/**
 * @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 { OptionTitles } from './cascader-card';
export interface Option {
    label: string;
    value: React.ReactText;
    disabled?: boolean;
    children: Option[];
    [key: string]: any;
}
export declare type Options = Option[];
export interface CascaderProps {
    className?: string;
    style?: React.CSSProperties;
    visible?: boolean;
    defaultVisible?: boolean;
    externalWheelHide?: boolean;
    tabIndex?: number;
    options: Options;
    optionTitles?: OptionTitles;
    onChange?: (values: React.ReactText[]) => void;
    changeOnSelect?: boolean;
    defaultValue?: React.ReactText[];
    value?: React.ReactText[];
    noDataDescription?: React.ReactNode;
    noDataImg?: string;
    noDataImgStyle?: React.CSSProperties;
    mode?: 'list' | 'card';
    placeholder?: string;
    showArrow?: boolean;
    disabled?: boolean;
    searchable?: boolean;
    formatter?: (options: Options) => React.ReactNode;
    separator?: React.ReactNode;
    onSearch?: (value: string) => void;
    onFilter?: (searchValue: string, option: Option) => boolean;
    clearable?: boolean;
}
export interface CascaderState {
    renderOptions: Options;
    searchValue: string;
    searching: boolean;
    selectorVisible: boolean;
    selectedOptions: Options;
    showClear: boolean;
    optionsTier: number;
    activeOption: Option;
    activeFilterOptions: Options;
}
declare class Cascader extends React.PureComponent<CascaderProps, CascaderState> {
    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>;
        options: PropTypes.Validator<any[]>;
        optionTitles: PropTypes.Requireable<any[]>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        changeOnSelect: PropTypes.Requireable<boolean>;
        defaultValue: PropTypes.Requireable<any[]>;
        value: PropTypes.Requireable<any[]>;
        noDataDescription: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        noDataImg: PropTypes.Requireable<string>;
        noDataImgStyle: PropTypes.Requireable<object>;
        mode: PropTypes.Requireable<string>;
        placeholder: PropTypes.Requireable<string>;
        showArrow: PropTypes.Requireable<boolean>;
        disabled: PropTypes.Requireable<boolean>;
        searchable: PropTypes.Requireable<boolean>;
        formatter: PropTypes.Requireable<(...args: any[]) => any>;
        separator: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        onSearch: PropTypes.Requireable<(...args: any[]) => any>;
        onFilter: PropTypes.Requireable<(...args: any[]) => any>;
        clearable: PropTypes.Requireable<boolean>;
    };
    static defaultProps: {
        visible: boolean;
        defaultVisible: boolean;
        externalWheelHide: boolean;
        tabIndex: number;
        mode: string;
        changeOnSelect: boolean;
        searchable: boolean;
        showArrow: boolean;
        disabled: boolean;
        separator: string;
        clearable: boolean;
    };
    private inputElement;
    constructor(props: CascaderProps);
    componentDidUpdate(preProps: CascaderProps, preState: CascaderState): void;
    private clearSelectedValues;
    private onOptionMouseEnter;
    private onOptionMouseLeave;
    private onFilterOptionMouseEnter;
    private onFilterOptionMouseLeave;
    private onTriggerMouseEnterHandler;
    private onTriggerMouseLeaveHandler;
    private onKeyboardOperation;
    private onSearchChangeHandler;
    private onSearchFocusHandler;
    private onSearchBlurHandler;
    private onVisibleChange;
    private onSelectHandler;
    private onFilterSelectHandler;
    private renderDrop;
    render(): JSX.Element;
}
export default Cascader;
