import type { ExtractPropTypes, PropType } from 'vue';
import type { EventHandler } from '../_util/EventInterface';
import type { NodeDragEventParams, NodeMouseEventHandler, NodeMouseEventParams } from './contextTypes';
import type { DataNode, Key, EventDataNode, Direction } from './interface';
export interface CheckInfo {
    event: 'check';
    node: EventDataNode;
    checked: boolean;
    nativeEvent: MouseEvent;
    checkedNodes: DataNode[];
    checkedNodesPositions?: {
        node: DataNode;
        pos: string;
    }[];
    halfCheckedKeys?: Key[];
}
export declare const treeNodeProps: {
    eventKey: (StringConstructor | NumberConstructor)[];
    prefixCls: StringConstructor;
    expanded: {
        type: BooleanConstructor;
        default: any;
    };
    selected: {
        type: BooleanConstructor;
        default: any;
    };
    checked: {
        type: BooleanConstructor;
        default: any;
    };
    loaded: {
        type: BooleanConstructor;
        default: any;
    };
    loading: {
        type: BooleanConstructor;
        default: any;
    };
    halfChecked: {
        type: BooleanConstructor;
        default: any;
    };
    title: import("vue-types").VueTypeValidableDef<any>;
    dragOver: {
        type: BooleanConstructor;
        default: any;
    };
    dragOverGapTop: {
        type: BooleanConstructor;
        default: any;
    };
    dragOverGapBottom: {
        type: BooleanConstructor;
        default: any;
    };
    pos: StringConstructor;
    /** New added in Tree for easy data access */
    data: {
        type: PropType<any>;
        default: any;
    };
    isStart: {
        type: PropType<boolean[]>;
    };
    isEnd: {
        type: PropType<boolean[]>;
    };
    active: {
        type: BooleanConstructor;
        default: any;
    };
    onMousemove: {
        type: PropType<EventHandler>;
    };
    isLeaf: {
        type: BooleanConstructor;
        default: any;
    };
    checkable: {
        type: BooleanConstructor;
        default: any;
    };
    selectable: {
        type: BooleanConstructor;
        default: any;
    };
    disabled: {
        type: BooleanConstructor;
        default: any;
    };
    disableCheckbox: {
        type: BooleanConstructor;
        default: any;
    };
    icon: import("vue-types").VueTypeValidableDef<any>;
    switcherIcon: import("vue-types").VueTypeValidableDef<any>;
    domRef: {
        type: PropType<(arg: any) => void>;
    };
};
export declare type TreeNodeProps = Partial<ExtractPropTypes<typeof treeNodeProps>>;
export declare const nodeListProps: {
    prefixCls: {
        type: PropType<string>;
    };
    data: {
        type: PropType<any[]>;
    };
    motion: {
        type: PropType<any>;
    };
    focusable: {
        type: PropType<boolean>;
    };
    activeItem: {
        type: PropType<any>;
    };
    focused: {
        type: PropType<boolean>;
    };
    tabindex: {
        type: PropType<number>;
    };
    checkable: {
        type: PropType<boolean>;
    };
    selectable: {
        type: PropType<boolean>;
    };
    disabled: {
        type: PropType<boolean>;
    };
    expandedKeys: {
        type: PropType<any[]>;
    };
    selectedKeys: {
        type: PropType<any[]>;
    };
    checkedKeys: {
        type: PropType<any[]>;
    };
    loadedKeys: {
        type: PropType<any[]>;
    };
    loadingKeys: {
        type: PropType<any[]>;
    };
    halfCheckedKeys: {
        type: PropType<any[]>;
    };
    keyEntities: {
        type: PropType<Record<any, any>>;
    };
    dragging: {
        type: PropType<boolean>;
    };
    dragOverNodeKey: {
        type: PropType<any>;
    };
    dropPosition: {
        type: PropType<number>;
    };
    height: {
        type: PropType<number>;
    };
    itemHeight: {
        type: PropType<number>;
    };
    virtual: {
        type: PropType<boolean>;
    };
    onKeydown: {
        type: PropType<EventHandler>;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onActiveChange: {
        type: PropType<(key: any) => void>;
    };
    onContextmenu: {
        type: PropType<EventHandler>;
    };
    onListChangeStart: {
        type: PropType<() => void>;
    };
    onListChangeEnd: {
        type: PropType<() => void>;
    };
};
export declare type NodeListProps = Partial<ExtractPropTypes<typeof nodeListProps>>;
export declare type AllowDrop = (options: {
    dropNode: DataNode;
    dropPosition: -1 | 0 | 1;
}) => boolean;
export declare const treeProps: () => {
    prefixCls: StringConstructor;
    focusable: {
        type: BooleanConstructor;
        default: any;
    };
    tabindex: NumberConstructor;
    children: import("vue-types").VueTypeValidableDef<import("../_util/type").VueNode>;
    treeData: {
        type: PropType<any[]>;
    };
    fieldNames: {
        type: PropType<any>;
    };
    showLine: {
        type: BooleanConstructor;
        default: any;
    };
    showIcon: {
        type: BooleanConstructor;
        default: any;
    };
    icon: import("vue-types").VueTypeValidableDef<any>;
    selectable: {
        type: BooleanConstructor;
        default: any;
    };
    disabled: {
        type: BooleanConstructor;
        default: any;
    };
    multiple: {
        type: BooleanConstructor;
        default: any;
    };
    checkable: {
        type: BooleanConstructor;
        default: any;
    };
    checkStrictly: {
        type: BooleanConstructor;
        default: any;
    };
    draggable: {
        type: PropType<boolean | ((node: any) => boolean)>;
    };
    defaultExpandParent: {
        type: BooleanConstructor;
        default: any;
    };
    autoExpandParent: {
        type: BooleanConstructor;
        default: any;
    };
    defaultExpandAll: {
        type: BooleanConstructor;
        default: any;
    };
    defaultExpandedKeys: {
        type: PropType<any[]>;
    };
    expandedKeys: {
        type: PropType<any[]>;
    };
    defaultCheckedKeys: {
        type: PropType<any[]>;
    };
    checkedKeys: {
        type: PropType<any[] | {
            checked: Key[];
            halfChecked: Key[];
        }>;
    };
    defaultSelectedKeys: {
        type: PropType<any[]>;
    };
    selectedKeys: {
        type: PropType<any[]>;
    };
    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: any[] | {
            checked: Key[];
            halfChecked: 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: any) => Promise<void>>;
    };
    loadedKeys: {
        type: PropType<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>;
    };
    /**
     * Used for `rc-tree-select` only.
     * Do not use in your production code directly since this will be refactor.
     */
    onActiveChange: {
        type: PropType<(key: any) => void>;
    };
    filterTreeNode: {
        type: PropType<(treeNode: any) => boolean>;
    };
    motion: import("vue-types").VueTypeValidableDef<any>;
    switcherIcon: import("vue-types").VueTypeValidableDef<any>;
    height: NumberConstructor;
    itemHeight: NumberConstructor;
    virtual: {
        type: BooleanConstructor;
        default: any;
    };
    direction: {
        type: PropType<any>;
    };
};
export declare type TreeProps = Partial<ExtractPropTypes<ReturnType<typeof treeProps>>>;
