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<string, string | undefined>;
}
/**
 * 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;
