/**
 * Model registry — UI-relevant metadata for all platform-supported LLM models.
 *
 * Reads from the unified JSON registry at backend/libs/model-registry.json,
 * which is the single source of truth for model IDs, display names, pricing,
 * and cost tiers across all harnesses and runtimes.
 *
 * Update it with: @update-model-registry
 */
import type { HarnessOption } from "./harness";
/**
 * Pricing bracket for a model.
 *
 * - `economy` — lowest-cost models suitable for high-volume or latency-sensitive tasks
 * - `standard` — balanced cost-to-capability, the default choice for most workloads
 * - `premium` — highest-capability models for complex reasoning or critical tasks
 */
export type CostTier = "economy" | "standard" | "premium";
/**
 * LLM provider identifier. Each provider maps to a distinct inference
 * backend (or intermediary, in the case of Cursor-served third-party
 * models). The {@link MODEL_REGISTRY} uses this for grouping in the
 * "Show All" expanded view.
 */
export type Provider = "anthropic" | "openai" | "google" | "xai" | "cursor" | "moonshot" | "ollama";
/**
 * Providers whose models should be hidden from the UI.
 *
 * The model entries themselves stay in MODEL_REGISTRY so backend
 * compatibility is preserved. The useModelRegistry hook filters
 * them out before anything reaches a component.
 *
 * To re-enable a provider, simply remove it from this set.
 */
export declare const DISABLED_PROVIDERS: ReadonlySet<Provider>;
/**
 * UI-relevant metadata for a single platform-supported LLM model.
 *
 * @example
 * ```tsx
 * const { getModel, defaultModel } = useModelRegistry();
 * const model = getModel(selectedId) ?? defaultModel;
 *
 * <span>{model.displayName} ({model.costTier})</span>
 * ```
 */
export interface ModelInfo {
    /** Unique model identifier sent to the backend (e.g. `"claude-sonnet-4.5"`). */
    readonly modelId: string;
    /** LLM provider that serves this model. */
    readonly provider: Provider;
    /** Human-readable name shown in the model picker. */
    readonly displayName: string;
    /** Pricing bracket used for cost-tier indicators in the UI. */
    readonly costTier: CostTier;
    /** Which execution engine serves this model. */
    readonly harness: HarnessOption;
    /**
     * When `true`, appears in the curated default list (the short view
     * before "Show All Models" is expanded or search is used).
     */
    readonly featured: boolean;
}
/**
 * Per-model cost entry for programmatic access to pricing data.
 * Re-exported for consumers that need dollar-level pricing beyond the
 * coarse `CostTier` label.
 */
export interface ModelCostEntry {
    readonly modelId: string;
    readonly inputPricePerMillion: number;
    readonly outputPricePerMillion: number;
    readonly cacheWritePricePerMillion: number;
    readonly cacheReadPricePerMillion: number;
}
/**
 * Build a compound key that uniquely identifies a model across harnesses.
 *
 * The same underlying model name (e.g. `claude-4.6-sonnet`) can exist in
 * both native and cursor harnesses. The compound key disambiguates.
 */
export declare function modelKey(harness: HarnessOption, modelId: string): string;
/** Parsed result of a compound `harness/modelId` key. */
export interface ParsedModelKey {
    /** Harness portion of the compound key. */
    harness: HarnessOption;
    /** Model ID portion of the compound key. */
    modelId: string;
}
/**
 * Parse a compound key back into its `(harness, modelId)` parts.
 * Returns `undefined` for malformed keys.
 */
export declare function parseModelKey(key: string): ParsedModelKey | undefined;
/**
 * Static catalog of all platform-supported LLM models, loaded from the
 * unified JSON registry.
 *
 * {@link useModelRegistry} filters out disabled providers and provides
 * lookup helpers on top of this list.
 */
export declare const MODEL_REGISTRY: readonly ModelInfo[];
/** Model ID used when no user preference is set (native harness). */
export declare const DEFAULT_MODEL_ID = "claude-sonnet-4.5";
/** Model ID used when the Cursor harness is selected and no user preference is set. */
export declare const DEFAULT_CURSOR_MODEL_ID = "default";
//# sourceMappingURL=registry.d.ts.map