/* Declarations for lib/sync.js — the module itself ships unchanged. lib/sync.js syncs four whole documents. The port syncs rows (PORT.md), so it applies the same three gates — hydration, a counter rather than a clock, no silent shrinking — row by row rather than calling this module. It is declared here so its behaviour stays pinned by tests. */ export const DOCS: ("srs" | "log" | "meta" | "chat")[]; /** How much a copy holds. Shrinking is always deliberate, never a race. */ export function weigh(name: string, d: unknown): number; /** A document as it travels: stamp, counter, data, deliberate-shrink flag. */ export interface RemoteDoc { u?: number; v?: number; d?: T; x?: 1; } export interface LocalDoc { version?: number; stamp?: number; data?: T; } /** Is the copy that just arrived later than ours? */ export function isLater(remote: RemoteDoc, localVersion: number, localStamp: number): boolean; export function reconcile( name: string, remote: RemoteDoc | null | undefined, local: LocalDoc, ): "ignore" | "adopt" | "reassert"; export interface WriterDocState { version: number; stamp: number; dirty: boolean; hydrated: boolean; intent: boolean; } export interface Writer { state: Record; touch(name: string, deliberateShrink?: boolean): WriterDocState; hydrate(name: string): WriterDocState; adopted(name: string, remote: RemoteDoc): WriterDocState; reasserted(name: string, remote: RemoteDoc): WriterDocState; flush(name: string, data: unknown): R | null; } export function makeWriter(opts: { push: (name: string, body: RemoteDoc) => R; now?: () => number; }): Writer;