/**
 * Generic sync engine for the semantic graph.
 *
 * Diffs an adapter's snapshot against the current runtime state and emits
 * events for created, moved, and tombstoned anchors. The engine is
 * adapter-agnostic — it never imports or references any concrete adapter.
 * This is enforced by tests (Phase 5 verification grep).
 *
 * See `.indusk/research/anchor-overlay-pattern.md` Section 7.
 */
import type { SemanticGraphAdapter } from "./adapter.js";
import type { LogWriter } from "./log-writer.js";
import type { SemanticGraphClient } from "./runtime-client.js";
export interface SyncResult {
    created: number;
    moved: number;
    tombstoned: number;
    unchanged: number;
    edges_attached: number;
    duration_ms: number;
}
/**
 * Run a full sync: snapshot the adapter, diff against the runtime, emit events.
 *
 * 1. adapter.snapshot() → current records
 * 2. Read existing active anchors from runtime
 * 3. Match by identity; fallback to contentFingerprint for rename detection
 * 4. Unmatched existing → tombstone
 * 5. Tag events with current jj change ID
 * 6. Write each event to log AND apply to runtime
 * 7. Emit sync.completed
 */
export declare function runSync(adapter: SemanticGraphAdapter, projectRoot: string, logWriter: LogWriter, runtimeClient: SemanticGraphClient): Promise<SyncResult>;
