import type { Entry } from 'alinea/core';
import { Type } from 'alinea/core/Type';
import * as Y from 'yjs';
export declare class Edits {
    #private;
    /** The mutable doc that we are editing */
    doc: Y.Doc;
    /** The state vector of the source doc */
    sourceVector: Uint8Array | undefined;
    sourceUpdate: Uint8Array | undefined;
    /** The root map containing field data */
    root: Y.Map<unknown>;
    /** Did we make any local changes? */
    hasChanges: import("jotai").PrimitiveAtom<boolean> & {
        init: boolean;
    };
    /** Clear local changes, reset to source */
    resetChanges: import("jotai").WritableAtom<null, [], void> & {
        init: null;
    };
    yUpdate: import("jotai").Atom<Uint8Array>;
    constructor(type: Type, entry: Entry);
    hasData(): boolean;
    /** A Y.js update that contains our own edits */
    getLocalUpdate(): Uint8Array;
    /** Update entry field data */
    applyEntryData(entryData: Record<string, any>): void;
    /** The field data */
    getEntryData(type: Type): Record<string, any>;
}
export declare const entryEditsAtoms: import("jotai/vanilla/utils/atomFamily.js").AtomFamily<Entry<Record<string, unknown>>, import("jotai").Atom<Edits>>;
