import { Component } from 'react';
import { ICascaderItem, CascaderValue, ICascaderBaseProps, ICascaderChangeMeta, ICascaderLoadMeta, ICascaderMultipleChangeMeta, CascaderSimplifySelectionMode } from './types';
import { IDisabledContext } from '../disabled';
import { TagsTrigger } from './trigger/TagsTrigger';
import { Forest } from './forest';
import { ICascaderTagsProps } from './trigger/Tags';
export { ICascaderTagsProps };
export interface IMenuCascaderCommonProps extends ICascaderBaseProps {
    loadOptions?: (selectedOptions: ICascaderItem[] | null, meta: ICascaderLoadMeta) => Promise<void>;
    expandTrigger?: 'click' | 'hover';
    scrollable?: boolean;
    loadChildrenOnScroll?: boolean;
    searchable?: boolean;
    async?: boolean;
    asyncFilter?: (keyword: string, limit: number) => Promise<Array<ICascaderItem[]>>;
    filter?: (keyword: string, path: ICascaderItem[]) => boolean;
    highlight?: (keyword: string, path: ICascaderItem[]) => React.ReactNode;
    limit?: number;
    multipleType?: 'normal' | 'checkbox';
    maxLine?: number | null;
    lineHeight?: number;
}
export interface IMenuCascaderSingleProps extends IMenuCascaderCommonProps {
    multiple?: false;
    value?: CascaderValue[];
    onChange: (value: CascaderValue[], selectedOptions: ICascaderItem[], meta: ICascaderChangeMeta) => void;
    changeOnSelect?: boolean;
}
export interface IMenuCascaderMultipleProps extends IMenuCascaderCommonProps {
    multiple?: true;
    value?: Array<CascaderValue[]>;
    onChange: (value: Array<CascaderValue[]>, selectedOptions: Array<ICascaderItem[]>, meta: ICascaderMultipleChangeMeta) => void;
    renderTags?: (props: ICascaderTagsProps) => React.ReactNode;
    simplifySelection?: boolean;
    simplifySelectionMode?: CascaderSimplifySelectionMode;
}
export declare type IMenuCascaderProps = IMenuCascaderMultipleProps | IMenuCascaderSingleProps;
interface IMenuCascaderState {
    options: Forest;
    activeValue: CascaderValue[];
    selectedPaths: Array<ICascaderItem[]>;
    visible: boolean;
    prevProps: IMenuCascaderProps;
    keyword: string;
    isSearching: boolean;
    searchResultList: Array<ICascaderItem[]>;
    loading: string[];
}
export declare class MenuCascader extends Component<IMenuCascaderProps, IMenuCascaderState> {
    static defaultProps: {
        value: any[];
        options: any[];
        clearable: boolean;
        multiple: boolean;
        multipleType: string;
        maxLine: any;
        lineHeight: number;
        expandTrigger: string;
        scrollable: boolean;
        loadChildrenOnScroll: boolean;
        searchable: boolean;
        async: boolean;
        limit: number;
        renderValue: (path: ICascaderItem[]) => string;
        filter: (keyword: string, path: ICascaderItem[]) => boolean;
        highlight: (keyword: string, path: ICascaderItem[]) => import("react").ReactNode;
        simplifySelectionMode: string;
    };
    constructor(props: IMenuCascaderProps);
    tagsTriggerRef: import("react").RefObject<TagsTrigger>;
    static contextType: import("react").Context<IDisabledContext>;
    context: IDisabledContext;
    static getDerivedStateFromProps(props: IMenuCascaderProps, state: IMenuCascaderState): Partial<IMenuCascaderState>;
    private get disabled();
    private isControlled;
    private getVisible;
    private setVisible;
    private getSelectionMapImpl;
    private getSelectionMap;
    private getSimplifySelectionMap;
    private simplify;
    private getSearchResultList;
    private onVisibleChange;
    private onKeywordChange;
    private filterOptions;
    private setSearchState;
    private onMenuOptionHover;
    private onMenuOptionClick;
    private onMenuOptionSelect;
    private toggleMenuOption;
    private onSearchOptionClick;
    private toggleSearchOption;
    private onClear;
    private scrollLoad;
    private onRemove;
    private renderPopoverContent;
    render(): JSX.Element;
}
export default MenuCascader;
