/** * @fileoverview reconcileBilateralPair: compare the two parties' copies of a * bilateral receipt and emit a reason-coded verdict (FREEZE-VWE F2). * * ── PROOF BOX ────────────────────────────────────────────────────────────── * What a 'reconciled' verdict PROVES, given the precondition that both copies * individually passed verifyBilateralReceipt: * The two parties hold copies that agree on the request/response hashes, * the serving agent, the success claim, and (when present) the action_ref, * and each copy's audience binding names the other side per the memo * invariant. * * What it does NOT prove: * - It does NOT re-verify signatures; run verifyBilateralReceipt first. * - It does NOT prove the interaction happened; it proves the copies agree. * - It is NOT a gateway decision. The verdict feeds a relying party's own * policy; only the audience facet emits a ConstraintFailure, via the * existing audienceFailure builder. * ─────────────────────────────────────────────────────────────────────────── * * Detectors per SCHEMAS-DRAFT 3a, classes frozen by FREEZE-VWE F2. * Audience directions per AUDIENCE-BINDING-MEMO decision 4: the counterparty * receipt's aud must contain the requester (self) identifier; the * requester-side receipt's aud must contain the counterparty identifier. */ import type { BilateralReceipt } from '../../types/bilateral-receipt.js'; import type { BilateralPairPolicy, BilateralPairVerdict } from './types.js'; /** * Reconcile the relying party's copy of a bilateral receipt with the * counterparty's copy (or its absence). See the fileoverview for the proof * box and the precondition (signatures already verified per copy). */ export declare function reconcileBilateralPair(local: BilateralReceipt, counterparty: BilateralReceipt | null, policy: BilateralPairPolicy): BilateralPairVerdict; //# sourceMappingURL=reconcile.d.ts.map