export interface UndoManagerDelegate { takeSnapshot: () => T; measureSnapshot: (snapshot: T) => number; restoreSnapshot: (snapshot: T) => void; } export declare class UndoManager { constructor(delegate: UndoManagerDelegate, maxSize?: number); readonly delegate: UndoManagerDelegate; readonly maxSize: number; private lastSnapshot; private isLastSnapshotCommitted; private readonly undoStack; private undoStackSize; private readonly redoStack; private pushUndoSnapshot; private popUndoSnapshot; takeSnapshot(): void; commitLastSnapshot(): void; get canUndo(): boolean; get canRedo(): boolean; undo(): void; redo(): void; }