import { NumericAttribValue, PolyDictionary } from '../../types/GlobalTypes';
import { Vector3 } from 'three/src/math/Vector3';
import { BufferGeometry } from 'three/src/core/BufferGeometry';
import { Box3 } from 'three/src/math/Box3';
import { CorePoint } from './Point';
import { CoreFace } from './Face';
import { ObjectType, AttribType, AttribSize } from './Constant';
import { CoreAttributeData } from './AttributeData';
export declare class CoreGeometry {
    private _geometry;
    _bounding_box: Box3 | undefined;
    private _points;
    constructor(_geometry: BufferGeometry);
    geometry(): BufferGeometry;
    uuid(): string;
    boundingBox(): Box3 | undefined;
    private _create_bounding_box;
    markAsInstance(): void;
    static markedAsInstance(geometry: BufferGeometry): boolean;
    markedAsInstance(): boolean;
    positionAttribName(): string;
    computeVertexNormals(): void;
    userDataAttribs(): any;
    indexedAttributeNames(): string[];
    userDataAttrib(name: string): any;
    isAttribIndexed(name: string): boolean;
    hasAttrib(name: string): boolean;
    attribType(name: string): AttribType;
    attribNames(): string[];
    attribSizes(): PolyDictionary<AttribSize>;
    attribSize(name: string): number;
    setIndexedAttributeValues(name: string, values: string[]): void;
    setIndexedAttribute(name: string, values: string[], indices: number[]): void;
    addNumericAttrib(name: string, size?: number, default_value?: NumericAttribValue): void;
    initPositionAttribute(points_count: number, default_value?: Vector3): BufferGeometry;
    addAttribute(name: string, attrib_data: CoreAttributeData): void;
    renameAttrib(old_name: string, new_name: string): BufferGeometry;
    deleteAttribute(name: string): BufferGeometry;
    clone(): BufferGeometry;
    static clone(src_geometry: BufferGeometry): BufferGeometry;
    pointsCount(): number;
    static pointsCount(geometry: BufferGeometry): number;
    points(): CorePoint[];
    resetPoints(): void;
    pointsFromGeometry(): CorePoint[];
    private static _mesh_builder;
    private static _points_builder;
    private static _lines_segment_builder;
    static geometryFromPoints(points: CorePoint[], object_type: ObjectType): BufferGeometry | null;
    static merge_geometries(geometries: BufferGeometry[]): BufferGeometry | undefined;
    segments(): number[][];
    faces(): CoreFace[];
    facesFromGeometry(): CoreFace[];
}
