import { type Patch, PatchBuilder } from '../json-crdt-patch';
import { ArrNode, BinNode, ObjNode, StrNode, ValNode, VecNode, type JsonNode } from '../json-crdt/nodes';
import type { Model } from '../json-crdt/model';
export declare class DiffError extends Error {
    constructor(message?: string);
}
export declare class JsonCrdtDiff {
    protected readonly model: Model<any>;
    protected builder: PatchBuilder;
    constructor(model: Model<any>);
    protected diffStr(src: StrNode, dst: string): void;
    protected diffBin(src: BinNode, dst: Uint8Array): void;
    protected diffArr(src: ArrNode, dst: unknown[]): void;
    protected diffObj(src: ObjNode, dst: Record<string, unknown>): void;
    protected diffVec(src: VecNode, dst: unknown[]): void;
    protected diffVal(src: ValNode, dst: unknown): void;
    protected diffAny(src: JsonNode, dst: unknown): void;
    diff(src: JsonNode, dst: unknown): Patch;
}
