/** * The UVRN human vocabulary (Layer D, admin/plans/04-UX-LANGUAGE.md). * Single source of every human-facing string for measurement outcomes: packages, MCP output, * the uvrn.org portal, demos, and dashboards all speak through this module. * Protocol verdict names never change — this is a presentation layer mapped over them. * Strings are data (i18n-ready by structure) and host-overridable like everything in UVRN. */ import type { VerdictTone } from '../types'; export type Tier0DashTerm = 'align' | 'split' | 'contradict' | 'early' | 'insufficient'; export interface Tier0VerdictMapping { measurement: 'agree' | 'disagree' | 'conflict' | 'potential' | 'insufficient-data'; outcome: 'consensus' | 'indeterminate'; dash: Tier0DashTerm; } /** Closed D8/ADR-011 Tier-0 cross-layer map. */ export declare const TIER_0_VERDICT_MAP: readonly Tier0VerdictMapping[]; export interface VerdictDescriptor { term: string; parent: Tier0DashTerm; definition: string; } export interface DescriptorValidationResult { valid: boolean; errors: string[]; } /** * Validate a Tier-1 registration against uvrn-stance-v1 §7.1. * Existing registrations are supplied explicitly; no mutable global registry is used. */ export declare function validateDescriptor(descriptor: VerdictDescriptor, registry?: readonly VerdictDescriptor[]): DescriptorValidationResult; /** * VerdictHuman is the human rendering of one protocol verdict. */ export interface VerdictHuman { /** Protocol verdict this entry maps (never shown as-is to end users). */ verdict: string; /** Short human label, e.g. "Sources split — gap detected". */ label: string; tone: VerdictTone; /** One-line meaning shown to the user. */ meaning: string; } /** The D1 core vocabulary map, keyed by protocol verdict. */ export declare const VERDICT_VOCABULARY: Record; /** * verdictHuman resolves any protocol verdict — current or legacy v3 (`none`, `no-agreement`) — * to its human rendering. Unknown verdicts come back as a recorded-not-hidden generic. */ export declare function verdictHuman(verdict: string): VerdictHuman; /** * FramingProfile supplies the domain-aware secondary line (D2). It affects the secondary line * only — never the verdict label. */ export type FramingProfileName = 'opportunity' | 'caution' | 'neutral'; /** Topic domain → framing profile (D2). Default is neutral. */ export declare const DOMAIN_FRAMING: Record; /** Secondary lines per profile, keyed by tone. Only tones with domain-specific copy appear. */ export declare const FRAMING_LINES: Record>>; /** * framingFor returns the secondary line for a tone in a topic domain, or '' when the profile * has nothing extra to say (the D1 meaning already stands alone). */ export declare function framingFor(topicDomain: string | undefined, tone: VerdictTone): string; /** * The D3 explainer shown wherever a divergence-driven result ranks first. */ export declare const WHY_DIVERGENCE_WINS: { readonly title: "Why is a disagreement the top result?"; readonly body: string; }; /** The compact legend used on demo and portal surfaces (D3). */ export declare const VERDICT_LEGEND = "Aligned = confirmed \u00B7 Split = opportunity/tension \u00B7 Contradiction = warning \u00B7 Early signal = watch"; /** * D4 plain-language meanings for the V-Score and its components. The V-Score line carries the * honesty rule: it scores evidence quality, never truth. */ export declare const SCORE_PLAIN_MEANING: { readonly absoluteConsensusValue: "The median and range of the untyped values retained after source deduplication. It reports where those sources landed, not whether the claim is true."; readonly completeness: "How many of the sources we asked actually answered."; readonly parity: "How closely the answering sources agree with each other."; readonly freshness: "How recent the evidence is."; readonly vScore: "A 0–100 blend of the three. It scores the evidence quality, not whether the claim is true."; }; /** Status notes for source rows, including the explicit-gap framing (B5). */ export declare const SOURCE_STATUS_NOTES: Record; /** * buildMasterNarrative renders the D1-vocabulary narrative template for a master receipt: * "7 of 8 sources align; 1 was unreachable." Producers use it as the default `narrative`. */ export declare function buildMasterNarrative(args: { claimText: string; primaryVerdict: string; sourcesTotal: number; sourcesResponded: number; }): string; /** * enrichMeasurements stamps `humanExplanation` (Layer D) onto measurement results. * Call it BEFORE buildMasterReceipt so the human language is inside the hashed envelope * (B5.2) — enriching after hashing would invalidate the masterHash. Existing * humanExplanation values are preserved; inputs are not mutated. */ export declare function enrichMeasurements(measurements: ReadonlyArray): T[]; //# sourceMappingURL=index.d.ts.map