import { Box3, Matrix4 } from 'three';
import { GeometryType } from '../batching/Batch.js';
import { type GeometryData } from '../converter/Geometry.js';
import { MinimalMaterial, type DisplayStyle, type RenderMaterial } from '../materials/Materials.js';
import { SpeckleType } from '../loaders/GeometryConverter.js';
import { ChunkArray } from '../converter/VirtualArray.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: ChunkArray;
        INDEX: ChunkArray;
    } & {
        COLOR?: ChunkArray | undefined;
        NORMAL?: ChunkArray | undefined;
        UV?: ChunkArray | undefined;
        TANGENT?: ChunkArray | undefined;
    }) | 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;
    set aabb(value: 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(transform?: Matrix4): void;
    private getGeometryType;
    disposeGeometry(): void;
}
