/** * Turn a provider's reported token counts into dollars. * * Rates come from docs/realtime-providers.md, which quotes the vendor pricing * pages verbatim (checked 2026-08-06). */ import type { RealtimeUsage } from "../../shared/voice.js"; /** Stands in for the model when `realtime.model` is unset: the provider picks, * so the gateway cannot name the model and therefore cannot price it. */ export declare const UNPINNED_MODEL = "provider-default"; export interface TurnPrice { costUsd: number; /** False when the model is absent from the rate table. The caller surfaces the * flag rather than a $0.00 that reads like a free turn. */ pricingKnown: boolean; } /** Price one turn's usage. `usage` is the delta for that turn, not a * session-to-date total — the caller subtracts before it gets here. */ export declare function priceTurn(model: string, usage: RealtimeUsage): TurnPrice; /** Which modality bills an unattributed cached token highest on this model. Not * the dearer of the two cached rates: a cached token also cancels the full input * rate it would otherwise have been charged at, so what a modality bills for it * is the cached rate less that discount. On `gpt-realtime-2.1-mini` cached audio * costs $0.30 against text's $0.06, yet audio is the cheaper place to put one, * because it discounts a $10 input token where text discounts a $0.60 one. An * adapter handed a cached count the provider did not split bills it here, so the * unattributed part over-reports rather than hides spend. An unpriced model costs * $0 whichever answer it gets, so it keeps the audio default. */ export declare function costliestCachedModality(model: string): "audio" | "text"; /** Whether this session's model can be priced at all, for the status response. */ export declare function isPricingKnown(model: string): boolean; //# sourceMappingURL=pricing.d.ts.map