interface Command extends CommandHistory {
    mustExec: boolean;
    overwriteIfSameType?: boolean;
    keepUndo?: boolean;
}
interface CommandHistory {
    cmd: Function;
    undo: Function;
    post: Function;
    type: number;
}
export declare class HistoryManager {
    commandHistory: CommandHistory[] | null;
    locked: boolean;
    maxSize: number;
    position: number;
    constructor(maxSize?: number);
    /**
     * @typedef {Object} addOptions
     * @property {function} cmd
     * @property {function} undo
     * @property {function} [post]
     * @property {boolean} mustExec
     * @property {number} type
     * @property {boolean} overwriteIfSameType
     * @property {boolean} keepUndo
     */
    /**
     * Add a new couple of commands to be used in case of redo/undo.
     * @param {addOptions} options
     */
    add({ cmd, undo, post, mustExec, type, overwriteIfSameType, keepUndo }: Command): void;
    /**
     * Undo the last command.
     */
    undo(): void;
    /**
     * Redo the last command.
     */
    redo(): void;
    /**
     * Check if there is something to undo.
     * @returns {boolean}
     */
    hasSomethingToUndo(): boolean;
    /**
     * Check if there is something to redo.
     * @returns {boolean}
     */
    hasSomethingToRedo(): boolean;
    cleanType(type: number): void;
    destroy(): void;
    reset(): void;
}
export {};
