import { CadGeometryType, CadTypeMap, CADTesselationParams } from './CadCommon';
import { ObjectContent, CoreObjectType } from '../../ObjectContent';
import { Object3D, Material, Matrix4, Box3 } from 'three';
import { BaseSopNodeType } from '../../../../engine/nodes/sop/_Base';
export declare class CadObject<T extends CadGeometryType> implements ObjectContent<CoreObjectType.CAD> {
    private _geometry;
    private _type;
    visible: boolean;
    get geometry(): import("./CadCommon").CadGeometry;
    get type(): T;
    userData: {};
    name: string;
    castShadow: boolean;
    receiveShadow: boolean;
    renderOrder: number;
    frustumCulled: boolean;
    matrixAutoUpdate: boolean;
    material: Material | undefined;
    children: ObjectContent<CoreObjectType.CAD>[];
    parent: ObjectContent<CoreObjectType.CAD> | null;
    constructor(_geometry: CadTypeMap[T], _type: T);
    setGeometry<TE extends CadGeometryType>(geometry: CadTypeMap[TE], type: TE): void;
    private _validate;
    cadGeometry(): CadTypeMap[T];
    dispose(): void;
    applyMatrix4(matrix: Matrix4): void;
    add(...object: ObjectContent<CoreObjectType>[]): void;
    remove(...object: ObjectContent<CoreObjectType>[]): void;
    dispatchEvent(event: {
        type: string;
    }): void;
    traverse(callback: (object: CadObject<T>) => any): void;
    clone(): CadObject<T>;
    toObject3D(tesselationParams: CADTesselationParams, displayNode: BaseSopNodeType): Object3D | Object3D[] | undefined;
    static toObject3D<T extends CadGeometryType>(cadObject: CadObject<T>, type: T, tesselationParams: CADTesselationParams, displayNode: BaseSopNodeType): Object3D | Object3D[] | undefined;
    boundingBox(target: Box3): void;
}
