import { CADFiler } from './CADFiler';
import { CommandHistoryRecord } from './CommandHistoryRecord';
import { Database } from './Database';
import { ISerialize } from './ISerialize';
import { ObjectId } from './ObjectId';
export declare abstract class CADObject {
    protected _Owner: ObjectId;
    /**
     * 用于储存临时数据
     */
    TempData: any;
    __CacheBox__: any;
    __CacheBoard__: any;
    __CacheSize__: any;
    __CachePolyline__: any;
    set Owner(owner: ObjectId);
    get Owner(): ObjectId;
    Destroy(): void;
    GoodBye(): any;
    /**
    * 当实体异步更新绘制实体完成后触发这个函数.
    * Application通过注入的方式得知这个事件,刷新视图显示.
    */
    AsyncUpdated(): void;
    protected _db: Database;
    get Db(): Database;
    SetDefaultDb(db: Database): this;
    SetOwnerDatabase(db: Database): this;
    /**
     * WblockClone 的时候,id是db分配的,此刻我们只需要设置它的db
     */
    SetDatabase(db: Database): void;
    protected _isErase: boolean;
    get IsErase(): boolean;
    Erase(isErase?: boolean): void;
    objectId: ObjectId;
    get Id(): ObjectId;
    ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
    ApplyPartialUndo(undoData: ISerialize): void;
    UndoRecord(): CommandHistoryRecord;
    WriteAllObjectRecord(): boolean;
    Clone(): this;
    DeepClone(ownerObject: CADObject, cloneObejct: CADObject, idMaping?: Map<number, ObjectId>, isPrimary?: boolean): this;
    CopyFrom(obj: CADObject): void;
    /**
     * 配合 `@AutoRecord` 使用
     * 使用这个方法来覆盖AutoRecord的监听行为.
     * 这个行为只能用来监听实体添加和实体修改.
     * 实体删除行为暂时无法监听
     * @param setCallback 设置新的实体到数组时的回调函数
     */
    protected CreateProxyArray(setCallback: (v: any) => void): any[];
}
//# sourceMappingURL=CADObject.d.ts.map