import { Box3 } from 'three';
import { GeometryType } from '../batching/Batch.js';
import { GeometryAttributes, type GeometryData } from '../converter/Geometry.js';
import { MinimalMaterial, type DisplayStyle, type RenderMaterial } from '../materials/Materials.js';
import { SpeckleType } from '../loaders/GeometryConverter.js';
export interface NodeRenderData {
    id: string;
    subtreeId: number;
    speckleType: SpeckleType;
    geometry: GeometryData;
    renderMaterial: RenderMaterial | null;
    displayStyle: DisplayStyle | null;
    colorMaterial: MinimalMaterial | null;
}
export declare class NodeRenderView {
    private _batchId;
    private _batchIndexStart;
    private _batchIndexCount;
    private _batchVertexStart;
    private _batchVertexEnd;
    private readonly _renderData;
    private _materialHash;
    private _geometryType;
    private _guid;
    private _aabb;
    /** TO DO: Not sure if we should store it */
    get guid(): string;
    get renderData(): NodeRenderData;
    get renderMaterialHash(): number;
    get hasGeometry(): ({
        POSITION: number[];
    } & Partial<Record<GeometryAttributes.COLOR | GeometryAttributes.NORMAL | GeometryAttributes.UV | GeometryAttributes.TANGENT | GeometryAttributes.INDEX, number[]>>) | null;
    get hasMetadata(): import("../../IViewer.js").SpeckleObject | undefined;
    get speckleType(): SpeckleType;
    get geometryType(): GeometryType;
    get batchStart(): number;
    get batchEnd(): number;
    get batchCount(): number;
    get batchId(): string;
    get aabb(): Box3;
    get transparent(): boolean;
    get vertStart(): number;
    get vertEnd(): number;
    get needsSegmentConversion(): boolean;
    get validGeometry(): boolean;
    constructor(data: NodeRenderData);
    setBatchData(id: string, start: number, count: number, vertStart?: number, vertEnd?: number): void;
    computeAABB(): void;
    private getGeometryType;
    disposeGeometry(): void;
}
