import type { StreamedGeometryFactory } from '../procoregl/StreamedGeometryFactory';
import type { GeometryFactory } from '../procoregl/GeometryFactory';
import type { Node, Meshnode, MeshnodeObject, MeshObject, ModelAnalyticsData } from './PWFTypes';
import type { BootstrapperResult } from '../controllers/Bootstrapper';
import { Vector3 } from '../types/Math';
export interface PWF {
    setStandardModelBuffers(nodeAB: ArrayBuffer, meshnodeAB: ArrayBuffer, meshAB: ArrayBuffer): void;
    setPartitionedModelBuffers(nodeAB: ArrayBuffer, meshnodeAB: ArrayBuffer, partitionAB: ArrayBuffer): void;
    initPwfParser(): void;
    parsePwfNodes(): BootstrapperResult;
    parsePwfMeshnodes(): BootstrapperResult;
    parsePwfMeshes(): void;
    initMeshServices(): BootstrapperResult;
    initNodeServices(): void;
    initMeshnodeServices(): void;
    initNodeTree(): BootstrapperResult;
    initNodeTreeBoundingBoxes(): void;
    allMeshnodes(): Meshnode[];
    breadthFirstTraversalNodes(callback: (n: Node | Meshnode) => void): BootstrapperResult;
    getMeshnodeFromIndex(meshnodeIndex: number): Meshnode;
    getParentNodeIds(nodeId: number): number[];
    getSubtreeNodeIds(nodeId: number): number[];
    getVirtualMeshnodeIndexesByNodeId(nodeId: number): number[];
    getNamedNode(nodeId: number): Node;
    globalOffset(): Vector3;
    getPwfPartitionContentUrls(): string[];
    numNodes(): number;
    numMeshnodes(): number;
    numMeshes(): number;
    prefetchPartitions(geometryFactory: StreamedGeometryFactory): BootstrapperResult;
    setGeometryFactory(geometryFactory: GeometryFactory): void;
    numFirstObjects(): number;
    getNodeById(id: number): Node;
    getMeshnodeFromNodeId(nodeId: number): Meshnode;
    getMeshnode(offset: number): Meshnode;
    getNode(offset: number): Node | Meshnode;
    getMeshObject(meshRef: number): MeshObject;
    findFirstObject(meshnodeIndex: number): Node;
    root(): Node;
    forEachMeshnode(callback: (meshnode: Meshnode) => void): void;
    forEachNode(callback: (node: Node) => void): void;
    hasNode(id: number): boolean;
    loadAllMeshGeometryToGPU(): BootstrapperResult;
    loadAllPartitionProxies(): void;
    getMeshDataForPartitionedModel(meshnodeIndex: number): Promise<MeshnodeObject>;
    captureModelStats(): void;
    getModelAnalyticsData(): ModelAnalyticsData;
    get virtualMeshnodeIndexOffset(): number;
    set virtualMeshnodeIndexOffset(offset: number);
    dispose(): void;
}
