import { type AnthropicCatalog, type AnthropicModelEntry, type AnthropicPricing } from "./anthropic-catalog.js"; export type ModelResolutionSource = "snapshot" | "env-override" | "passthrough"; export interface ResolvedAnthropicModel { /** What the caller asked for, verbatim — useful for forensic logging. */ requestedAlias: string; /** Canonical Anthropic API ID after resolution. */ resolvedId: string; /** Marketing display name, or empty when source === "passthrough". */ displayName: string; /** Pricing block when known; null when source === "passthrough". */ pricing: AnthropicPricing | null; /** Where this answer came from. */ source: ModelResolutionSource; /** ISO date of the catalog snapshot used. Always populated. */ snapshotDate: string; /** Status from the catalog (active/deprecated/retired) when known. */ status: AnthropicModelEntry["status"] | null; /** Sunset date from the catalog when known. */ sunsetDate: string | null; } export interface ResolveOptions { /** Inject a custom catalog (for tests). Defaults to the dated snapshot. */ catalog?: AnthropicCatalog; /** Inject a custom env getter (for tests). Defaults to `process.env`. */ env?: NodeJS.ProcessEnv | Record; } /** * Resolve an Anthropic alias / canonical ID into a provenance-rich record. * * Precedence: * 1. ENV override `VSKILL_DEFAULT_MODEL_ANTHROPIC` — only when the input is * a plain alias (`opus|sonnet|haiku|best`) so explicit canonical IDs * always win over a tuned default. * 2. Catalog lookup — alias OR canonical ID, case-insensitive. * 3. Passthrough — unknown future ID; keep the input as `resolvedId`, * record `source: "passthrough"` so the UI can warn about pricing * and the test suite can flag missing entries. */ export declare function resolveAnthropicModel(input: string, opts?: ResolveOptions): ResolvedAnthropicModel;