import React, { Component, Key } from 'react';
import PropTypes from 'prop-types';
import { C7nTreeNodeProps, EventDataNode, DataNode, TreeProps as C7NTreeProps } from '../../../lib/tree';
import { CheckInfo } from '../../../lib/rc-components/tree/Tree';
import DataSet from '../data-set/DataSet';
import { NodeRenderer, TreeNodeRenderer } from './util';
export interface C7nNodeEvent extends EventDataNode {
    eventKey: string;
}
export interface TreeNodeCheckedEvent {
    event: 'check';
    node: C7nNodeEvent;
    checked: boolean;
    nativeEvent: MouseEvent;
    checkedNodes: DataNode[];
    checkedNodesPositions?: {
        node: DataNode;
        pos: string;
    }[];
    halfCheckedKeys?: string[];
}
export interface C7nTreeNodeSelectedEvent {
    event: 'select';
    selected: boolean;
    node: C7nNodeEvent;
    selectedNodes: DataNode[];
    nativeEvent: MouseEvent;
}
export interface C7nTreeNodeExpandedEvent {
    expanded: boolean;
    nativeEvent: MouseEvent;
    node: C7nNodeEvent;
}
export interface TreeProps extends C7NTreeProps {
    dataSet?: DataSet;
    renderer?: NodeRenderer;
    titleField?: string;
    onTreeNode?: TreeNodeRenderer;
    /**
     * @deprecated
     */
    treeNodeRenderer?: TreeNodeRenderer;
    async?: boolean;
}
export declare function defaultRenderer({ text }: {
    text: any;
}): any;
export default class Tree extends Component<TreeProps> {
    static displayName: string;
    static propTypes: {
        prefixCls: PropTypes.Requireable<string>;
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        tabIndex: PropTypes.Requireable<string | number>;
        children: PropTypes.Requireable<any>;
        treeData: PropTypes.Requireable<any[]>;
        showLine: PropTypes.Requireable<boolean | object>;
        showIcon: PropTypes.Requireable<boolean>;
        icon: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        selectable: PropTypes.Requireable<boolean>;
        disabled: PropTypes.Requireable<boolean>;
        multiple: PropTypes.Requireable<boolean>;
        checkable: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        checkStrictly: PropTypes.Requireable<boolean>;
        draggable: PropTypes.Requireable<boolean>;
        defaultExpandParent: PropTypes.Requireable<boolean>;
        autoExpandParent: PropTypes.Requireable<boolean>;
        defaultExpandAll: PropTypes.Requireable<boolean>;
        defaultExpandedKeys: PropTypes.Requireable<(string | number | null | undefined)[]>;
        expandedKeys: PropTypes.Requireable<(string | number | null | undefined)[]>;
        defaultCheckedKeys: PropTypes.Requireable<(string | number | null | undefined)[]>;
        checkedKeys: PropTypes.Requireable<object>;
        defaultSelectedKeys: PropTypes.Requireable<(string | number | null | undefined)[]>;
        selectedKeys: PropTypes.Requireable<(string | number | null | undefined)[]>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
        onExpand: PropTypes.Requireable<(...args: any[]) => any>;
        onCheck: PropTypes.Requireable<(...args: any[]) => any>;
        onSelect: PropTypes.Requireable<(...args: any[]) => any>;
        onLoad: PropTypes.Requireable<(...args: any[]) => any>;
        loadData: PropTypes.Requireable<(...args: any[]) => any>;
        loadedKeys: PropTypes.Requireable<(string | number | null | undefined)[]>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onRightClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDragStart: PropTypes.Requireable<(...args: any[]) => any>;
        onDragEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onDragOver: PropTypes.Requireable<(...args: any[]) => any>;
        onDragLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onDragEnd: PropTypes.Requireable<(...args: any[]) => any>;
        onDrop: PropTypes.Requireable<(...args: any[]) => any>;
        filterTreeNode: PropTypes.Requireable<(...args: any[]) => any>;
        motion: PropTypes.Requireable<object>;
        switcherIcon: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
    };
    static TreeNode: React.FC<import("../../components/tree").TreeNodeProps>;
    stateCheckedKeys: string[];
    stateExpandedKeys: string[];
    stateLoadedKeys: string[];
    componentWillMount(): void;
    componentWillReceiveProps(nextProps: any): void;
    componentWillUnmount(): void;
    processDataSetListener(flag: boolean): void;
    handleDataSetLoad(): void;
    initDefaultExpandedRows(): void;
    initDefaultCheckRows(): void;
    initDefaultLoadedRows(): void;
    initDefaultSelectRows(): void;
    /**
     * 处理tree的props expand check的默认事件
     * @param dataSet
     * @param defaultAll
     * @param defaultKeys
     */
    dealDefaultCheckExpand(dataSet: DataSet | undefined, defaultKeys: Key[] | undefined, defaultAll?: boolean): string[];
    get expandedKeys(): string[];
    get checkedKeys(): string[];
    get selectedKeys(): string[];
    constructor(props: any, context: any);
    setExpand(eventObj: C7nTreeNodeExpandedEvent): boolean;
    setCheck(eventObj: C7nTreeNodeProps): boolean;
    handleExpand(expandedKeys: string[], eventObj: C7nTreeNodeExpandedEvent): void;
    handleCheck(checkedKeys: string[], eventObj: CheckInfo, oldCheckedKeys: string[]): void;
    handleSelect(selectedKeys: string[], eventObj: C7nTreeNodeSelectedEvent): void;
    handleLoadData(event: any): Promise<any>;
    render(): JSX.Element;
}
