import type { TCoreArgument, TCorePremise, TCorePropositionalExpression, TCorePropositionalVariable } from "../schemata/index.js"; import type { TCoreArgumentDiff, TCoreDiffOptions, TCoreFieldChange } from "../types/diff.js"; import type { ArgumentEngine } from "./argument-engine.js"; /** Compares two argument objects. Core argument only has identity fields (id, version), so no diffable fields. */ export declare function defaultCompareArgument(_before: TCoreArgument, _after: TCoreArgument): TCoreFieldChange[]; /** Compares two variables and returns field-level changes for `symbol` and binding-specific fields. */ export declare function defaultCompareVariable(before: TVar, after: TVar): TCoreFieldChange[]; /** Compares two premises and returns field-level changes. Base premise has no diffable fields beyond identity. */ export declare function defaultComparePremise(_before: TCorePremise, _after: TCorePremise): TCoreFieldChange[]; /** Compares two expressions and returns field-level changes for structural fields (`type`, `parentId`, `position`, `variableId`, `operator`). */ export declare function defaultCompareExpression(before: TCorePropositionalExpression, after: TCorePropositionalExpression): TCoreFieldChange[]; /** * Computes a structural diff between two argument engines. * * Compares argument metadata, variables, premises (with nested expression * diffs), and role assignments. Uses pluggable comparators that default to * the `defaultCompare*` functions. * * **Four-state enrichment:** Each modified entity carries a `state` field * discriminating `modified-own` (the entity itself changed) from * `modified-within` (only contained children or references changed). The * `modified-within` state also marks premises whose claim-bound variables * changed outside the premise — reference-edge propagation that surfaces * downstream impacts of a claim edit. * * **Id-stability contract:** The id-stability contract matters because the * `modified-own`/`modified-within` states are only expressible when an * entity's id survives a content edit; if ids churn, the diff can only * report add+remove. Every version-producing path must preserve the id of * any entity that logically persists across a version bump; mint a new id * only for something genuinely new; drop an id only for something genuinely * gone. */ export declare function diffArguments(engineA: ArgumentEngine, engineB: ArgumentEngine, options?: TCoreDiffOptions): TCoreArgumentDiff; //# sourceMappingURL=diff.d.ts.map