import { NumericAttribValue, PolyDictionary } from '../../types/GlobalTypes';
import { Vector3 } from 'three/src/math/Vector3';
import { Object3D } from 'three/src/core/Object3D';
import { Group } from 'three/src/objects/Group';
import { BufferGeometry } from 'three/src/core/BufferGeometry';
import { Box3 } from 'three/src/math/Box3';
import { CoreObject } from './Object';
import { CoreGeometry } from './Geometry';
import { AttribClass, AttribSize, ObjectData } from './Constant';
export declare type GroupString = string;
export interface Object3DWithGeometry extends Object3D {
    geometry: BufferGeometry;
}
export declare class CoreGroup {
    private _timestamp;
    private _objects;
    private _objects_with_geo;
    private _core_objects;
    private _core_geometries;
    private _bounding_box;
    constructor();
    timestamp(): number | undefined;
    touch(): void;
    reset(): void;
    clone(): CoreGroup;
    setObjects(objects: Object3D[]): void;
    objects(): Object3D[];
    objectsWithGeo(): Object3DWithGeometry[];
    coreObjects(): CoreObject[];
    private _create_core_objects;
    objectsData(): ObjectData[];
    private _objectData;
    geometries(): BufferGeometry[];
    coreGeometries(): CoreGeometry[];
    private _createCoreGeometries;
    static geometryFromObject(object: Object3D): BufferGeometry | null;
    faces(): import("./Face").CoreFace[];
    points(): import("./Point").CorePoint[];
    pointsCount(): number;
    totalPointsCount(): number;
    pointsFromGroup(group: GroupString): import("./Point").CorePoint[];
    static _fromObjects(objects: Object3D[]): CoreGroup;
    objectsFromGroup(group_name: string): Object3D[];
    coreObjectsFromGroup(group_name: string): CoreObject[];
    boundingBox(): Box3;
    center(): Vector3;
    size(): Vector3;
    private _compute_bounding_box;
    computeVertexNormals(): void;
    hasAttrib(name: string): boolean;
    attribType(name: string): import("./Constant").AttribType | null;
    objectAttribType(name: string): import("./Constant").AttribType | null;
    renameAttrib(old_name: string, new_name: string, attrib_class: AttribClass): void;
    attribNames(): string[];
    objectAttribNames(): string[];
    attribNamesMatchingMask(masks_string: GroupString): string[];
    attribSizes(): PolyDictionary<AttribSize>;
    objectAttribSizes(): PolyDictionary<AttribSize>;
    attribSize(attrib_name: string): number;
    addNumericVertexAttrib(name: string, size: number, default_value: NumericAttribValue): void;
    static clone(src_group: Group): Group;
}
