export const TOKENS_PER_MILLION = 1_000_000 interface TokenPriceFormatOptions { fractionDigits?: number withCurrencySymbol?: boolean emptyValue?: string } function isFiniteNumber(value: unknown): value is number { return typeof value === 'number' && Number.isFinite(value) } export function calculateTokenUnitPrice( cost: number | null | undefined, tokens: number | null | undefined ): number | null { if (!isFiniteNumber(cost) || !isFiniteNumber(tokens) || tokens <= 0) { return null } return cost / tokens } export function calculateTokenPricePerMillion( cost: number | null | undefined, tokens: number | null | undefined ): number | null { const unitPrice = calculateTokenUnitPrice(cost, tokens) if (unitPrice == null) { return null } return unitPrice * TOKENS_PER_MILLION } export function formatTokenPricePerMillion( cost: number | null | undefined, tokens: number | null | undefined, options: TokenPriceFormatOptions = {} ): string { const pricePerMillion = calculateTokenPricePerMillion(cost, tokens) if (pricePerMillion == null) { return options.emptyValue ?? '-' } const fractionDigits = options.fractionDigits ?? 4 const formatted = pricePerMillion.toFixed(fractionDigits) return options.withCurrencySymbol == false ? formatted : `$${formatted}` }