import { CADFiler } from './CADFiler';
import { CADObject } from './CADObject';
import { CommandHistoryRecord } from './CommandHistoryRecord';
/**
 * 历史记录管理
 *
 * 关于子命令标记:
 *  当子命令标记出现的时候,才允许出现局部撤销,否则命令执行中不允许撤销,触发命令重写了撤销和重做的事件.
 */
export declare class HistoricManage extends CADObject {
    useSubCommand: boolean;
    curIndex: number;
    lockIndex: number;
    historyRecord: CommandHistoryRecord[];
    doing: boolean;
    Enable: boolean;
    _SignalCommandHistory: HistoricManage;
    constructor(useSubCommand?: boolean);
    /**
     * 清理历史记录
     * @param [remCount=0] 剩余的记录记录个数
     */
    Clear(remCount?: number): void;
    ReadFile(file: CADFiler): void;
    WriteFile(file: CADFiler): void;
    get IsNow(): boolean;
    get UndoData(): CommandHistoryRecord;
    StartMark(subCommandName?: string): void;
    /**
     * 不要在命令中直接调用这个函数!
     * 请调用 commandMachine.CommandStart
     */
    StartCmd(cmdName: string): void;
    CurrentHasHistory(): boolean;
    EndCmd(): boolean;
    /**
     * 获得这个命令修改的对象列表
     */
    get ChangeObjects(): Set<CADObject>;
    GetRangeChangeObject(startIndex: number, endIndex: number): Set<CADObject>;
    /**
     * 合并命令历史记录,因为命令记录器允许存在子记录,所以当命令结束时,应该把子记录合并到父记录中,子记录将被摧毁.
     */
    private MergeSubCommmand;
    Undo(): boolean;
    Redo(): any;
    UndoEvent(cmdName: string, historyRec: CommandHistoryRecord): void;
    RedoEvent(cmdName: string, historyRec: CommandHistoryRecord): void;
}
//# sourceMappingURL=HistoricManage.d.ts.map