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')
}
