/**
 * LLM provider pricing table + cost calculation.
 *
 * Hardcoded with periodic refresh — see PRICING_AS_OF below. When provider
 * pricing changes, update the table and bump PRICING_AS_OF. The corresponding
 * pricing data lives backend-side in the litellm_* schema for av_native; this
 * mirrors the active subset for harness in-process cost calculation.
 *
 * Plaintext stays in the customer's process. Only the calculated cost (a number)
 * crosses the wire to AgentVault as span metadata.
 *
 * Tables are keyed by `LlmProvider` (matching the ones detected in
 * llm-response-parser.ts) so models that exist on multiple providers with
 * different pricing — e.g. DeepSeek-direct vs DeepSeek-via-OpenRouter — get
 * correctly priced based on which API the call hit.
 */
import type { LlmProvider } from "./llm-response-parser.js";
export declare const PRICING_AS_OF = "2026-05-02";
/**
 * Strip provider-dated suffixes from a model name to match the canonical form.
 * Anthropic uses `-YYYYMMDD`, OpenAI uses `-YYYY-MM-DD`. Both collapse to the
 * un-suffixed key in PRICING.
 */
export declare function normalizeModelName(model: string): string;
/**
 * Compute USD cost for an LLM call.
 *
 * Returns `undefined` (not 0) when the model isn't in any pricing table —
 * intentional: an unknown model's cost should appear absent in dashboards
 * rather than misleadingly free.
 *
 * If `provider` is supplied, that provider's table is preferred so a model
 * priced differently across providers (e.g. DeepSeek direct vs via OpenRouter)
 * gets the correct number. With `provider` omitted, the function searches all
 * tables — back-compat for callers that don't yet know the provider.
 */
export declare function calculateCost(model: string, inputTokens: number, outputTokens: number, provider?: LlmProvider): number | undefined;
//# sourceMappingURL=llm-cost.d.ts.map