import { RxObject } from "./Mvcc.js"; import { ObjectHandle, ObjectVersion, PatchSet } from "./Data.js"; export type Saver = (patch: PatchSet) => Promise; export declare abstract class Journal extends RxObject { abstract capacity: number; abstract readonly edits: ReadonlyArray; abstract readonly unsaved: PatchSet; abstract readonly canUndo: boolean; abstract readonly canRedo: boolean; abstract edited(patch: PatchSet): void; abstract saved(patch: PatchSet): void; abstract undo(count?: number): void; abstract redo(count?: number): void; static create(): Journal; } export declare class JournalImpl extends Journal { private _capacity; private _edits; private _unsaved; private _position; get capacity(): number; set capacity(value: number); get edits(): ReadonlyArray; get unsaved(): PatchSet; get canUndo(): boolean; get canRedo(): boolean; edited(p: PatchSet): void; saved(patch: PatchSet): void; undo(count?: number): void; redo(count?: number): void; static buildPatch(hint: string, items: Map): PatchSet; static applyPatch(patch: PatchSet, undoing: boolean): void; mergePatchToUnsaved(patch: PatchSet, undoing: boolean): void; }