import type { Capabilities, CustomModelDefinition, ModelsRegistry, WireFamily } from '@wrongstack/core/types'; export declare const FAMILY_BY_PROVIDER_ID: Partial>; /** * Providers absent from models.dev whose per-model facts live under another * catalog id. Shared with `model-output-limits.ts` so the per-request output * ceiling resolves through exactly the same aliasing rules as the capability * overlay. */ export declare const SIBLING_CATALOG_BY_FAMILY: Partial>; /** * Providers whose catalog entry lives under a models.dev id that is not their * own, keyed by provider TYPE rather than wire family (a gateway has no wire * family of its own). * * models.dev publishes the Vercel AI Gateway as provider `vercel` * (`npm: @ai-sdk/gateway`), and its model ids are already in gateway form — * `anthropic/claude-sonnet-5`. Do NOT try to resolve these by splitting the id * and looking the remainder up under `anthropic`: the two catalogs are not * guaranteed to agree on a slug. They happen to match for the Claude 5 family, * but the 4.x generation diverges (`anthropic/claude-sonnet-4.6` on the gateway * vs `claude-sonnet-4-6` on the provider), and a missed lookup silently drops * every limit back to a default. * * Shared with `model-output-limits.ts` so the per-request output ceiling * resolves through exactly the same aliasing rules as the capability overlay. */ export declare const CATALOG_ALIAS_BY_PROVIDER_TYPE: Partial>; /** * The models.dev id to read facts from for a saved provider entry. Checks the * config `type` first so a user alias (`gateway-work` → `type: "ai-gateway"`) * resolves the same as the canonical id. */ export declare function catalogProviderIdFor(providerId: string, type?: string | undefined): string; /** * Split a gateway model id (`"anthropic/claude-sonnet-5"`) into the upstream * catalog provider and its native model id. Only the FIRST separator is * significant — model ids may themselves contain slashes * (`"meta/llama-3.1-70b/instruct"`). */ export declare function splitGatewayModelId(modelId: string): { providerId: string; modelId: string; } | undefined; export interface CapabilitiesForOptions { /** * models.dev id to read per-model facts from, when it differs from the * user-visible provider id (see {@link CATALOG_ALIAS_BY_PROVIDER_TYPE}). * Without it an AI Gateway provider resolves to the `unsupported` family — * whose baseline has `tools: false`, `streaming: false` and * `systemPrompt: false` — and the overlay silently strips every capability * the transport actually has. */ catalogProviderId?: string | undefined; /** * Baseline to overlay catalog facts onto, replacing the wire-family default. * Pass a transport's self-declared capabilities when the family map cannot * describe it — otherwise an unknown provider id silently downgrades a fully * capable transport to the `unsupported` baseline. */ baseCapabilities?: Capabilities | undefined; } /** * Resolve capabilities for a (provider, model) pair using the family default * as a baseline and overlaying per-model facts from the ModelsRegistry. * * Priority chain (highest first): * 1. customModels[modelId].capabilities — user-defined per-model overrides * 2. model facts from registry — sub-fields AND-ed with base * 3. family default — e.g. 32K for openai-compatible */ export declare function capabilitiesFor(registry: ModelsRegistry, providerId: string, modelId: string, customModels?: Record, options?: CapabilitiesForOptions): Promise; //# sourceMappingURL=capabilities.d.ts.map