import { AtTreeNode } from './at-tree-node';
import { AtFormatEmitEvent } from './interface';
export declare class AtTreeService {
    DRAG_SIDE_RANGE: number;
    DRAG_MIN_GAP: number;
    conductOption: {
        isCheckStrictly: boolean;
    };
    selectedNode: AtTreeNode;
    targetNode: AtTreeNode;
    rootNodes: AtTreeNode[];
    selectedNodeList: AtTreeNode[];
    expandedNodeList: AtTreeNode[];
    checkedNodeList: AtTreeNode[];
    halfCheckedNodeList: AtTreeNode[];
    matchedNodeList: AtTreeNode[];
    /**
     * reset tree nodes will clear default node list
     */
    initTree(atNodes: AtTreeNode[]): void;
    getSelectedNode(): AtTreeNode | null;
    /**
     * get some list
     */
    getSelectedNodeList(): AtTreeNode[];
    /**
     * return checked nodes
     */
    getCheckedNodeList(): AtTreeNode[];
    getHalfCheckedNodeList(): AtTreeNode[];
    /**
     * return expanded nodes
     */
    getExpandedNodeList(): AtTreeNode[];
    /**
     * return search matched nodes
     */
    getMatchedNodeList(): AtTreeNode[];
    isArrayOfAtTreeNode(value: any[]): boolean;
    /**
     * reset selectedNodeList
     */
    calcSelectedKeys(selectedKeys: string[], atNodes: AtTreeNode[], isMulti?: boolean): void;
    /**
     * reset expandedNodeList
     */
    calcExpandedKeys(expandedKeys: string[], atNodes: AtTreeNode[]): void;
    /**
     * reset checkedNodeList
     */
    calcCheckedKeys(checkedKeys: string[], atNodes: AtTreeNode[], isCheckStrictly?: boolean): void;
    /**
     * set drag node
     */
    setSelectedNode(node?: AtTreeNode): void;
    /**
     * set node selected status
     */
    setNodeActive(node: AtTreeNode, isMultiple?: boolean): void;
    /**
     * add or remove node to selectedNodeList
     */
    setSelectedNodeList(node: AtTreeNode, isMultiple?: boolean): void;
    /**
     * merge checked nodes
     */
    setHalfCheckedNodeList(node: AtTreeNode): void;
    setCheckedNodeList(node: AtTreeNode): void;
    /**
     * conduct checked/selected/expanded keys
     */
    conductNodeState(type?: string): AtTreeNode[];
    /**
     * set expanded nodes
     */
    setExpandedNodeList(node: AtTreeNode): void;
    /**
     * check state
     * @param node
     */
    refreshCheckState(isCheckStrictly?: boolean): void;
    conduct(node: AtTreeNode): void;
    /**
     * 1、children half checked
     * 2、children all checked, parent checked
     * 3、no children checked
     */
    conductUp(node: AtTreeNode): void;
    /**
     * reset child check state
     */
    conductDown(node: AtTreeNode, value: boolean): void;
    /**
     * search value & expand node
     * should add expandlist
     */
    searchExpand(value: string): void;
    /**
     * drag event
     */
    refreshDragNode(node: AtTreeNode): void;
    resetNodeLevel(node: AtTreeNode): void;
    calcDropPosition(event: DragEvent): number;
    /**
     * drop
     * 0: inner -1: pre 1: next
     */
    dropAndApply(targetNode: AtTreeNode, dragPos?: number): void;
    /**
     * emit Structure
     * eventName
     * node
     * event: MouseEvent / DragEvent
     * dragNode
     */
    formatEvent(eventName: string, node: AtTreeNode, event: MouseEvent | DragEvent): AtFormatEmitEvent;
}
