import type { ExperienceEvidenceIdentity, ExperienceRoute, ExperienceRouteEvidence } from "./experience-route-policy.js"; export interface ExperienceRunObservation { /** Caller-owned identity. Uniqueness is enforced across the complete input. */ readonly run_id: string; readonly completed: boolean; readonly shape: string; readonly route: ExperienceRoute; readonly evidence_window: string; readonly identity: ExperienceEvidenceIdentity; /** End-to-end duration for the complete run, including failed attempts. */ readonly duration_ms: number | null; /** Caller-declared estimated cost for the complete run, including failed attempts. */ readonly estimated_cost_amount: number | null; } export interface SummarizeExperienceEvidenceInput { readonly observations: readonly ExperienceRunObservation[]; } export type ExperienceEvidenceSummaryRejectionReason = "invalid-input" | "invalid-identity" | "duplicate-run-identity" | "unknown-route" | "invalid-number"; export type ExperienceEvidenceSummaryResult = { readonly status: "summarized"; readonly reason: "complete-caller-observations"; readonly evidence: readonly ExperienceRouteEvidence[]; } | { readonly status: "inconclusive"; readonly reason: "empty-observations" | "incomplete-run" | "missing-observation"; readonly evidence: readonly []; } | { readonly status: "rejected"; readonly reason: ExperienceEvidenceSummaryRejectionReason; readonly evidence: readonly []; }; /** * Purely summarizes caller-supplied observations. It performs no measurement, pricing, route * selection, budget change, or promotion authorization. Cost and completeness remain caller claims. */ export declare function summarizeExperienceEvidence(input: unknown): ExperienceEvidenceSummaryResult;