import { Seam } from '../seam.js' /** * Rate function evaluation. Shape closed by #29. * * Price is NOT a scalar (#22). Real structures look like: * - unit cost x frequency x quantity, where frequency hides in a footnote * - MAX(1/12 x minimum annual guarantee, % of gross receipts) * - piecewise bands varying by category, threshold, or contract year * * This is deterministic by #15 decision 2 — a model may never evaluate it and * there is no fallback path. So the v1 rate structure types must be CLOSED and * computable: a shape the code cannot evaluate has nowhere to go. */ export interface RateStructure { readonly kind: string } export interface ScenarioQuantities { [priceLineId: string]: number } /** Produces derived_cost: a comparison figure against the declared scenario, never contract value. */ export function evaluate(_rate: RateStructure, _q: ScenarioQuantities): number { throw new Seam('#29', 'the v1 rate structure types') }