/** * CRDT Reconciler * * DESIGN.md §10.5 — Merges divergent op streams using causal ordering. * Each device maintains its own causal chain. The reconciler merges * divergent chains by: * 1. Finding the common ancestor (fork point) * 2. Collecting ops unique to each side * 3. Topologically sorting the combined set by causal dependencies * 4. Detecting conflicts using patch commutativity (§4.4) */ import type { VcsOp } from '../vcs/types.js'; export interface ReconcileResult { /** The merged op stream in causal order. */ merged: VcsOp[]; /** Ops that were only on side A. */ uniqueToA: VcsOp[]; /** Ops that were only on side B. */ uniqueToB: VcsOp[]; /** Common ancestor op hash (fork point). */ forkPoint: string | null; /** Whether the merge was clean (no causal conflicts). */ clean: boolean; /** Conflicting op pairs (both modify same file without commutativity). */ conflicts: ReconcileConflict[]; } export interface ReconcileConflict { opA: VcsOp; opB: VcsOp; filePath: string; reason: string; } /** * Find the common ancestor (fork point) of two op streams. * Returns the hash of the last op that appears in both streams. */ export declare function findForkPoint(opsA: VcsOp[], opsB: VcsOp[]): string | null; /** * Reconcile two divergent op streams into a single merged stream. * * Algorithm: * 1. Find the fork point (last common op) * 2. Split each stream into shared prefix + unique suffix * 3. Check for conflicts in the unique portions * 4. Interleave unique ops in causal (timestamp) order */ export declare function reconcile(opsA: VcsOp[], opsB: VcsOp[]): ReconcileResult; //# sourceMappingURL=reconciler.d.ts.map