import type { AIProfileChoice, AIProvider } from "./types.js"; export interface ModelInvocationEndpoint { provider: AIProvider; modelId: string; } export interface ModelInvocation { direct: ModelInvocationEndpoint; openrouter: ModelInvocationEndpoint | null; } export type CatalogMatchMethod = "exact" | "openRouterSlug" | "canonicalSlug" | "anthropicVersionNormalize" | "providerPrefixed"; export interface CatalogMatchResult { matched: boolean; openRouterModelId: string | null; canonicalSlug?: string; matchMethod?: CatalogMatchMethod; candidates: string[]; } /** Anthropic OpenRouter slugs use dotted minor versions (`4.6`), not dashed (`4-6`). */ export declare function normalizeAnthropicVersionSlug(slug: string): string; export declare function openRouterResolutionCandidates(provider: string, modelId: string): string[]; export declare function buildRegistryKey(provider: string, modelId: string): string; /** * Vendor-direct endpoint from a profile choice. * When modelId is already an OpenRouter slug (`vendor/model`), direct uses the slug prefix as provider hint. */ export declare function buildDirectInvocation(provider: string, modelId: string): ModelInvocationEndpoint; export declare function buildOpenRouterModelId(provider: string, modelId: string): string; export declare function buildModelInvocation(provider: string, modelId: string): ModelInvocation; export declare function matchOpenRouterCatalog(provider: string, modelId: string, catalogIndex: Map): CatalogMatchResult; export declare function isOpenRouterModelAvailable(provider: string, modelId: string, catalogIndex: Map | Set): boolean; /** Skip local / vendor-direct choices that are not expected on OpenRouter. */ export declare function shouldCheckOpenRouterAlignment(choice: AIProfileChoice): boolean; //# sourceMappingURL=modelIdentity.d.ts.map