/** * conflictsOf — the exclusion comparison, pure. * * Pattern: pure function over a finite assertion set. No I/O, no store. * Role: the algebra's first comparison: two `asserted` (never quoted) * assertions on one single-valued `(subject, predicate, epoch)` * key with different comparable values cannot both be true. * * What it deliberately does NOT do: * - fire across strata (history is quotation); * - compare unknowns (honest absence — an unknown neither corroborates * nor contradicts); * - fire on multi-valued predicates (the declared exception); * - infer subject identity (no stamp, no comparison); * - resolve anything — it names pairs; the caller files findings. * * Values compare by structural equality over their comparable face (a * known `Claim` compares by its value), via JSON with sorted keys — the * same determinism bar the house holds serialization to elsewhere. */ import { type Assertion } from './types.js'; /** One exclusion: the two-or-more assertions that cannot all be true. */ export interface Conflict { readonly key: string; /** Every distinct-valued assertion on the key, in input order. */ readonly assertions: readonly Assertion[]; } /** * Find every single-valued key carrying two or more distinct values. * * @param assertions the finite set under comparison (one payload, or one * write-delta joined with the standing set for a subject) * @param multiValued predicates exempt from single-valuedness, declared */ export declare function conflictsOf(assertions: readonly Assertion[], multiValued?: ReadonlySet): readonly Conflict[];