import { Box3 } from 'three';
import { GeometryType } from '../batching/Batch';
import { GeometryData } from '../converter/Geometry';
import { SpeckleType } from '../converter/GeometryConverter';
export interface RenderMaterial {
    id: string;
    color: number;
    opacity: number;
    roughness: number;
    metalness: number;
    vertexColors: boolean;
}
export interface DisplayStyle {
    id: string;
    color: number;
    lineWeight: number;
}
export interface NodeRenderData {
    id: string;
    speckleType: SpeckleType;
    geometry: GeometryData;
    renderMaterial: RenderMaterial;
    displayStyle: DisplayStyle;
}
export declare class NodeRenderView {
    private _batchId;
    private _batchIndexStart;
    private _batchIndexCount;
    private _batchVertexStart;
    private _batchVertexEnd;
    private readonly _renderData;
    private _materialHash;
    private _geometryType;
    private _aabb;
    static readonly NullRenderMaterialHash: any;
    static readonly NullRenderMaterialVertexColorsHash: any;
    static readonly NullDisplayStyleHash: any;
    static readonly NullPointMaterialHash: any;
    static readonly NullPointCloudMaterialHash: any;
    static readonly NullPointCloudVertexColorsMaterialHash: any;
    private static hashCode;
    get renderData(): NodeRenderData;
    get renderMaterialHash(): number;
    get hasGeometry(): Partial<Record<import("../converter/Geometry").GeometryAttributes, number[]>>;
    get hasMetadata(): import("./DataTree").SpeckleObject;
    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;
    getGeometryType(): GeometryType;
    disposeGeometry(): void;
    private renderMaterialToString;
    private displayStyleToString;
    /** Yeah, this needs a better approach after standardizing renderMaterial vs displayStyle
     *  at the concept level. Currently it's more or less unclear who/when/how should a line/non-line
     *  use either renderMaterial either displayStyle since all speckle types can use both
     */
    private getMaterialHash;
}
