/** Immutable, credential-blind models.json snapshot. */ import { type Static, Type } from "typebox"; declare const ModelDefinitionSchema: Type.TObject<{ id: Type.TString; name: Type.TOptional; api: Type.TOptional; baseUrl: Type.TOptional; reasoning: Type.TOptional; thinkingLevelMap: Type.TOptional>; minimal: Type.TOptional>; low: Type.TOptional>; medium: Type.TOptional>; high: Type.TOptional>; xhigh: Type.TOptional>; max: Type.TOptional>; }>>; input: Type.TOptional, Type.TLiteral<"image">]>>>; cost: Type.TOptional>>; }>>; contextWindow: Type.TOptional; maxTokens: Type.TOptional; headers: Type.TOptional>; compat: Type.TOptional; supportsDeveloperRole: Type.TOptional; supportsReasoningEffort: Type.TOptional; supportsUsageInStreaming: Type.TOptional; maxTokensField: Type.TOptional, Type.TLiteral<"max_tokens">]>>; requiresToolResultName: Type.TOptional; requiresAssistantAfterToolResult: Type.TOptional; requiresThinkingAsText: Type.TOptional; requiresReasoningContentOnAssistantMessages: Type.TOptional; thinkingFormat: Type.TOptional, Type.TLiteral<"openrouter">, Type.TLiteral<"together">, Type.TLiteral<"deepseek">, Type.TLiteral<"zai">, Type.TLiteral<"qwen">, Type.TLiteral<"chat-template">, Type.TLiteral<"qwen-chat-template">, Type.TLiteral<"string-thinking">, Type.TLiteral<"ant-ling">]>>; chatTemplateKwargs: Type.TOptional, Type.TObject<{ $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>; omitWhenOff: Type.TOptional; }>]>>>; cacheControlFormat: Type.TOptional>; openRouterRouting: Type.TOptional; require_parameters: Type.TOptional; data_collection: Type.TOptional, Type.TLiteral<"allow">]>>; zdr: Type.TOptional; enforce_distillable_text: Type.TOptional; order: Type.TOptional>; only: Type.TOptional>; ignore: Type.TOptional>; quantizations: Type.TOptional>; sort: Type.TOptional; partition: Type.TOptional>; }>]>>; max_price: Type.TOptional>; completion: Type.TOptional>; image: Type.TOptional>; audio: Type.TOptional>; request: Type.TOptional>; }>>; preferred_min_throughput: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; preferred_max_latency: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; }>>; vercelGatewayRouting: Type.TOptional>; order: Type.TOptional>; }>>; supportsStrictMode: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; deferredToolsMode: Type.TOptional>; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; }>, Type.TObject<{ supportsDeveloperRole: Type.TOptional; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; supportsToolSearch: Type.TOptional; }>, Type.TObject<{ supportsEagerToolInputStreaming: Type.TOptional; supportsLongCacheRetention: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; supportsCacheControlOnTools: Type.TOptional; forceAdaptiveThinking: Type.TOptional; supportsToolReferences: Type.TOptional; }>]>>; }>; declare const ModelOverrideSchema: Type.TObject<{ name: Type.TOptional; reasoning: Type.TOptional; thinkingLevelMap: Type.TOptional>; minimal: Type.TOptional>; low: Type.TOptional>; medium: Type.TOptional>; high: Type.TOptional>; xhigh: Type.TOptional>; max: Type.TOptional>; }>>; input: Type.TOptional, Type.TLiteral<"image">]>>>; cost: Type.TOptional; output: Type.TOptional; cacheRead: Type.TOptional; cacheWrite: Type.TOptional; tiers: Type.TOptional>>; }>>; contextWindow: Type.TOptional; maxTokens: Type.TOptional; headers: Type.TOptional>; compat: Type.TOptional; supportsDeveloperRole: Type.TOptional; supportsReasoningEffort: Type.TOptional; supportsUsageInStreaming: Type.TOptional; maxTokensField: Type.TOptional, Type.TLiteral<"max_tokens">]>>; requiresToolResultName: Type.TOptional; requiresAssistantAfterToolResult: Type.TOptional; requiresThinkingAsText: Type.TOptional; requiresReasoningContentOnAssistantMessages: Type.TOptional; thinkingFormat: Type.TOptional, Type.TLiteral<"openrouter">, Type.TLiteral<"together">, Type.TLiteral<"deepseek">, Type.TLiteral<"zai">, Type.TLiteral<"qwen">, Type.TLiteral<"chat-template">, Type.TLiteral<"qwen-chat-template">, Type.TLiteral<"string-thinking">, Type.TLiteral<"ant-ling">]>>; chatTemplateKwargs: Type.TOptional, Type.TObject<{ $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>; omitWhenOff: Type.TOptional; }>]>>>; cacheControlFormat: Type.TOptional>; openRouterRouting: Type.TOptional; require_parameters: Type.TOptional; data_collection: Type.TOptional, Type.TLiteral<"allow">]>>; zdr: Type.TOptional; enforce_distillable_text: Type.TOptional; order: Type.TOptional>; only: Type.TOptional>; ignore: Type.TOptional>; quantizations: Type.TOptional>; sort: Type.TOptional; partition: Type.TOptional>; }>]>>; max_price: Type.TOptional>; completion: Type.TOptional>; image: Type.TOptional>; audio: Type.TOptional>; request: Type.TOptional>; }>>; preferred_min_throughput: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; preferred_max_latency: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; }>>; vercelGatewayRouting: Type.TOptional>; order: Type.TOptional>; }>>; supportsStrictMode: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; deferredToolsMode: Type.TOptional>; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; }>, Type.TObject<{ supportsDeveloperRole: Type.TOptional; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; supportsToolSearch: Type.TOptional; }>, Type.TObject<{ supportsEagerToolInputStreaming: Type.TOptional; supportsLongCacheRetention: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; supportsCacheControlOnTools: Type.TOptional; forceAdaptiveThinking: Type.TOptional; supportsToolReferences: Type.TOptional; }>]>>; }>; declare const ProviderConfigSchema: Type.TObject<{ name: Type.TOptional; baseUrl: Type.TOptional; apiKey: Type.TOptional; api: Type.TOptional; oauth: Type.TOptional>; headers: Type.TOptional>; compat: Type.TOptional; supportsDeveloperRole: Type.TOptional; supportsReasoningEffort: Type.TOptional; supportsUsageInStreaming: Type.TOptional; maxTokensField: Type.TOptional, Type.TLiteral<"max_tokens">]>>; requiresToolResultName: Type.TOptional; requiresAssistantAfterToolResult: Type.TOptional; requiresThinkingAsText: Type.TOptional; requiresReasoningContentOnAssistantMessages: Type.TOptional; thinkingFormat: Type.TOptional, Type.TLiteral<"openrouter">, Type.TLiteral<"together">, Type.TLiteral<"deepseek">, Type.TLiteral<"zai">, Type.TLiteral<"qwen">, Type.TLiteral<"chat-template">, Type.TLiteral<"qwen-chat-template">, Type.TLiteral<"string-thinking">, Type.TLiteral<"ant-ling">]>>; chatTemplateKwargs: Type.TOptional, Type.TObject<{ $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>; omitWhenOff: Type.TOptional; }>]>>>; cacheControlFormat: Type.TOptional>; openRouterRouting: Type.TOptional; require_parameters: Type.TOptional; data_collection: Type.TOptional, Type.TLiteral<"allow">]>>; zdr: Type.TOptional; enforce_distillable_text: Type.TOptional; order: Type.TOptional>; only: Type.TOptional>; ignore: Type.TOptional>; quantizations: Type.TOptional>; sort: Type.TOptional; partition: Type.TOptional>; }>]>>; max_price: Type.TOptional>; completion: Type.TOptional>; image: Type.TOptional>; audio: Type.TOptional>; request: Type.TOptional>; }>>; preferred_min_throughput: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; preferred_max_latency: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; }>>; vercelGatewayRouting: Type.TOptional>; order: Type.TOptional>; }>>; supportsStrictMode: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; deferredToolsMode: Type.TOptional>; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; }>, Type.TObject<{ supportsDeveloperRole: Type.TOptional; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; supportsToolSearch: Type.TOptional; }>, Type.TObject<{ supportsEagerToolInputStreaming: Type.TOptional; supportsLongCacheRetention: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; supportsCacheControlOnTools: Type.TOptional; forceAdaptiveThinking: Type.TOptional; supportsToolReferences: Type.TOptional; }>]>>; authHeader: Type.TOptional; models: Type.TOptional; api: Type.TOptional; baseUrl: Type.TOptional; reasoning: Type.TOptional; thinkingLevelMap: Type.TOptional>; minimal: Type.TOptional>; low: Type.TOptional>; medium: Type.TOptional>; high: Type.TOptional>; xhigh: Type.TOptional>; max: Type.TOptional>; }>>; input: Type.TOptional, Type.TLiteral<"image">]>>>; cost: Type.TOptional>>; }>>; contextWindow: Type.TOptional; maxTokens: Type.TOptional; headers: Type.TOptional>; compat: Type.TOptional; supportsDeveloperRole: Type.TOptional; supportsReasoningEffort: Type.TOptional; supportsUsageInStreaming: Type.TOptional; maxTokensField: Type.TOptional, Type.TLiteral<"max_tokens">]>>; requiresToolResultName: Type.TOptional; requiresAssistantAfterToolResult: Type.TOptional; requiresThinkingAsText: Type.TOptional; requiresReasoningContentOnAssistantMessages: Type.TOptional; thinkingFormat: Type.TOptional, Type.TLiteral<"openrouter">, Type.TLiteral<"together">, Type.TLiteral<"deepseek">, Type.TLiteral<"zai">, Type.TLiteral<"qwen">, Type.TLiteral<"chat-template">, Type.TLiteral<"qwen-chat-template">, Type.TLiteral<"string-thinking">, Type.TLiteral<"ant-ling">]>>; chatTemplateKwargs: Type.TOptional, Type.TObject<{ $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>; omitWhenOff: Type.TOptional; }>]>>>; cacheControlFormat: Type.TOptional>; openRouterRouting: Type.TOptional; require_parameters: Type.TOptional; data_collection: Type.TOptional, Type.TLiteral<"allow">]>>; zdr: Type.TOptional; enforce_distillable_text: Type.TOptional; order: Type.TOptional>; only: Type.TOptional>; ignore: Type.TOptional>; quantizations: Type.TOptional>; sort: Type.TOptional; partition: Type.TOptional>; }>]>>; max_price: Type.TOptional>; completion: Type.TOptional>; image: Type.TOptional>; audio: Type.TOptional>; request: Type.TOptional>; }>>; preferred_min_throughput: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; preferred_max_latency: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; }>>; vercelGatewayRouting: Type.TOptional>; order: Type.TOptional>; }>>; supportsStrictMode: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; deferredToolsMode: Type.TOptional>; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; }>, Type.TObject<{ supportsDeveloperRole: Type.TOptional; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; supportsToolSearch: Type.TOptional; }>, Type.TObject<{ supportsEagerToolInputStreaming: Type.TOptional; supportsLongCacheRetention: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; supportsCacheControlOnTools: Type.TOptional; forceAdaptiveThinking: Type.TOptional; supportsToolReferences: Type.TOptional; }>]>>; }>>>; modelOverrides: Type.TOptional; reasoning: Type.TOptional; thinkingLevelMap: Type.TOptional>; minimal: Type.TOptional>; low: Type.TOptional>; medium: Type.TOptional>; high: Type.TOptional>; xhigh: Type.TOptional>; max: Type.TOptional>; }>>; input: Type.TOptional, Type.TLiteral<"image">]>>>; cost: Type.TOptional; output: Type.TOptional; cacheRead: Type.TOptional; cacheWrite: Type.TOptional; tiers: Type.TOptional>>; }>>; contextWindow: Type.TOptional; maxTokens: Type.TOptional; headers: Type.TOptional>; compat: Type.TOptional; supportsDeveloperRole: Type.TOptional; supportsReasoningEffort: Type.TOptional; supportsUsageInStreaming: Type.TOptional; maxTokensField: Type.TOptional, Type.TLiteral<"max_tokens">]>>; requiresToolResultName: Type.TOptional; requiresAssistantAfterToolResult: Type.TOptional; requiresThinkingAsText: Type.TOptional; requiresReasoningContentOnAssistantMessages: Type.TOptional; thinkingFormat: Type.TOptional, Type.TLiteral<"openrouter">, Type.TLiteral<"together">, Type.TLiteral<"deepseek">, Type.TLiteral<"zai">, Type.TLiteral<"qwen">, Type.TLiteral<"chat-template">, Type.TLiteral<"qwen-chat-template">, Type.TLiteral<"string-thinking">, Type.TLiteral<"ant-ling">]>>; chatTemplateKwargs: Type.TOptional, Type.TObject<{ $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>; omitWhenOff: Type.TOptional; }>]>>>; cacheControlFormat: Type.TOptional>; openRouterRouting: Type.TOptional; require_parameters: Type.TOptional; data_collection: Type.TOptional, Type.TLiteral<"allow">]>>; zdr: Type.TOptional; enforce_distillable_text: Type.TOptional; order: Type.TOptional>; only: Type.TOptional>; ignore: Type.TOptional>; quantizations: Type.TOptional>; sort: Type.TOptional; partition: Type.TOptional>; }>]>>; max_price: Type.TOptional>; completion: Type.TOptional>; image: Type.TOptional>; audio: Type.TOptional>; request: Type.TOptional>; }>>; preferred_min_throughput: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; preferred_max_latency: Type.TOptional; p75: Type.TOptional; p90: Type.TOptional; p99: Type.TOptional; }>]>>; }>>; vercelGatewayRouting: Type.TOptional>; order: Type.TOptional>; }>>; supportsStrictMode: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; deferredToolsMode: Type.TOptional>; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; }>, Type.TObject<{ supportsDeveloperRole: Type.TOptional; sessionAffinityFormat: Type.TOptional, Type.TLiteral<"openai-nosession">, Type.TLiteral<"openrouter">]>>; supportsLongCacheRetention: Type.TOptional; supportsToolSearch: Type.TOptional; }>, Type.TObject<{ supportsEagerToolInputStreaming: Type.TOptional; supportsLongCacheRetention: Type.TOptional; sendSessionAffinityHeaders: Type.TOptional; supportsCacheControlOnTools: Type.TOptional; forceAdaptiveThinking: Type.TOptional; supportsToolReferences: Type.TOptional; }>]>>; }>>>; }>; export type ModelsJsonModel = Static; export type ModelsJsonModelOverride = Static; export type ModelsJsonProvider = Static; /** One immutable load of models.json. */ export declare class ModelConfig { private readonly providers; private readonly error; private constructor(); static loadMerged(modelsJsonPaths: readonly string[]): Promise; static load(modelsJsonPath: string | undefined): Promise; getProvider(providerId: string): ModelsJsonProvider | undefined; getProviderIds(): readonly string[]; getError(): string | undefined; } export {}; //# sourceMappingURL=model-config.d.ts.map