import { AppObject, AppObjectEntity, AppObjectRepo } from "@vived/core";
export interface UndoRedoAction {
    undoAction: () => void;
    redoAction: () => void;
}
export declare abstract class UndoRedoEntity extends AppObjectEntity {
    static readonly type = "UndoRedoEntity";
    abstract get hasUndo(): boolean;
    abstract get hasRedo(): boolean;
    abstract submitAction: (action: UndoRedoAction) => void;
    abstract doUndo: () => void;
    abstract doRedo: () => void;
    abstract clearStack: () => void;
    static get: (appObjects: AppObjectRepo) => UndoRedoEntity | undefined;
}
export declare function makeUndoRedoEntity(appObject: AppObject): UndoRedoEntityImp;
export declare function submitUndoRedoAction(action: UndoRedoAction, appObjects: AppObjectRepo): void;
declare class UndoRedoEntityImp extends UndoRedoEntity {
    private undoStack;
    private redoStack;
    get hasUndo(): boolean;
    get hasRedo(): boolean;
    doUndo: () => void;
    doRedo: () => void;
    submitAction: (action: UndoRedoAction) => void;
    clearStack: () => void;
    constructor(appObject: AppObject);
}
export {};
//# sourceMappingURL=UndoRedoEntity.d.ts.map