import type { AIUsage } from './index.js'

/** Host-supplied per-million token rates — no baked rates in the module (R1). */
export type HostRateTable = {
  promptUsdPerMillion: number
  completionUsdPerMillion: number
}

/**
 * Compute cost from raw token usage and a host rate table.
 * Returns null when the rate table is missing or non-finite.
 */
export function computeCost(usage: AIUsage, hostRateTable: HostRateTable): number | null {
  if (
    !Number.isFinite(hostRateTable.promptUsdPerMillion) ||
    !Number.isFinite(hostRateTable.completionUsdPerMillion)
  ) {
    return null
  }

  const promptTokens = usage.promptTokens ?? 0
  const completionTokens = usage.completionTokens ?? 0

  const promptCost = (promptTokens / 1_000_000) * hostRateTable.promptUsdPerMillion
  const completionCost = (completionTokens / 1_000_000) * hostRateTable.completionUsdPerMillion
  return promptCost + completionCost
}
