import { Box3, Matrix4 } from 'three';
import { TreeNode, WorldTree } from './WorldTree';
import { NodeRenderView } from './NodeRenderView';
import { GeometryConverter, SpeckleType } from '../loaders/GeometryConverter';
export declare class RenderTree {
    private tree;
    private root;
    private _treeBounds;
    private cancel;
    get treeBounds(): Box3;
    get id(): string;
    constructor(tree: WorldTree, subtreeRoot: TreeNode);
    buildRenderTree(geometryConverter: GeometryConverter): Promise<boolean>;
    private applyTransforms;
    private buildRenderNode;
    private getRenderMaterialNode;
    private getDisplayStyleNode;
    computeTransform(node: TreeNode): Matrix4;
    getInstances(): {
        [id: string]: Record<string, TreeNode>;
    };
    getRenderableRenderViews(...types: SpeckleType[]): NodeRenderView[];
    getRenderableNodes(...types: SpeckleType[]): TreeNode[];
    /** This gets the render views for a particular node/id.
     *  Currently it doesn't treat Blocks in a special way, but
     *  we might want to.
     */
    getRenderViewsForNode(node: TreeNode, parent?: TreeNode): NodeRenderView[];
    getRenderViewNodesForNode(node: TreeNode, parent?: TreeNode): TreeNode[];
    getAtomicParent(node: TreeNode): TreeNode;
    getRenderViewsForNodeId(id: string): NodeRenderView[];
    getRenderViewForNodeId(id: string): NodeRenderView;
    purge(): void;
    cancelBuild(subtreeId: string): void;
}
