import { Case } from '../../../../resources/interface/case';
import { LoadingEmitter } from '../../../../utility/loading-emitter';
export declare class CaseTreeNode {
    case: Case;
    children: Array<CaseTreeNode>;
    dirtyChildren: boolean;
    loadingChildren: LoadingEmitter;
    removingNode: LoadingEmitter;
    addingNode: LoadingEmitter;
    parent: CaseTreeNode;
    constructor(nodeCase: Case, parentNode: CaseTreeNode);
    /**
     * @returns whether this node has the value `true` in it's [immediate data field]{@link TreePetriflowIdentifiers#CAN_ADD_CHILDREN}
     * that controls this behavior.
     */
    canAddChildren(): boolean;
    /**
     * @returns whether this node has the value `true` in it's [immediate data field]{@link TreePetriflowIdentifiers#CAN_REMOVE_NODE}
     * that controls this behavior.
     */
    canBeRemoved(): boolean;
    /**
     * @returns whether this node's children are currently being loaded
     */
    isLoadingChildren(): boolean;
    /**
     * @returns whether this node is being removed from the tree
     */
    isBeingRemoved(): boolean;
    /**
     * @returns whether children are being added to this node
     */
    isAddingNode(): boolean;
    /**
     * @returns return node value, if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#BEFORE_TEXT_ICON} type exists
     */
    beforeTextIcon(): string;
    /**
     * @returns return node value, if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#TREE_ADD_ICON} type exists
     */
    treeAddTextIcon(): string;
    /**
     * @returns return node title, if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#BEFORE_TEXT_ICON} type exists
     */
    beforeTextIconTitle(): string;
    /**
     * @returns return node title if immediate date of [immediate data field]{@link TreePetriflowIdentifiers#TREE_ADD_ICON} type exists
     */
    treeAddTextIconTitle(): string;
    private searchImmediateData;
    /**
     * @returns an object representing the same CaseTreeNode, but with circular references removed, so that it can be serialized and logged.
     * The [parent]{@link CaseTreeNode#parent} reference is replaced by the parents case stringId (if defined).
     * The [children]{@link CaseTreeNode#children} references are replaced by the child's case stringId (if defined).
     */
    toLoggableForm(): object;
}
