import { Node } from './Node';
import { Meshnode } from './Meshnode';
import type { PWFV2 } from '../PWFV2';
import { PWFNode } from '../interface/PWFNode';
export declare class NodeServices {
    private nodes;
    private nodeIdToOffsetMap;
    private pwf;
    protected meshnodeOffPointerValue: number;
    private stack;
    private queue;
    private _numFirstObjects;
    nodesOffset: number;
    private _pwfRootNode;
    private _numNodes;
    private _pwfNodeOffsetMap;
    private _rootNode?;
    constructor(pwfNodes: PWFNode[], meshnodeOffPointer: number, pwf: PWFV2);
    nodeFromOffset(offset: number): Node;
    buildNodes(): {
        nodes: NodeServices['nodes'];
        isComplete: boolean;
    };
    root(): Node;
    getNode(offset: number): Node | Meshnode;
    getNodeById(id: number): Node;
    hasNode(id: number): boolean;
    breadthFirstTraversal(callback: (n: Node | Meshnode) => void): {
        isComplete: boolean;
    };
    private buildNodesRecursively;
    private buildChildren;
    meshnodeOffPointer(): NonNullable<NodeServices['meshnodeOffPointerValue']>;
    findFirstObject(meshnode: Meshnode): Node;
    numNodes(): number;
    allNodes(): Node[];
    numFirstObjects(): number;
}
