import { Box3, Material, Object3D, WebGLRenderer } from 'three';
import { MaterialOptions } from '../materials/Materials';
import { NodeRenderView } from '../tree/NodeRenderView';
export declare enum GeometryType {
    MESH = 0,
    LINE = 1,
    POINT = 2,
    POINT_CLOUD = 3,
    TEXT = 4
}
export interface Batch {
    id: string;
    subtreeId: string;
    renderViews: NodeRenderView[];
    batchMaterial: Material;
    renderObject: Object3D;
    geometryType: GeometryType;
    get bounds(): Box3;
    getCount(): number;
    setBatchMaterial(material: Material): void;
    setVisibleRange(...range: BatchUpdateRange[]): any;
    getVisibleRange(): BatchUpdateRange;
    setDrawRanges(...ranges: BatchUpdateRange[]): any;
    insertDrawRanges(...ranges: BatchUpdateRange[]): any;
    removeDrawRanges(id: string): any;
    autoFillDrawRanges(): any;
    resetDrawRanges(): any;
    buildBatch(): any;
    getRenderView(index: number): NodeRenderView;
    getMaterialAtIndex(index: number): Material;
    onUpdate(deltaTime: number): any;
    onRender(renderer: WebGLRenderer): any;
    purge(): any;
}
export interface BatchUpdateRange {
    offset: number;
    count: number;
    material?: Material;
    materialOptions?: MaterialOptions;
    id?: string;
}
export declare const HideAllBatchUpdateRange: BatchUpdateRange;
export declare const AllBatchUpdateRange: BatchUpdateRange;
