import { Vector3 } from 'three';
import { DuplicateRecordCloning } from '../Common/Status';
import { AlignLineGroupTable } from './AlignLine/AlignLineGroupTable';
import { BlockTableRecord } from './BlockTableRecord';
import { CADFiler } from './CADFiler';
import { CADObject } from './CADObject';
import { CameraSnapshootRecord } from './CameraSnapshoot/CameraSnapshootRecord';
import { DimStyleTable } from './DimStyle/DimStyleTable';
import { FontStyleTable } from './FontStyle/FontStyleTable';
import { GroupTable } from './GroupTable';
import { HistoricManage } from './HistoricManage';
import { IdMaping } from './IdMaping';
import { LayerTableRecord } from './LayerTableRecord';
import { AmbientLight } from './Lights/AmbientLight';
import { DirectionalLight } from './Lights/DirectionalLight';
import { HemisphereLight } from './Lights/HemisphereLight';
import { ObjectId } from './ObjectId';
import { OwnerContainer } from './OwnerContainer';
import { PhysicalMaterialRecord } from './PhysicalMaterialRecord';
import { ProcessingGroupTable } from './ProcessingGroup/ProcessingGroupTable';
import { BlockTable } from './Tables/BlockTable';
import { LayerTable } from './Tables/LayerTable';
import { MaterialTable } from './Tables/MaterialTable';
import { TextureTable } from './Tables/TextureTable';
import { TemplateTable } from './Template/TemplateTable';
import { WblockCloneFiler } from './WblockCloneFiler';
export declare class Database {
    IsDefaultDatabase: boolean;
    hm: HistoricManage;
    BlockTable: BlockTable;
    MaterialTable: MaterialTable;
    TextureTable: TextureTable;
    TemplateTable: TemplateTable;
    GroupTable: GroupTable;
    ProcessingGroupTable: ProcessingGroupTable;
    AlignLineGroupTable: AlignLineGroupTable;
    DimStyleTable: DimStyleTable;
    LayerTable: LayerTable;
    FontStyleTable: FontStyleTable;
    ModelSpace: BlockTableRecord;
    LayoutSpace: BlockTableRecord;
    Lights: BlockTableRecord;
    CameraSnapshoots: CameraSnapshootRecord[];
    AmbientLight: AmbientLight;
    SunLight: DirectionalLight;
    HemisphereLight: HemisphereLight;
    DefaultLayer: LayerTableRecord;
    DefaultMaterial: PhysicalMaterialRecord;
    /** 这是为UE设计器提供的拓展数据,WebCAD只负责保存,不使用它.
     *  在存储吊顶模块时,存储了材质槽信息
     */
    ExtendedData: any;
    private idIndex;
    private idMap;
    /**
     *
     * @param [buildDefaultDrawing=false] 构建默认对象(标注 图层 材质 灯光)
     * @param [IsDefaultDatabase=false] app图纸
     * @param [disableHistoric=false] 禁止命令记录(撤销重做)
     */
    constructor(buildDefaultDrawing?: boolean, IsDefaultDatabase?: boolean, disableHistoric?: boolean);
    private InitDimStyle;
    private InitLayer;
    private InitMaterial;
    private InitLight;
    private InitFontStyle;
    private SettingDefaultStyleAndMaterial;
    Destroy(): void;
    FileWrite(file?: CADFiler): CADFiler;
    FileRead(file: CADFiler): this;
    /**
     * 注意:跨图纸拷贝(WblockCloneObjects) 同图纸拷贝(DeppCloneObjects)
     *
     * 单个数据库内克隆对象(objects),并将他们附加到指定的容器对象(owner).
     * @param objects 被克隆的对象
     * @param owner 克隆对象的容器
     * @param idMap id映射 oldid->newid
     * @param deferXlation 指示是否应该进行ID转换
     * @returns 新克隆的对象列表
     */
    DeepCloneObjects(objects: CADObject[], owner: OwnerContainer, idMap?: IdMaping, deferXlation?: boolean): CADObject[];
    /**
     * 清理拷贝后的实体空引用
     */
    private ClearEmptyAssoc;
    private DeepCloneObject;
    /**
     * 注意:跨图纸拷贝(WblockCloneObjects) 同图纸拷贝(DeppCloneObjects)
     *
     * 将来自不同数据库的对象列表拷贝到本数据库中.
     * 当前支持使用HardId模式来硬关联某个对象,使该对象能够在WblockClone时一起被带过来.
     * 当前不支持硬关联对象的Owner不是默认的容器.
     * 如果需要这么做,请将该对象的Owner设置为Hard关联
     * @param objects 对象不能属于本数据库
     * @param owner 克隆对象的新容器
     * @param idMap id映射
     */
    WblockCloneObejcts(objects: CADObject[], owner: OwnerContainer, idMap: IdMaping, drc: DuplicateRecordCloning, filer?: WblockCloneFiler): CADObject[];
    /**
     * 克隆引用对象 WriteHardObjectId
     */
    private WblockCloneReferenceObject;
    private WblockCloneObject;
    /**
     * 为拷贝出来的对象分配id索引,并在数据库中注册
     */
    private AllocationObjectId;
    Insert(): void;
    /**
     * 写块
     * @param outputDatabase 输出到指定的数据库
     * @param objects
     * @param basePoint
     * @param cloning
     */
    Wblock(outputDataBase: Database, objects: CADObject[], basePoint: Vector3, cloning: any): void;
    AllocateId(): ObjectId;
    GetObjectId(index: number, create?: boolean): ObjectId;
    DeleteId(idIndex: number): void;
}
//# sourceMappingURL=Database.d.ts.map