import { ExtractPropTypes, PropType, CSSProperties, DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { CustomSlotsType, VueNode } from '../_util/type';
import { DataNode, EventDataNode, FieldNames, Key, Direction } from '../vc-tree/interface';
import { TreeNodeProps, ExpandAction, AllowDrop, CheckInfo } from '../vc-tree/props';
import { VueTypeValidableDef } from 'vue-types';
import { NodeMouseEventHandler, NodeMouseEventParams, NodeDragEventParams } from '../vc-tree/contextTypes';
import { EventHandler } from '../_util/EventInterface';
export interface AntdTreeNodeAttribute {
    eventKey: string;
    prefixCls: string;
    class: string;
    expanded: boolean;
    selected: boolean;
    checked: boolean;
    halfChecked: boolean;
    children: any;
    title: any;
    pos: string;
    dragOver: boolean;
    dragOverGapTop: boolean;
    dragOverGapBottom: boolean;
    isLeaf: boolean;
    selectable: boolean;
    disabled: boolean;
    disableCheckbox: boolean;
}
export type AntTreeNodeProps = TreeNodeProps;
export type TreeDataItem = DataNode;
export interface AntTreeNodeBaseEvent {
    node: EventDataNode;
    nativeEvent: MouseEvent;
}
export interface AntTreeNodeCheckedEvent extends AntTreeNodeBaseEvent {
    event: 'check';
    checked?: boolean;
    checkedNodes?: DataNode[];
}
export interface AntTreeNodeSelectedEvent extends AntTreeNodeBaseEvent {
    event: 'select';
    selected?: boolean;
    selectedNodes?: DataNode[];
}
export interface AntTreeNodeExpandedEvent extends AntTreeNodeBaseEvent {
    expanded?: boolean;
}
export interface AntTreeNodeMouseEvent {
    node: EventDataNode;
    event: DragEvent;
}
export interface AntTreeNodeDragEnterEvent extends AntTreeNodeMouseEvent {
    expandedKeys: Key[];
}
export interface AntTreeNodeDropEvent {
    node: EventDataNode;
    dragNode: EventDataNode;
    dragNodesKeys: Key[];
    dropPosition: number;
    dropToGap?: boolean;
    event: MouseEvent;
}
export declare const treeProps: () => {
    showLine: {
        type: PropType<boolean | {
            showLeafIcon: boolean;
        }>;
        default: boolean | {
            showLeafIcon: boolean;
        };
    };
    /** 是否支持多选 */
    multiple: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否自动展开父节点 */
    autoExpandParent: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** checkable状态下节点选择完全受控（父子节点选中状态不再关联）*/
    checkStrictly: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否支持选中 */
    checkable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否禁用树 */
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开所有树节点 */
    defaultExpandAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开对应树节点 */
    defaultExpandParent: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开指定的树节点 */
    defaultExpandedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）展开指定的树节点 */
    expandedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）选中复选框的树节点 */
    checkedKeys: {
        type: PropType<Key[] | {
            checked: Key[];
            halfChecked: Key[];
        }>;
        default: Key[] | {
            checked: Key[];
            halfChecked: Key[];
        };
    };
    /** 默认选中复选框的树节点 */
    defaultCheckedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）设置选中的树节点 */
    selectedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** 默认选中的树节点 */
    defaultSelectedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    selectable: {
        type: BooleanConstructor;
        default: boolean;
    };
    loadedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    draggable: {
        type: BooleanConstructor;
        default: boolean;
    };
    showIcon: {
        type: BooleanConstructor;
        default: boolean;
    };
    icon: {
        type: PropType<(nodeProps: AntdTreeNodeAttribute) => any>;
        default: (nodeProps: AntdTreeNodeAttribute) => any;
    };
    switcherIcon: VueTypeValidableDef<any>;
    prefixCls: StringConstructor;
    /**
     * @default{title,key,children}
     * deprecated, please use `fieldNames` instead
     * 替换treeNode中 title,key,children字段为treeData中对应的字段
     */
    replaceFields: {
        type: PropType<FieldNames>;
        default: FieldNames;
    };
    blockNode: {
        type: BooleanConstructor;
        default: boolean;
    };
    openAnimation: VueTypeValidableDef<any>;
    onDoubleclick: {
        type: PropType<NodeMouseEventHandler>;
    };
    'onUpdate:selectedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    'onUpdate:checkedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    'onUpdate:expandedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    focusable: {
        type: BooleanConstructor;
        default: undefined;
    };
    activeKey: PropType<Key>;
    tabindex: NumberConstructor;
    children: VueTypeValidableDef<any>;
    treeData: {
        type: PropType<DataNode[]>;
    };
    fieldNames: {
        type: PropType<FieldNames>;
    };
    expandAction: PropType<ExpandAction>;
    allowDrop: {
        type: PropType<AllowDrop>;
    };
    dropIndicatorRender: {
        type: PropType<(props: {
            dropPosition: -1 | 0 | 1;
            dropLevelOffset: number;
            indent: number;
            prefixCls: string;
            direction: Direction;
        }) => any>;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onKeydown: {
        type: PropType<EventHandler>;
    };
    onContextmenu: {
        type: PropType<EventHandler>;
    };
    onClick: {
        type: PropType<NodeMouseEventHandler>;
    };
    onDblclick: {
        type: PropType<NodeMouseEventHandler>;
    };
    onScroll: {
        type: PropType<EventHandler>;
    };
    onExpand: {
        type: PropType<(expandedKeys: Key[], info: {
            node: EventDataNode;
            expanded: boolean;
            nativeEvent: MouseEvent;
        }) => void>;
    };
    onCheck: {
        type: PropType<(checked: {
            checked: Key[];
            halfChecked: Key[];
        } | Key[], info: CheckInfo) => void>;
    };
    onSelect: {
        type: PropType<(selectedKeys: Key[], info: {
            event: "select";
            selected: boolean;
            node: EventDataNode;
            selectedNodes: DataNode[];
            nativeEvent: MouseEvent;
        }) => void>;
    };
    onLoad: {
        type: PropType<(loadedKeys: Key[], info: {
            event: "load";
            node: EventDataNode;
        }) => void>;
    };
    loadData: {
        type: PropType<(treeNode: EventDataNode) => Promise<any>>;
    };
    onMouseenter: {
        type: PropType<(info: NodeMouseEventParams) => void>;
    };
    onMouseleave: {
        type: PropType<(info: NodeMouseEventParams) => void>;
    };
    onRightClick: {
        type: PropType<(info: {
            event: MouseEvent;
            node: EventDataNode;
        }) => void>;
    };
    onDragstart: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragenter: {
        type: PropType<(info: NodeDragEventParams & {
            expandedKeys: Key[];
        }) => void>;
    };
    onDragover: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragleave: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragend: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDrop: {
        type: PropType<(info: NodeDragEventParams & {
            dragNode: EventDataNode;
            dragNodesKeys: Key[];
            dropPosition: number;
            dropToGap: boolean;
        }) => void>;
    };
    onActiveChange: {
        type: PropType<(key: Key) => void>;
    };
    filterTreeNode: {
        type: PropType<(treeNode: EventDataNode) => boolean>;
    };
    motion: VueTypeValidableDef<any>;
    height: NumberConstructor;
    itemHeight: NumberConstructor;
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    direction: {
        type: PropType<Direction>;
    };
    rootClassName: StringConstructor;
    rootStyle: PropType<CSSProperties>;
};
export type TreeProps = Partial<ExtractPropTypes<ReturnType<typeof treeProps>>>;
declare const _default: DefineComponent<ExtractPropTypes<{
    showLine: {
        type: PropType<boolean | {
            showLeafIcon: boolean;
        }>;
        default: boolean | {
            showLeafIcon: boolean;
        };
    };
    /** 是否支持多选 */
    multiple: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否自动展开父节点 */
    autoExpandParent: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** checkable状态下节点选择完全受控（父子节点选中状态不再关联）*/
    checkStrictly: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否支持选中 */
    checkable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否禁用树 */
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开所有树节点 */
    defaultExpandAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开对应树节点 */
    defaultExpandParent: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开指定的树节点 */
    defaultExpandedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）展开指定的树节点 */
    expandedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）选中复选框的树节点 */
    checkedKeys: {
        type: PropType<Key[] | {
            checked: Key[];
            halfChecked: Key[];
        }>;
        default: Key[] | {
            checked: Key[];
            halfChecked: Key[];
        };
    };
    /** 默认选中复选框的树节点 */
    defaultCheckedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）设置选中的树节点 */
    selectedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** 默认选中的树节点 */
    defaultSelectedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    selectable: {
        type: BooleanConstructor;
        default: boolean;
    };
    loadedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    draggable: {
        type: BooleanConstructor;
        default: boolean;
    };
    showIcon: {
        type: BooleanConstructor;
        default: boolean;
    };
    icon: {
        type: PropType<(nodeProps: AntdTreeNodeAttribute) => any>;
        default: (nodeProps: AntdTreeNodeAttribute) => any;
    };
    switcherIcon: VueTypeValidableDef<any>;
    prefixCls: StringConstructor;
    /**
     * @default{title,key,children}
     * deprecated, please use `fieldNames` instead
     * 替换treeNode中 title,key,children字段为treeData中对应的字段
     */
    replaceFields: {
        type: PropType<FieldNames>;
        default: FieldNames;
    };
    blockNode: {
        type: BooleanConstructor;
        default: boolean;
    };
    openAnimation: VueTypeValidableDef<any>;
    onDoubleclick: {
        type: PropType<NodeMouseEventHandler>;
    };
    'onUpdate:selectedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    'onUpdate:checkedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    'onUpdate:expandedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    focusable: {
        type: BooleanConstructor;
        default: undefined;
    };
    activeKey: PropType<Key>;
    tabindex: NumberConstructor;
    children: VueTypeValidableDef<any>;
    treeData: {
        type: PropType<DataNode[]>;
    };
    fieldNames: {
        type: PropType<FieldNames>;
    };
    expandAction: PropType<ExpandAction>;
    allowDrop: {
        type: PropType<AllowDrop>;
    };
    dropIndicatorRender: {
        type: PropType<(props: {
            dropPosition: -1 | 0 | 1;
            dropLevelOffset: number;
            indent: number;
            prefixCls: string;
            direction: Direction;
        }) => any>;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onKeydown: {
        type: PropType<EventHandler>;
    };
    onContextmenu: {
        type: PropType<EventHandler>;
    };
    onClick: {
        type: PropType<NodeMouseEventHandler>;
    };
    onDblclick: {
        type: PropType<NodeMouseEventHandler>;
    };
    onScroll: {
        type: PropType<EventHandler>;
    };
    onExpand: {
        type: PropType<(expandedKeys: Key[], info: {
            node: EventDataNode;
            expanded: boolean;
            nativeEvent: MouseEvent;
        }) => void>;
    };
    onCheck: {
        type: PropType<(checked: {
            checked: Key[];
            halfChecked: Key[];
        } | Key[], info: CheckInfo) => void>;
    };
    onSelect: {
        type: PropType<(selectedKeys: Key[], info: {
            event: "select";
            selected: boolean;
            node: EventDataNode;
            selectedNodes: DataNode[];
            nativeEvent: MouseEvent;
        }) => void>;
    };
    onLoad: {
        type: PropType<(loadedKeys: Key[], info: {
            event: "load";
            node: EventDataNode;
        }) => void>;
    };
    loadData: {
        type: PropType<(treeNode: EventDataNode) => Promise<any>>;
    };
    onMouseenter: {
        type: PropType<(info: NodeMouseEventParams) => void>;
    };
    onMouseleave: {
        type: PropType<(info: NodeMouseEventParams) => void>;
    };
    onRightClick: {
        type: PropType<(info: {
            event: MouseEvent;
            node: EventDataNode;
        }) => void>;
    };
    onDragstart: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragenter: {
        type: PropType<(info: NodeDragEventParams & {
            expandedKeys: Key[];
        }) => void>;
    };
    onDragover: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragleave: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragend: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDrop: {
        type: PropType<(info: NodeDragEventParams & {
            dragNode: EventDataNode;
            dragNodesKeys: Key[];
            dropPosition: number;
            dropToGap: boolean;
        }) => void>;
    };
    onActiveChange: {
        type: PropType<(key: Key) => void>;
    };
    filterTreeNode: {
        type: PropType<(treeNode: EventDataNode) => boolean>;
    };
    motion: VueTypeValidableDef<any>;
    height: NumberConstructor;
    itemHeight: NumberConstructor;
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    direction: {
        type: PropType<Direction>;
    };
    rootClassName: StringConstructor;
    rootStyle: PropType<CSSProperties>;
}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<{
    showLine: {
        type: PropType<boolean | {
            showLeafIcon: boolean;
        }>;
        default: boolean | {
            showLeafIcon: boolean;
        };
    };
    /** 是否支持多选 */
    multiple: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否自动展开父节点 */
    autoExpandParent: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** checkable状态下节点选择完全受控（父子节点选中状态不再关联）*/
    checkStrictly: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否支持选中 */
    checkable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否禁用树 */
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开所有树节点 */
    defaultExpandAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开对应树节点 */
    defaultExpandParent: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 默认展开指定的树节点 */
    defaultExpandedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）展开指定的树节点 */
    expandedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）选中复选框的树节点 */
    checkedKeys: {
        type: PropType<Key[] | {
            checked: Key[];
            halfChecked: Key[];
        }>;
        default: Key[] | {
            checked: Key[];
            halfChecked: Key[];
        };
    };
    /** 默认选中复选框的树节点 */
    defaultCheckedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** （受控）设置选中的树节点 */
    selectedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    /** 默认选中的树节点 */
    defaultSelectedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    selectable: {
        type: BooleanConstructor;
        default: boolean;
    };
    loadedKeys: {
        type: PropType<Key[]>;
        default: Key[];
    };
    draggable: {
        type: BooleanConstructor;
        default: boolean;
    };
    showIcon: {
        type: BooleanConstructor;
        default: boolean;
    };
    icon: {
        type: PropType<(nodeProps: AntdTreeNodeAttribute) => any>;
        default: (nodeProps: AntdTreeNodeAttribute) => any;
    };
    switcherIcon: VueTypeValidableDef<any>;
    prefixCls: StringConstructor;
    /**
     * @default{title,key,children}
     * deprecated, please use `fieldNames` instead
     * 替换treeNode中 title,key,children字段为treeData中对应的字段
     */
    replaceFields: {
        type: PropType<FieldNames>;
        default: FieldNames;
    };
    blockNode: {
        type: BooleanConstructor;
        default: boolean;
    };
    openAnimation: VueTypeValidableDef<any>;
    onDoubleclick: {
        type: PropType<NodeMouseEventHandler>;
    };
    'onUpdate:selectedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    'onUpdate:checkedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    'onUpdate:expandedKeys': {
        type: PropType<(keys: Key[]) => void>;
        default: (keys: Key[]) => void;
    };
    focusable: {
        type: BooleanConstructor;
        default: undefined;
    };
    activeKey: PropType<Key>;
    tabindex: NumberConstructor;
    children: VueTypeValidableDef<any>;
    treeData: {
        type: PropType<DataNode[]>;
    };
    fieldNames: {
        type: PropType<FieldNames>;
    };
    expandAction: PropType<ExpandAction>;
    allowDrop: {
        type: PropType<AllowDrop>;
    };
    dropIndicatorRender: {
        type: PropType<(props: {
            dropPosition: -1 | 0 | 1;
            dropLevelOffset: number;
            indent: number;
            prefixCls: string;
            direction: Direction;
        }) => any>;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onKeydown: {
        type: PropType<EventHandler>;
    };
    onContextmenu: {
        type: PropType<EventHandler>;
    };
    onClick: {
        type: PropType<NodeMouseEventHandler>;
    };
    onDblclick: {
        type: PropType<NodeMouseEventHandler>;
    };
    onScroll: {
        type: PropType<EventHandler>;
    };
    onExpand: {
        type: PropType<(expandedKeys: Key[], info: {
            node: EventDataNode;
            expanded: boolean;
            nativeEvent: MouseEvent;
        }) => void>;
    };
    onCheck: {
        type: PropType<(checked: {
            checked: Key[];
            halfChecked: Key[];
        } | Key[], info: CheckInfo) => void>;
    };
    onSelect: {
        type: PropType<(selectedKeys: Key[], info: {
            event: "select";
            selected: boolean;
            node: EventDataNode;
            selectedNodes: DataNode[];
            nativeEvent: MouseEvent;
        }) => void>;
    };
    onLoad: {
        type: PropType<(loadedKeys: Key[], info: {
            event: "load";
            node: EventDataNode;
        }) => void>;
    };
    loadData: {
        type: PropType<(treeNode: EventDataNode) => Promise<any>>;
    };
    onMouseenter: {
        type: PropType<(info: NodeMouseEventParams) => void>;
    };
    onMouseleave: {
        type: PropType<(info: NodeMouseEventParams) => void>;
    };
    onRightClick: {
        type: PropType<(info: {
            event: MouseEvent;
            node: EventDataNode;
        }) => void>;
    };
    onDragstart: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragenter: {
        type: PropType<(info: NodeDragEventParams & {
            expandedKeys: Key[];
        }) => void>;
    };
    onDragover: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragleave: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDragend: {
        type: PropType<(info: NodeDragEventParams) => void>;
    };
    onDrop: {
        type: PropType<(info: NodeDragEventParams & {
            dragNode: EventDataNode;
            dragNodesKeys: Key[];
            dropPosition: number;
            dropToGap: boolean;
        }) => void>;
    };
    onActiveChange: {
        type: PropType<(key: Key) => void>;
    };
    filterTreeNode: {
        type: PropType<(treeNode: EventDataNode) => boolean>;
    };
    motion: VueTypeValidableDef<any>;
    height: NumberConstructor;
    itemHeight: NumberConstructor;
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    direction: {
        type: PropType<Direction>;
    };
    rootClassName: StringConstructor;
    rootStyle: PropType<CSSProperties>;
}>> & Readonly<{}>, {
    icon: (nodeProps: AntdTreeNodeAttribute) => any;
    multiple: boolean;
    disabled: boolean;
    draggable: boolean;
    virtual: boolean;
    checkable: boolean;
    selectable: boolean;
    focusable: boolean;
    showLine: boolean | {
        showLeafIcon: boolean;
    };
    showIcon: boolean;
    checkStrictly: boolean;
    defaultExpandParent: boolean;
    autoExpandParent: boolean;
    defaultExpandAll: boolean;
    defaultExpandedKeys: Key[];
    expandedKeys: Key[];
    defaultCheckedKeys: Key[];
    checkedKeys: Key[] | {
        checked: Key[];
        halfChecked: Key[];
    };
    defaultSelectedKeys: Key[];
    selectedKeys: Key[];
    loadedKeys: Key[];
    replaceFields: FieldNames;
    blockNode: boolean;
    'onUpdate:selectedKeys': (keys: Key[]) => void;
    'onUpdate:checkedKeys': (keys: Key[]) => void;
    'onUpdate:expandedKeys': (keys: Key[]) => void;
}, CustomSlotsType<{
    icon?: any;
    title?: any;
    switcherIcon?: any;
    titleRender?: any;
    default?: any;
    leafIcon?: any;
}>, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;
