export type Memo = {
    restoreMemo: (undo?: boolean) => void;
    commitMemo?: () => boolean;
    id?: string;
    operationType?: string;
};
export type Memoable = {
    createMemo: () => Memo;
};
export declare class HistoryMemo {
    readonly label: any;
    private _size;
    private position;
    private redoAvailable;
    private undoAvailable;
    private ring;
    private isRecordingGrouped;
    constructor(label?: string, size?: number);
    get size(): number;
    set size(newSize: number);
    get canUndo(): boolean;
    get canRedo(): boolean;
    undo(items?: number): void;
    undoIf(condition: (item: Memo | Memo[]) => boolean): boolean;
    private dispatchHistoryEvent;
    redo(items?: number): void;
    private initializeGroupItem;
    startGroupRecording(): void;
    private rollbackUnusedGroupItem;
    endGroupRecording(): void;
    private pushGrouped;
    push(item: Memo | Memoable): Memo;
    replaceCurrentMemo(item: Memo | Memoable, condition: (memo: Memo) => boolean): boolean;
}
declare const DefaultHistoryMemo: HistoryMemo;
export { DefaultHistoryMemo };
