/**
 * ADR-PIPELINE-096 D3 — Agent-Claim Registry.
 *
 * Maps the four headline financial metrics that the executive summary,
 * decision memo, and financial analysis render onto specific agents and
 * response paths. The renderer consults this registry FIRST when synthesising
 * a number; if the canonical agent returned a value, that value is the source
 * of truth and the rendered cell carries `src=<agent>`. If the registry has no
 * winner, the renderer falls through to `unit-economics.json`, then to the
 * per-employee heuristic from ADR-095.
 *
 * The registry is intentionally NARROW — it covers only the four metrics that
 * appear in every CXO-facing document. Adding a new metric is a one-line
 * change here plus a renderer hook; we are explicit about which numbers carry
 * source attribution and which do not.
 */
/**
 * The four headline metrics that get source attribution. Lined up with the
 * fcv-tag `kind=` values from ADR-PIPELINE-073 (financial-claim-extractor).
 */
export type ClaimKind = 'investment' | 'roi' | 'npv' | 'payback' | 'savings';
/**
 * One entry maps a metric to a specific agent and a response-path
 * (dot-delimited). Multiple entries per kind are allowed and ranked by
 * priority — the first agent that returned a value wins.
 */
export interface ClaimMapping {
    /** The metric this mapping resolves. */
    readonly kind: ClaimKind;
    /** Domain identifier — e.g. `costops`, `simulator`, `platform`. */
    readonly domain: string;
    /** Agent identifier within the domain — e.g. `forecast`, `roi`, `scenario`. */
    readonly agent: string;
    /** Dot-delimited path inside the agent's response object. Supports `.` and array `[0]` notation. */
    readonly response_path: string;
    /** Lower numbers are tried first. Stable, declarative priority. */
    readonly priority: number;
    /** Optional human-readable methodology string used in the rendered cell. */
    readonly methodology?: string;
}
/**
 * Canonical mapping table. Adding a new agent that returns one of the four
 * metrics is a single-line append here. The renderer never hardcodes
 * agent/path knowledge; everything flows through this table.
 */
export declare const AGENT_CLAIM_REGISTRY: ReadonlyArray<ClaimMapping>;
/** Minimal shape we need from any agent invocation result. */
export interface AgentResultLike {
    readonly domain: string;
    readonly agent: string;
    readonly status: number;
    readonly response: unknown;
}
/** A claim that has been resolved against the registry. */
export interface ResolvedClaim {
    /** Raw value from the agent (number or string — caller decides format). */
    readonly value: number | string;
    /** Source attribution for the rendered `src=` attribute. */
    readonly source: string;
    /** Methodology string for the cell text. */
    readonly methodology: string;
    /** Which agent produced this value. */
    readonly domain: string;
    readonly agent: string;
}
/**
 * Look up the highest-priority agent that returned a value for `kind`.
 * Returns `null` when no registered agent succeeded with a non-null value at
 * the response path. Caller decides whether to fall through to
 * unit-economics.json or to the per-employee heuristic.
 */
export declare function resolveClaim(kind: ClaimKind, results: ReadonlyArray<AgentResultLike>): ResolvedClaim | null;
/**
 * Resolve ALL agents that returned a value for `kind`. Used by D3 part 2's
 * triangulation surface to detect agreement / divergence across multiple
 * sources for the same metric.
 */
export declare function resolveAllClaims(kind: ClaimKind, results: ReadonlyArray<AgentResultLike>): ResolvedClaim[];
/**
 * Walk a dot-delimited path inside a response object. Supports nested objects
 * and array indices via `[N]` notation. Returns `null` for any miss.
 *
 * Example: `data.dcf.npv_5yr_usd` → result.data.dcf.npv_5yr_usd
 * Example: `data.scenarios[0].npv` → result.data.scenarios[0].npv
 */
export declare function readResponsePath(response: unknown, path: string): unknown;
//# sourceMappingURL=agent-claim-registry.d.ts.map