import { CoreCommand } from "./types/commands";
import { HistoryChange } from "./types/history";
type HistoryPath = [any, ...(number | string)[]];
export declare class StateObserver {
    private changes;
    private commands;
    /**
     * Record the changes which could happen in the given callback, save them in a
     * new revision with the given id and userId.
     */
    recordChanges(callback: () => void): {
        changes: HistoryChange[];
        commands: CoreCommand[];
    };
    addCommand(command: CoreCommand): void;
    addChange(...args: [...HistoryPath, any]): void;
}
export {};
