/**
 * @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 TreeNode, { TreeNodeProps } from './tree-node';
export interface Node extends TreeNodeProps {
    children?: Node[];
}
export declare type Nodes = Node[];
export interface TreeProps {
    className?: string;
    style?: React.CSSProperties;
    selectable?: boolean;
    checkable?: boolean;
    multiple?: boolean;
    disabled?: boolean;
    blockNode?: boolean;
    withLine?: boolean;
    draggable?: boolean;
    checkStrictly?: boolean;
    searchable?: boolean;
    onSearch?: (searchValue: string) => void;
    searchPlaceholder?: string;
    defaultExpandAll?: boolean;
    expandIndexs?: React.ReactText[];
    selectedIndexs?: React.ReactText[];
    checkedIndexs?: React.ReactText[];
    onSelect?: (node: Node, indexs: React.ReactText[]) => void;
    onDeSelect?: (node: Node, indexs: React.ReactText[]) => void;
    onCheck?: (node: Node, e: React.ChangeEvent<HTMLInputElement>, checkedIndexs: React.ReactText[]) => void;
    onExpand?: (node: Node, visible: boolean) => void;
    loadData?: (node: Node) => Promise<Nodes>;
    formatter?: (node: Node) => React.ReactNode;
    onDragEnd?: (nodes: Nodes, dragNode: Node) => void;
    nodes?: Nodes;
    onContextMenu?: (node: Node, e: React.MouseEvent) => void;
}
export interface TreeState {
    renderNodes: Nodes;
    searchValue: string;
    selfSelectedIndexs: React.ReactText[];
    selfCheckedIndexs: React.ReactText[];
    indeterminateIndexs: React.ReactText[];
    selfExpandIndexs: React.ReactText[];
    fetchingIndexs: React.ReactText[];
}
declare class Tree extends React.PureComponent<TreeProps, TreeState> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        selectable: PropTypes.Requireable<boolean>;
        checkable: PropTypes.Requireable<boolean>;
        multiple: PropTypes.Requireable<boolean>;
        disabled: PropTypes.Requireable<boolean>;
        blockNode: PropTypes.Requireable<boolean>;
        withLine: PropTypes.Requireable<boolean>;
        draggable: PropTypes.Requireable<boolean>;
        checkStrictly: PropTypes.Requireable<boolean>;
        searchable: PropTypes.Requireable<boolean>;
        onSearch: PropTypes.Requireable<(...args: any[]) => any>;
        searchPlaceholder: PropTypes.Requireable<string>;
        defaultExpandAll: PropTypes.Requireable<boolean>;
        expandIndexs: PropTypes.Requireable<any[]>;
        selectedIndexs: PropTypes.Requireable<any[]>;
        checkedIndexs: PropTypes.Requireable<any[]>;
        onSelect: PropTypes.Requireable<(...args: any[]) => any>;
        onDeSelect: PropTypes.Requireable<(...args: any[]) => any>;
        onCheck: PropTypes.Requireable<(...args: any[]) => any>;
        onExpand: PropTypes.Requireable<(...args: any[]) => any>;
        loadData: PropTypes.Requireable<(...args: any[]) => any>;
        formatter: PropTypes.Requireable<(...args: any[]) => any>;
        onDragEnd: PropTypes.Requireable<(...args: any[]) => any>;
        nodes: PropTypes.Requireable<any[]>;
        onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: {
        selectable: boolean;
        searchPlaceholder: string;
        checkable: boolean;
        multiple: boolean;
        disabled: boolean;
        blockNode: boolean;
        withLine: boolean;
        draggable: boolean;
        checkStrictly: boolean;
        searchable: boolean;
        defaultExpandAll: boolean;
    };
    static Node: typeof TreeNode;
    constructor(props: TreeProps & {
        children: React.ReactNode;
    });
    componentDidUpdate(preProps: TreeProps & {
        children: React.ReactNode;
    }): void;
    private compileRenderParams;
    private onSelectHandler;
    private onCheckHandler;
    private onLoadDataHandler;
    private onExpandHandler;
    private onSearchHandler;
    private onDragSorter;
    renderTree(): JSX.Element;
    render(): JSX.Element;
}
export default Tree;
