import { NestedTreeControl } from '@angular/cdk/tree';
import { EventEmitter, TemplateRef } from '@angular/core';
import { MatTreeNestedDataSource } from '@angular/material/tree';
import { TccC4Node } from '../../../odata/models/shared.model';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { TccContextMenu } from '../tcc-context-menu/tcc-context-menu.component';
import { TccContextMenuServiceNamespace } from '../../services/tcc-context-menu/tcc-context-menu.service';
import { TccLibIcons } from '../../classes/tcc-register-icons.class';
export declare namespace TccSubpathTree {
    interface TreeNode {
        node: TccC4Node;
        name: string;
        children?: TreeNode[];
        level: number;
        path: string;
    }
    interface nodePaths {
        [propName: string]: {
            node: TccC4Node;
            children?: nodePaths;
        };
    }
    interface markNodeResponse {
        id: string;
        state: boolean;
    }
}
export declare class TccSubpathTreeComponent {
    nodeTemplateRef: TemplateRef<any>;
    set nodes(nodes: TccC4Node[]);
    set markedNodes(markedElements: string[]);
    set activeNode(activeNodeId: string);
    requiredProperty: string;
    filledProperty: string;
    selectFolder: boolean;
    contextMenuOptionsWithNode: TccContextMenu.option[];
    contextMenuOptions: TccContextMenu.option[];
    checkboxes: boolean;
    set disableRootNode(bool: boolean);
    contextMenuOptionsForRoot: TccContextMenu.option[];
    setTooltipFunction: (Entity: TccC4Node) => string;
    selectNode: EventEmitter<TccC4Node>;
    markFavourite: EventEmitter<TccSubpathTree.markNodeResponse>;
    markNode: EventEmitter<TccSubpathTree.markNodeResponse>;
    contextMenuOptionClick: EventEmitter<TccContextMenuServiceNamespace.contextMenuClickEvent>;
    get checkedNodes(): string[];
    treeControl: NestedTreeControl<TccSubpathTree.TreeNode, TccSubpathTree.TreeNode>;
    dataSource: MatTreeNestedDataSource<TccSubpathTree.TreeNode>;
    activeTreeNode: TccSubpathTree.TreeNode;
    enableMarked: boolean;
    markedElements: {
        [propname: string]: boolean;
    };
    private _checkedNodes;
    LibIcons: typeof TccLibIcons.Icon;
    rootNodeId: string;
    private activenode;
    private activeNodeParent;
    _disableRootNode: boolean;
    private initial;
    refresh: number;
    constructor();
    private getPathsObject;
    private getTreeObject;
    private removeEmptyNodes;
    private checkNodeIsValid;
    setFavourite(event: MouseEvent, node: TccC4Node): void;
    hasChild: (_: number, node: TccSubpathTree.TreeNode) => boolean;
    openNode(node: TccSubpathTree.TreeNode): void;
    clearSelection(): void;
    checkboxChangeEvent(event: MatCheckboxChange, node: TccSubpathTree.TreeNode): void;
    onContextMenuOptionClick(event: TccContextMenuServiceNamespace.contextMenuClickEvent): void;
    private getExtendedNodes;
    private getTreeNodeByPath;
    private getActiveNode;
}
