import { Dictionary } from 'lodash-es';
export interface ITreeNodeData {
    id?: number;
    parentId?: number;
    title?: string;
    isOpen?: boolean;
    data?: any;
    isParent?: boolean;
    loading?: boolean;
    isMatch?: boolean;
    isHide?: boolean;
    isActive?: boolean;
    isChecked?: boolean;
    disabled?: boolean;
    [prop: string]: any;
    children?: [];
}
export interface ITreeMap {
    [index: number]: ITreeNodeData;
}
export interface ITreeItem {
    title: string;
    open?: boolean;
    loading?: boolean;
    isMatch?: boolean;
    items?: ITreeItem[];
    isParent?: boolean;
    data?: any;
    id?: any;
    isHide?: boolean;
    isActive?: boolean;
    isChecked?: boolean;
    halfChecked?: boolean;
    disabled?: boolean;
    [prop: string]: any;
    disableAdd?: boolean;
    disableEdit?: boolean;
    disableDelete?: boolean;
}
export interface ITreeInput {
    treeItems: Array<ITreeItem>;
    parentId?: number;
    treeNodeChildrenKey?: string;
    treeNodeIdKey?: string;
    checkboxDisabledKey?: string;
    treeNodeTitleKey?: string;
}
export declare class TreeNode implements ITreeNodeData {
    id: any;
    parentId: any;
    data: any;
    constructor(id: any, parentId: any, data: any);
}
export declare class TreeFactory {
    nodes: Dictionary<TreeNode>;
    private idx;
    private _checked;
    private _treeRoot;
    static create(): TreeFactory;
    static fromTree({ treeItems, treeNodeChildrenKey, treeNodeIdKey, checkboxDisabledKey, treeNodeTitleKey }: ITreeInput): TreeFactory;
    constructor();
    mapTreeItems: ({ treeItems, parentId, treeNodeChildrenKey, treeNodeIdKey, checkboxDisabledKey, treeNodeTitleKey }: ITreeInput) => this;
    addNode({ id, parentId, ...data }: ITreeNodeData): TreeNode;
    editNodeTitle(id: number): void;
    deleteNodeById(id: number): this;
    toggleNodeById(id: number): this;
    openNodesById(id: number): this;
    closeNodesById(id: number, closeChildren?: boolean): this;
    disabledNodesById(id: number): this;
    private _disabledParentNodes;
    checkNodesById(id: number, checked: boolean): Array<Object>;
    private checkParentNodes;
    private checkChildNodes;
    getCheckedNodes(): Array<any>;
    getDisabledNodes(): Array<any>;
    activeNodeById(id: number): void;
    getChildrenById(id: number): Array<TreeNode>;
    private toTree;
    startLoading(id: number): void;
    endLoading(id: number): void;
    private isMatchNode;
    getNodeById(id: any): any;
    hideNodeById(id: any, hide: boolean): this;
    private maintainCheckedNodeList;
    private dfs;
    addChildNode(parentNode: TreeNode, childNode: TreeNode): void;
    private removeChildNode;
    private resetSearchResults;
    searchTree(target: any, hideUnmatched?: boolean): any;
    readonly treeRoot: TreeNode[];
    deactivateAllNodes(): void;
}
