/** * Lens B outcome join + threshold — pure functions, no LLM, no I/O (IND-434). * * Given discriminators whose candidate → side assignments were produced BLIND * to outcome (the miner never saw which side the user chose), this module joins * the explicit owner-outcome labels and produces aggregate-only telemetry: * * - Independence: capture admits only one unique counterpart per opportunity; * the caller then deduplicates by that recipient-scoped counterpart hash. * Every retained entry therefore represents one distinct counterpart. * - Threshold: a discriminator side is "qualified" only when it holds at * least `minIndependentSupport` (k) independent examples. A hypothesis is * eligible only when at least `minComparedSides` sides qualify. * - Small-cell suppression: only qualified sides (≥ k) are ever emitted, so * no aggregate row can be traced to a small handful of individuals. * * The outcome label is joined here and ONLY here — the miner and the side * assignments upstream are independent of it, so association can never leak * into classification. */ import type { JoinOutcomeHypothesesInput, OutcomeShadowResult } from "./outcome.types.js"; /** * Join outcome labels onto blind side assignments and keep only hypotheses that * clear the independent-support threshold on at least `minComparedSides` sides. * * @returns Aggregate telemetry: eligible hypotheses sorted by (min support desc, * label asc) for deterministic ordering, each carrying only qualified sides. */ export declare function joinOutcomeHypotheses(input: JoinOutcomeHypothesesInput): OutcomeShadowResult;