import { Matrix4 } from 'three';
import { type TreeNode, WorldTree } from './WorldTree.js';
import { NodeRenderView } from './NodeRenderView.js';
import { GeometryConverter, SpeckleType } from '../loaders/GeometryConverter.js';
export declare class RenderTree {
    private tree;
    private root;
    private cancel;
    buildNodeTime: number;
    applyTransformTime: number;
    convertTime: number;
    getNodeTime: number;
    otherTime: number;
    get id(): string;
    get subtreeId(): number;
    constructor(tree: WorldTree, subtreeRoot: TreeNode);
    buildRenderTree(geometryConverter: GeometryConverter, callback?: () => void): Promise<boolean>;
    private applyTransforms;
    private buildRenderNode;
    private getRenderMaterialNode;
    private getDisplayStyleNode;
    private getColorMaterialNode;
    computeTransform(node: TreeNode): Matrix4;
    getInstances(): {
        [id: string]: Record<string, TreeNode>;
    };
    getRenderableRenderViews(...types: SpeckleType[]): NodeRenderView[];
    getRenderableNodes(...types: SpeckleType[]): TreeNode[];
    getRenderViewsForNode(node: TreeNode): NodeRenderView[];
    getRenderViewNodesForNode(node: TreeNode): TreeNode[];
    getRenderViewsForNodeId(id: string, subtreeId?: number): NodeRenderView[] | null;
    getAtomicParent(node: TreeNode): TreeNode;
    purge(): void;
    /** TO DO: Need to purge only if currently building */
    cancelBuild(): void;
}
