import { type Static, Type } from "typebox";
import type { TLocalizedValidationError } from "typebox/error";
declare const ModelOverrideSchema: Type.TObject<{
    name: Type.TOptional<Type.TString>;
    reasoning: Type.TOptional<Type.TBoolean>;
    thinkingLevelMap: Type.TOptional<Type.TObject<{
        off: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
        minimal: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
        low: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
        medium: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
        high: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
        xhigh: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
        max: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
    }>>;
    input: Type.TOptional<Type.TArray<Type.TUnion<[Type.TLiteral<"text">, Type.TLiteral<"image">]>>>;
    cost: Type.TOptional<Type.TObject<{
        input: Type.TOptional<Type.TNumber>;
        output: Type.TOptional<Type.TNumber>;
        cacheRead: Type.TOptional<Type.TNumber>;
        cacheWrite: Type.TOptional<Type.TNumber>;
        tiers: Type.TOptional<Type.TArray<Type.TIntersect<[Type.TObject<{
            input: Type.TNumber;
            output: Type.TNumber;
            cacheRead: Type.TNumber;
            cacheWrite: Type.TNumber;
        }>, Type.TObject<{
            inputTokensAbove: Type.TNumber;
        }>]>>>;
    }>>;
    contextWindow: Type.TOptional<Type.TNumber>;
    contextWindowOptions: Type.TOptional<Type.TArray<Type.TNumber>>;
    maxTokens: Type.TOptional<Type.TNumber>;
    headers: Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
    compat: Type.TOptional<Type.TUnion<[Type.TObject<{
        supportsStore: Type.TOptional<Type.TBoolean>;
        supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
        supportsReasoningEffort: Type.TOptional<Type.TBoolean>;
        supportsUsageInStreaming: Type.TOptional<Type.TBoolean>;
        maxTokensField: Type.TOptional<Type.TUnion<[Type.TLiteral<"max_completion_tokens">, Type.TLiteral<"max_tokens">]>>;
        requiresToolResultName: Type.TOptional<Type.TBoolean>;
        requiresAssistantAfterToolResult: Type.TOptional<Type.TBoolean>;
        requiresThinkingAsText: Type.TOptional<Type.TBoolean>;
        requiresReasoningContentOnAssistantMessages: Type.TOptional<Type.TBoolean>;
        thinkingFormat: Type.TOptional<Type.TUnion<[Type.TLiteral<"openai">, 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.TRecord<"^.*$", Type.TUnion<[Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull]>, Type.TObject<{
            $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>;
            omitWhenOff: Type.TOptional<Type.TBoolean>;
        }>]>>>;
        cacheControlFormat: Type.TOptional<Type.TLiteral<"anthropic">>;
        openRouterRouting: Type.TOptional<Type.TObject<{
            allow_fallbacks: Type.TOptional<Type.TBoolean>;
            require_parameters: Type.TOptional<Type.TBoolean>;
            data_collection: Type.TOptional<Type.TUnion<[Type.TLiteral<"deny">, Type.TLiteral<"allow">]>>;
            zdr: Type.TOptional<Type.TBoolean>;
            enforce_distillable_text: Type.TOptional<Type.TBoolean>;
            order: Type.TOptional<Type.TArray<Type.TString>>;
            only: Type.TOptional<Type.TArray<Type.TString>>;
            ignore: Type.TOptional<Type.TArray<Type.TString>>;
            quantizations: Type.TOptional<Type.TArray<Type.TString>>;
            sort: Type.TOptional<Type.TUnion<[Type.TString, Type.TObject<{
                by: Type.TOptional<Type.TString>;
                partition: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
            }>]>>;
            max_price: Type.TOptional<Type.TObject<{
                prompt: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                completion: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                image: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                audio: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                request: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
            }>>;
            preferred_min_throughput: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                p50: Type.TOptional<Type.TNumber>;
                p75: Type.TOptional<Type.TNumber>;
                p90: Type.TOptional<Type.TNumber>;
                p99: Type.TOptional<Type.TNumber>;
            }>]>>;
            preferred_max_latency: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                p50: Type.TOptional<Type.TNumber>;
                p75: Type.TOptional<Type.TNumber>;
                p90: Type.TOptional<Type.TNumber>;
                p99: Type.TOptional<Type.TNumber>;
            }>]>>;
        }>>;
        vercelGatewayRouting: Type.TOptional<Type.TObject<{
            only: Type.TOptional<Type.TArray<Type.TString>>;
            order: Type.TOptional<Type.TArray<Type.TString>>;
        }>>;
        supportsStrictMode: Type.TOptional<Type.TBoolean>;
        supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
    }>, Type.TObject<{
        sendSessionIdHeader: Type.TOptional<Type.TBoolean>;
        supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
        supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
    }>, Type.TObject<{
        supportsEagerToolInputStreaming: Type.TOptional<Type.TBoolean>;
        supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
        sendSessionAffinityHeaders: Type.TOptional<Type.TBoolean>;
        supportsCacheControlOnTools: Type.TOptional<Type.TBoolean>;
        forceAdaptiveThinking: Type.TOptional<Type.TBoolean>;
    }>]>>;
}>;
export type ModelOverride = Static<typeof ModelOverrideSchema>;
declare const ModelsConfigSchema: Type.TObject<{
    providers: Type.TRecord<"^.*$", Type.TObject<{
        name: Type.TOptional<Type.TString>;
        baseUrl: Type.TOptional<Type.TString>;
        apiKey: Type.TOptional<Type.TString>;
        api: Type.TOptional<Type.TString>;
        headers: Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
        compat: Type.TOptional<Type.TUnion<[Type.TObject<{
            supportsStore: Type.TOptional<Type.TBoolean>;
            supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
            supportsReasoningEffort: Type.TOptional<Type.TBoolean>;
            supportsUsageInStreaming: Type.TOptional<Type.TBoolean>;
            maxTokensField: Type.TOptional<Type.TUnion<[Type.TLiteral<"max_completion_tokens">, Type.TLiteral<"max_tokens">]>>;
            requiresToolResultName: Type.TOptional<Type.TBoolean>;
            requiresAssistantAfterToolResult: Type.TOptional<Type.TBoolean>;
            requiresThinkingAsText: Type.TOptional<Type.TBoolean>;
            requiresReasoningContentOnAssistantMessages: Type.TOptional<Type.TBoolean>;
            thinkingFormat: Type.TOptional<Type.TUnion<[Type.TLiteral<"openai">, 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.TRecord<"^.*$", Type.TUnion<[Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull]>, Type.TObject<{
                $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>;
                omitWhenOff: Type.TOptional<Type.TBoolean>;
            }>]>>>;
            cacheControlFormat: Type.TOptional<Type.TLiteral<"anthropic">>;
            openRouterRouting: Type.TOptional<Type.TObject<{
                allow_fallbacks: Type.TOptional<Type.TBoolean>;
                require_parameters: Type.TOptional<Type.TBoolean>;
                data_collection: Type.TOptional<Type.TUnion<[Type.TLiteral<"deny">, Type.TLiteral<"allow">]>>;
                zdr: Type.TOptional<Type.TBoolean>;
                enforce_distillable_text: Type.TOptional<Type.TBoolean>;
                order: Type.TOptional<Type.TArray<Type.TString>>;
                only: Type.TOptional<Type.TArray<Type.TString>>;
                ignore: Type.TOptional<Type.TArray<Type.TString>>;
                quantizations: Type.TOptional<Type.TArray<Type.TString>>;
                sort: Type.TOptional<Type.TUnion<[Type.TString, Type.TObject<{
                    by: Type.TOptional<Type.TString>;
                    partition: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                }>]>>;
                max_price: Type.TOptional<Type.TObject<{
                    prompt: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    completion: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    image: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    audio: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    request: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                }>>;
                preferred_min_throughput: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                    p50: Type.TOptional<Type.TNumber>;
                    p75: Type.TOptional<Type.TNumber>;
                    p90: Type.TOptional<Type.TNumber>;
                    p99: Type.TOptional<Type.TNumber>;
                }>]>>;
                preferred_max_latency: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                    p50: Type.TOptional<Type.TNumber>;
                    p75: Type.TOptional<Type.TNumber>;
                    p90: Type.TOptional<Type.TNumber>;
                    p99: Type.TOptional<Type.TNumber>;
                }>]>>;
            }>>;
            vercelGatewayRouting: Type.TOptional<Type.TObject<{
                only: Type.TOptional<Type.TArray<Type.TString>>;
                order: Type.TOptional<Type.TArray<Type.TString>>;
            }>>;
            supportsStrictMode: Type.TOptional<Type.TBoolean>;
            supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
        }>, Type.TObject<{
            sendSessionIdHeader: Type.TOptional<Type.TBoolean>;
            supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
            supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
        }>, Type.TObject<{
            supportsEagerToolInputStreaming: Type.TOptional<Type.TBoolean>;
            supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            sendSessionAffinityHeaders: Type.TOptional<Type.TBoolean>;
            supportsCacheControlOnTools: Type.TOptional<Type.TBoolean>;
            forceAdaptiveThinking: Type.TOptional<Type.TBoolean>;
        }>]>>;
        authHeader: Type.TOptional<Type.TBoolean>;
        models: Type.TOptional<Type.TArray<Type.TObject<{
            id: Type.TString;
            name: Type.TOptional<Type.TString>;
            api: Type.TOptional<Type.TString>;
            baseUrl: Type.TOptional<Type.TString>;
            reasoning: Type.TOptional<Type.TBoolean>;
            thinkingLevelMap: Type.TOptional<Type.TObject<{
                off: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                minimal: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                low: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                medium: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                high: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                xhigh: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                max: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
            }>>;
            input: Type.TOptional<Type.TArray<Type.TUnion<[Type.TLiteral<"text">, Type.TLiteral<"image">]>>>;
            cost: Type.TOptional<Type.TIntersect<[Type.TObject<{
                input: Type.TNumber;
                output: Type.TNumber;
                cacheRead: Type.TNumber;
                cacheWrite: Type.TNumber;
            }>, Type.TObject<{
                tiers: Type.TOptional<Type.TArray<Type.TIntersect<[Type.TObject<{
                    input: Type.TNumber;
                    output: Type.TNumber;
                    cacheRead: Type.TNumber;
                    cacheWrite: Type.TNumber;
                }>, Type.TObject<{
                    inputTokensAbove: Type.TNumber;
                }>]>>>;
            }>]>>;
            contextWindow: Type.TOptional<Type.TNumber>;
            contextWindowOptions: Type.TOptional<Type.TArray<Type.TNumber>>;
            maxTokens: Type.TOptional<Type.TNumber>;
            headers: Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
            compat: Type.TOptional<Type.TUnion<[Type.TObject<{
                supportsStore: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsReasoningEffort: Type.TOptional<Type.TBoolean>;
                supportsUsageInStreaming: Type.TOptional<Type.TBoolean>;
                maxTokensField: Type.TOptional<Type.TUnion<[Type.TLiteral<"max_completion_tokens">, Type.TLiteral<"max_tokens">]>>;
                requiresToolResultName: Type.TOptional<Type.TBoolean>;
                requiresAssistantAfterToolResult: Type.TOptional<Type.TBoolean>;
                requiresThinkingAsText: Type.TOptional<Type.TBoolean>;
                requiresReasoningContentOnAssistantMessages: Type.TOptional<Type.TBoolean>;
                thinkingFormat: Type.TOptional<Type.TUnion<[Type.TLiteral<"openai">, 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.TRecord<"^.*$", Type.TUnion<[Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull]>, Type.TObject<{
                    $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>;
                    omitWhenOff: Type.TOptional<Type.TBoolean>;
                }>]>>>;
                cacheControlFormat: Type.TOptional<Type.TLiteral<"anthropic">>;
                openRouterRouting: Type.TOptional<Type.TObject<{
                    allow_fallbacks: Type.TOptional<Type.TBoolean>;
                    require_parameters: Type.TOptional<Type.TBoolean>;
                    data_collection: Type.TOptional<Type.TUnion<[Type.TLiteral<"deny">, Type.TLiteral<"allow">]>>;
                    zdr: Type.TOptional<Type.TBoolean>;
                    enforce_distillable_text: Type.TOptional<Type.TBoolean>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    ignore: Type.TOptional<Type.TArray<Type.TString>>;
                    quantizations: Type.TOptional<Type.TArray<Type.TString>>;
                    sort: Type.TOptional<Type.TUnion<[Type.TString, Type.TObject<{
                        by: Type.TOptional<Type.TString>;
                        partition: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                    }>]>>;
                    max_price: Type.TOptional<Type.TObject<{
                        prompt: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        completion: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        image: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        audio: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        request: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    }>>;
                    preferred_min_throughput: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                    preferred_max_latency: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                }>>;
                vercelGatewayRouting: Type.TOptional<Type.TObject<{
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                }>>;
                supportsStrictMode: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                sendSessionIdHeader: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                supportsEagerToolInputStreaming: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
                sendSessionAffinityHeaders: Type.TOptional<Type.TBoolean>;
                supportsCacheControlOnTools: Type.TOptional<Type.TBoolean>;
                forceAdaptiveThinking: Type.TOptional<Type.TBoolean>;
            }>]>>;
        }>>>;
        modelOverrides: Type.TOptional<Type.TRecord<"^.*$", Type.TObject<{
            name: Type.TOptional<Type.TString>;
            reasoning: Type.TOptional<Type.TBoolean>;
            thinkingLevelMap: Type.TOptional<Type.TObject<{
                off: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                minimal: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                low: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                medium: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                high: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                xhigh: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                max: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
            }>>;
            input: Type.TOptional<Type.TArray<Type.TUnion<[Type.TLiteral<"text">, Type.TLiteral<"image">]>>>;
            cost: Type.TOptional<Type.TObject<{
                input: Type.TOptional<Type.TNumber>;
                output: Type.TOptional<Type.TNumber>;
                cacheRead: Type.TOptional<Type.TNumber>;
                cacheWrite: Type.TOptional<Type.TNumber>;
                tiers: Type.TOptional<Type.TArray<Type.TIntersect<[Type.TObject<{
                    input: Type.TNumber;
                    output: Type.TNumber;
                    cacheRead: Type.TNumber;
                    cacheWrite: Type.TNumber;
                }>, Type.TObject<{
                    inputTokensAbove: Type.TNumber;
                }>]>>>;
            }>>;
            contextWindow: Type.TOptional<Type.TNumber>;
            contextWindowOptions: Type.TOptional<Type.TArray<Type.TNumber>>;
            maxTokens: Type.TOptional<Type.TNumber>;
            headers: Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
            compat: Type.TOptional<Type.TUnion<[Type.TObject<{
                supportsStore: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsReasoningEffort: Type.TOptional<Type.TBoolean>;
                supportsUsageInStreaming: Type.TOptional<Type.TBoolean>;
                maxTokensField: Type.TOptional<Type.TUnion<[Type.TLiteral<"max_completion_tokens">, Type.TLiteral<"max_tokens">]>>;
                requiresToolResultName: Type.TOptional<Type.TBoolean>;
                requiresAssistantAfterToolResult: Type.TOptional<Type.TBoolean>;
                requiresThinkingAsText: Type.TOptional<Type.TBoolean>;
                requiresReasoningContentOnAssistantMessages: Type.TOptional<Type.TBoolean>;
                thinkingFormat: Type.TOptional<Type.TUnion<[Type.TLiteral<"openai">, 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.TRecord<"^.*$", Type.TUnion<[Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull]>, Type.TObject<{
                    $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>;
                    omitWhenOff: Type.TOptional<Type.TBoolean>;
                }>]>>>;
                cacheControlFormat: Type.TOptional<Type.TLiteral<"anthropic">>;
                openRouterRouting: Type.TOptional<Type.TObject<{
                    allow_fallbacks: Type.TOptional<Type.TBoolean>;
                    require_parameters: Type.TOptional<Type.TBoolean>;
                    data_collection: Type.TOptional<Type.TUnion<[Type.TLiteral<"deny">, Type.TLiteral<"allow">]>>;
                    zdr: Type.TOptional<Type.TBoolean>;
                    enforce_distillable_text: Type.TOptional<Type.TBoolean>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    ignore: Type.TOptional<Type.TArray<Type.TString>>;
                    quantizations: Type.TOptional<Type.TArray<Type.TString>>;
                    sort: Type.TOptional<Type.TUnion<[Type.TString, Type.TObject<{
                        by: Type.TOptional<Type.TString>;
                        partition: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                    }>]>>;
                    max_price: Type.TOptional<Type.TObject<{
                        prompt: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        completion: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        image: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        audio: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        request: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    }>>;
                    preferred_min_throughput: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                    preferred_max_latency: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                }>>;
                vercelGatewayRouting: Type.TOptional<Type.TObject<{
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                }>>;
                supportsStrictMode: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                sendSessionIdHeader: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                supportsEagerToolInputStreaming: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
                sendSessionAffinityHeaders: Type.TOptional<Type.TBoolean>;
                supportsCacheControlOnTools: Type.TOptional<Type.TBoolean>;
                forceAdaptiveThinking: Type.TOptional<Type.TBoolean>;
            }>]>>;
        }>>>;
    }>>;
}>;
export declare const validateModelsConfig: import("typebox/compile").Validator<{}, Type.TObject<{
    providers: Type.TRecord<"^.*$", Type.TObject<{
        name: Type.TOptional<Type.TString>;
        baseUrl: Type.TOptional<Type.TString>;
        apiKey: Type.TOptional<Type.TString>;
        api: Type.TOptional<Type.TString>;
        headers: Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
        compat: Type.TOptional<Type.TUnion<[Type.TObject<{
            supportsStore: Type.TOptional<Type.TBoolean>;
            supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
            supportsReasoningEffort: Type.TOptional<Type.TBoolean>;
            supportsUsageInStreaming: Type.TOptional<Type.TBoolean>;
            maxTokensField: Type.TOptional<Type.TUnion<[Type.TLiteral<"max_completion_tokens">, Type.TLiteral<"max_tokens">]>>;
            requiresToolResultName: Type.TOptional<Type.TBoolean>;
            requiresAssistantAfterToolResult: Type.TOptional<Type.TBoolean>;
            requiresThinkingAsText: Type.TOptional<Type.TBoolean>;
            requiresReasoningContentOnAssistantMessages: Type.TOptional<Type.TBoolean>;
            thinkingFormat: Type.TOptional<Type.TUnion<[Type.TLiteral<"openai">, 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.TRecord<"^.*$", Type.TUnion<[Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull]>, Type.TObject<{
                $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>;
                omitWhenOff: Type.TOptional<Type.TBoolean>;
            }>]>>>;
            cacheControlFormat: Type.TOptional<Type.TLiteral<"anthropic">>;
            openRouterRouting: Type.TOptional<Type.TObject<{
                allow_fallbacks: Type.TOptional<Type.TBoolean>;
                require_parameters: Type.TOptional<Type.TBoolean>;
                data_collection: Type.TOptional<Type.TUnion<[Type.TLiteral<"deny">, Type.TLiteral<"allow">]>>;
                zdr: Type.TOptional<Type.TBoolean>;
                enforce_distillable_text: Type.TOptional<Type.TBoolean>;
                order: Type.TOptional<Type.TArray<Type.TString>>;
                only: Type.TOptional<Type.TArray<Type.TString>>;
                ignore: Type.TOptional<Type.TArray<Type.TString>>;
                quantizations: Type.TOptional<Type.TArray<Type.TString>>;
                sort: Type.TOptional<Type.TUnion<[Type.TString, Type.TObject<{
                    by: Type.TOptional<Type.TString>;
                    partition: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                }>]>>;
                max_price: Type.TOptional<Type.TObject<{
                    prompt: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    completion: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    image: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    audio: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    request: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                }>>;
                preferred_min_throughput: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                    p50: Type.TOptional<Type.TNumber>;
                    p75: Type.TOptional<Type.TNumber>;
                    p90: Type.TOptional<Type.TNumber>;
                    p99: Type.TOptional<Type.TNumber>;
                }>]>>;
                preferred_max_latency: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                    p50: Type.TOptional<Type.TNumber>;
                    p75: Type.TOptional<Type.TNumber>;
                    p90: Type.TOptional<Type.TNumber>;
                    p99: Type.TOptional<Type.TNumber>;
                }>]>>;
            }>>;
            vercelGatewayRouting: Type.TOptional<Type.TObject<{
                only: Type.TOptional<Type.TArray<Type.TString>>;
                order: Type.TOptional<Type.TArray<Type.TString>>;
            }>>;
            supportsStrictMode: Type.TOptional<Type.TBoolean>;
            supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
        }>, Type.TObject<{
            sendSessionIdHeader: Type.TOptional<Type.TBoolean>;
            supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
            supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
        }>, Type.TObject<{
            supportsEagerToolInputStreaming: Type.TOptional<Type.TBoolean>;
            supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            sendSessionAffinityHeaders: Type.TOptional<Type.TBoolean>;
            supportsCacheControlOnTools: Type.TOptional<Type.TBoolean>;
            forceAdaptiveThinking: Type.TOptional<Type.TBoolean>;
        }>]>>;
        authHeader: Type.TOptional<Type.TBoolean>;
        models: Type.TOptional<Type.TArray<Type.TObject<{
            id: Type.TString;
            name: Type.TOptional<Type.TString>;
            api: Type.TOptional<Type.TString>;
            baseUrl: Type.TOptional<Type.TString>;
            reasoning: Type.TOptional<Type.TBoolean>;
            thinkingLevelMap: Type.TOptional<Type.TObject<{
                off: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                minimal: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                low: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                medium: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                high: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                xhigh: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                max: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
            }>>;
            input: Type.TOptional<Type.TArray<Type.TUnion<[Type.TLiteral<"text">, Type.TLiteral<"image">]>>>;
            cost: Type.TOptional<Type.TIntersect<[Type.TObject<{
                input: Type.TNumber;
                output: Type.TNumber;
                cacheRead: Type.TNumber;
                cacheWrite: Type.TNumber;
            }>, Type.TObject<{
                tiers: Type.TOptional<Type.TArray<Type.TIntersect<[Type.TObject<{
                    input: Type.TNumber;
                    output: Type.TNumber;
                    cacheRead: Type.TNumber;
                    cacheWrite: Type.TNumber;
                }>, Type.TObject<{
                    inputTokensAbove: Type.TNumber;
                }>]>>>;
            }>]>>;
            contextWindow: Type.TOptional<Type.TNumber>;
            contextWindowOptions: Type.TOptional<Type.TArray<Type.TNumber>>;
            maxTokens: Type.TOptional<Type.TNumber>;
            headers: Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
            compat: Type.TOptional<Type.TUnion<[Type.TObject<{
                supportsStore: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsReasoningEffort: Type.TOptional<Type.TBoolean>;
                supportsUsageInStreaming: Type.TOptional<Type.TBoolean>;
                maxTokensField: Type.TOptional<Type.TUnion<[Type.TLiteral<"max_completion_tokens">, Type.TLiteral<"max_tokens">]>>;
                requiresToolResultName: Type.TOptional<Type.TBoolean>;
                requiresAssistantAfterToolResult: Type.TOptional<Type.TBoolean>;
                requiresThinkingAsText: Type.TOptional<Type.TBoolean>;
                requiresReasoningContentOnAssistantMessages: Type.TOptional<Type.TBoolean>;
                thinkingFormat: Type.TOptional<Type.TUnion<[Type.TLiteral<"openai">, 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.TRecord<"^.*$", Type.TUnion<[Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull]>, Type.TObject<{
                    $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>;
                    omitWhenOff: Type.TOptional<Type.TBoolean>;
                }>]>>>;
                cacheControlFormat: Type.TOptional<Type.TLiteral<"anthropic">>;
                openRouterRouting: Type.TOptional<Type.TObject<{
                    allow_fallbacks: Type.TOptional<Type.TBoolean>;
                    require_parameters: Type.TOptional<Type.TBoolean>;
                    data_collection: Type.TOptional<Type.TUnion<[Type.TLiteral<"deny">, Type.TLiteral<"allow">]>>;
                    zdr: Type.TOptional<Type.TBoolean>;
                    enforce_distillable_text: Type.TOptional<Type.TBoolean>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    ignore: Type.TOptional<Type.TArray<Type.TString>>;
                    quantizations: Type.TOptional<Type.TArray<Type.TString>>;
                    sort: Type.TOptional<Type.TUnion<[Type.TString, Type.TObject<{
                        by: Type.TOptional<Type.TString>;
                        partition: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                    }>]>>;
                    max_price: Type.TOptional<Type.TObject<{
                        prompt: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        completion: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        image: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        audio: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        request: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    }>>;
                    preferred_min_throughput: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                    preferred_max_latency: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                }>>;
                vercelGatewayRouting: Type.TOptional<Type.TObject<{
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                }>>;
                supportsStrictMode: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                sendSessionIdHeader: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                supportsEagerToolInputStreaming: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
                sendSessionAffinityHeaders: Type.TOptional<Type.TBoolean>;
                supportsCacheControlOnTools: Type.TOptional<Type.TBoolean>;
                forceAdaptiveThinking: Type.TOptional<Type.TBoolean>;
            }>]>>;
        }>>>;
        modelOverrides: Type.TOptional<Type.TRecord<"^.*$", Type.TObject<{
            name: Type.TOptional<Type.TString>;
            reasoning: Type.TOptional<Type.TBoolean>;
            thinkingLevelMap: Type.TOptional<Type.TObject<{
                off: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                minimal: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                low: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                medium: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                high: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                xhigh: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                max: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
            }>>;
            input: Type.TOptional<Type.TArray<Type.TUnion<[Type.TLiteral<"text">, Type.TLiteral<"image">]>>>;
            cost: Type.TOptional<Type.TObject<{
                input: Type.TOptional<Type.TNumber>;
                output: Type.TOptional<Type.TNumber>;
                cacheRead: Type.TOptional<Type.TNumber>;
                cacheWrite: Type.TOptional<Type.TNumber>;
                tiers: Type.TOptional<Type.TArray<Type.TIntersect<[Type.TObject<{
                    input: Type.TNumber;
                    output: Type.TNumber;
                    cacheRead: Type.TNumber;
                    cacheWrite: Type.TNumber;
                }>, Type.TObject<{
                    inputTokensAbove: Type.TNumber;
                }>]>>>;
            }>>;
            contextWindow: Type.TOptional<Type.TNumber>;
            contextWindowOptions: Type.TOptional<Type.TArray<Type.TNumber>>;
            maxTokens: Type.TOptional<Type.TNumber>;
            headers: Type.TOptional<Type.TRecord<"^.*$", Type.TString>>;
            compat: Type.TOptional<Type.TUnion<[Type.TObject<{
                supportsStore: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsReasoningEffort: Type.TOptional<Type.TBoolean>;
                supportsUsageInStreaming: Type.TOptional<Type.TBoolean>;
                maxTokensField: Type.TOptional<Type.TUnion<[Type.TLiteral<"max_completion_tokens">, Type.TLiteral<"max_tokens">]>>;
                requiresToolResultName: Type.TOptional<Type.TBoolean>;
                requiresAssistantAfterToolResult: Type.TOptional<Type.TBoolean>;
                requiresThinkingAsText: Type.TOptional<Type.TBoolean>;
                requiresReasoningContentOnAssistantMessages: Type.TOptional<Type.TBoolean>;
                thinkingFormat: Type.TOptional<Type.TUnion<[Type.TLiteral<"openai">, 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.TRecord<"^.*$", Type.TUnion<[Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull]>, Type.TObject<{
                    $var: Type.TUnion<[Type.TLiteral<"thinking.enabled">, Type.TLiteral<"thinking.effort">]>;
                    omitWhenOff: Type.TOptional<Type.TBoolean>;
                }>]>>>;
                cacheControlFormat: Type.TOptional<Type.TLiteral<"anthropic">>;
                openRouterRouting: Type.TOptional<Type.TObject<{
                    allow_fallbacks: Type.TOptional<Type.TBoolean>;
                    require_parameters: Type.TOptional<Type.TBoolean>;
                    data_collection: Type.TOptional<Type.TUnion<[Type.TLiteral<"deny">, Type.TLiteral<"allow">]>>;
                    zdr: Type.TOptional<Type.TBoolean>;
                    enforce_distillable_text: Type.TOptional<Type.TBoolean>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    ignore: Type.TOptional<Type.TArray<Type.TString>>;
                    quantizations: Type.TOptional<Type.TArray<Type.TString>>;
                    sort: Type.TOptional<Type.TUnion<[Type.TString, Type.TObject<{
                        by: Type.TOptional<Type.TString>;
                        partition: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
                    }>]>>;
                    max_price: Type.TOptional<Type.TObject<{
                        prompt: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        completion: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        image: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        audio: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                        request: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TString]>>;
                    }>>;
                    preferred_min_throughput: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                    preferred_max_latency: Type.TOptional<Type.TUnion<[Type.TNumber, Type.TObject<{
                        p50: Type.TOptional<Type.TNumber>;
                        p75: Type.TOptional<Type.TNumber>;
                        p90: Type.TOptional<Type.TNumber>;
                        p99: Type.TOptional<Type.TNumber>;
                    }>]>>;
                }>>;
                vercelGatewayRouting: Type.TOptional<Type.TObject<{
                    only: Type.TOptional<Type.TArray<Type.TString>>;
                    order: Type.TOptional<Type.TArray<Type.TString>>;
                }>>;
                supportsStrictMode: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                sendSessionIdHeader: Type.TOptional<Type.TBoolean>;
                supportsDeveloperRole: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
            }>, Type.TObject<{
                supportsEagerToolInputStreaming: Type.TOptional<Type.TBoolean>;
                supportsLongCacheRetention: Type.TOptional<Type.TBoolean>;
                sendSessionAffinityHeaders: Type.TOptional<Type.TBoolean>;
                supportsCacheControlOnTools: Type.TOptional<Type.TBoolean>;
                forceAdaptiveThinking: Type.TOptional<Type.TBoolean>;
            }>]>>;
        }>>>;
    }>>;
}>, {
    providers: Record<string, {
        name?: string | undefined;
        baseUrl?: string | undefined;
        apiKey?: string | undefined;
        api?: string | undefined;
        headers?: Record<string, string> | undefined;
        compat?: {
            supportsStore?: boolean | undefined;
            supportsDeveloperRole?: boolean | undefined;
            supportsReasoningEffort?: boolean | undefined;
            supportsUsageInStreaming?: boolean | undefined;
            maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
            requiresToolResultName?: boolean | undefined;
            requiresAssistantAfterToolResult?: boolean | undefined;
            requiresThinkingAsText?: boolean | undefined;
            requiresReasoningContentOnAssistantMessages?: boolean | undefined;
            thinkingFormat?: "ant-ling" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
            chatTemplateKwargs?: Record<string, string | number | boolean | {
                $var: "thinking.effort" | "thinking.enabled";
                omitWhenOff?: boolean | undefined;
            } | null> | undefined;
            cacheControlFormat?: "anthropic" | undefined;
            openRouterRouting?: {
                allow_fallbacks?: boolean | undefined;
                require_parameters?: boolean | undefined;
                data_collection?: "allow" | "deny" | undefined;
                zdr?: boolean | undefined;
                enforce_distillable_text?: boolean | undefined;
                order?: string[] | undefined;
                only?: string[] | undefined;
                ignore?: string[] | undefined;
                quantizations?: string[] | undefined;
                sort?: string | {
                    by?: string | undefined;
                    partition?: string | null | undefined;
                } | undefined;
                max_price?: {
                    prompt?: string | number | undefined;
                    completion?: string | number | undefined;
                    image?: string | number | undefined;
                    audio?: string | number | undefined;
                    request?: string | number | undefined;
                } | undefined;
                preferred_min_throughput?: number | {
                    p50?: number | undefined;
                    p75?: number | undefined;
                    p90?: number | undefined;
                    p99?: number | undefined;
                } | undefined;
                preferred_max_latency?: number | {
                    p50?: number | undefined;
                    p75?: number | undefined;
                    p90?: number | undefined;
                    p99?: number | undefined;
                } | undefined;
            } | undefined;
            vercelGatewayRouting?: {
                only?: string[] | undefined;
                order?: string[] | undefined;
            } | undefined;
            supportsStrictMode?: boolean | undefined;
            supportsLongCacheRetention?: boolean | undefined;
        } | {
            sendSessionIdHeader?: boolean | undefined;
            supportsDeveloperRole?: boolean | undefined;
            supportsLongCacheRetention?: boolean | undefined;
        } | {
            supportsEagerToolInputStreaming?: boolean | undefined;
            supportsLongCacheRetention?: boolean | undefined;
            sendSessionAffinityHeaders?: boolean | undefined;
            supportsCacheControlOnTools?: boolean | undefined;
            forceAdaptiveThinking?: boolean | undefined;
        } | undefined;
        authHeader?: boolean | undefined;
        models?: {
            id: string;
            name?: string | undefined;
            api?: string | undefined;
            baseUrl?: string | undefined;
            reasoning?: boolean | undefined;
            thinkingLevelMap?: {
                off?: string | null | undefined;
                minimal?: string | null | undefined;
                low?: string | null | undefined;
                medium?: string | null | undefined;
                high?: string | null | undefined;
                xhigh?: string | null | undefined;
                max?: string | null | undefined;
            } | undefined;
            input?: ("image" | "text")[] | undefined;
            cost?: ({
                input: number;
                output: number;
                cacheRead: number;
                cacheWrite: number;
            } & {
                tiers?: ({
                    input: number;
                    output: number;
                    cacheRead: number;
                    cacheWrite: number;
                } & {
                    inputTokensAbove: number;
                })[] | undefined;
            }) | undefined;
            contextWindow?: number | undefined;
            contextWindowOptions?: number[] | undefined;
            maxTokens?: number | undefined;
            headers?: Record<string, string> | undefined;
            compat?: {
                supportsStore?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsReasoningEffort?: boolean | undefined;
                supportsUsageInStreaming?: boolean | undefined;
                maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
                requiresToolResultName?: boolean | undefined;
                requiresAssistantAfterToolResult?: boolean | undefined;
                requiresThinkingAsText?: boolean | undefined;
                requiresReasoningContentOnAssistantMessages?: boolean | undefined;
                thinkingFormat?: "ant-ling" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
                chatTemplateKwargs?: Record<string, string | number | boolean | {
                    $var: "thinking.effort" | "thinking.enabled";
                    omitWhenOff?: boolean | undefined;
                } | null> | undefined;
                cacheControlFormat?: "anthropic" | undefined;
                openRouterRouting?: {
                    allow_fallbacks?: boolean | undefined;
                    require_parameters?: boolean | undefined;
                    data_collection?: "allow" | "deny" | undefined;
                    zdr?: boolean | undefined;
                    enforce_distillable_text?: boolean | undefined;
                    order?: string[] | undefined;
                    only?: string[] | undefined;
                    ignore?: string[] | undefined;
                    quantizations?: string[] | undefined;
                    sort?: string | {
                        by?: string | undefined;
                        partition?: string | null | undefined;
                    } | undefined;
                    max_price?: {
                        prompt?: string | number | undefined;
                        completion?: string | number | undefined;
                        image?: string | number | undefined;
                        audio?: string | number | undefined;
                        request?: string | number | undefined;
                    } | undefined;
                    preferred_min_throughput?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                    preferred_max_latency?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                } | undefined;
                vercelGatewayRouting?: {
                    only?: string[] | undefined;
                    order?: string[] | undefined;
                } | undefined;
                supportsStrictMode?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                sendSessionIdHeader?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                supportsEagerToolInputStreaming?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
                sendSessionAffinityHeaders?: boolean | undefined;
                supportsCacheControlOnTools?: boolean | undefined;
                forceAdaptiveThinking?: boolean | undefined;
            } | undefined;
        }[] | undefined;
        modelOverrides?: Record<string, {
            name?: string | undefined;
            reasoning?: boolean | undefined;
            thinkingLevelMap?: {
                off?: string | null | undefined;
                minimal?: string | null | undefined;
                low?: string | null | undefined;
                medium?: string | null | undefined;
                high?: string | null | undefined;
                xhigh?: string | null | undefined;
                max?: string | null | undefined;
            } | undefined;
            input?: ("image" | "text")[] | undefined;
            cost?: {
                input?: number | undefined;
                output?: number | undefined;
                cacheRead?: number | undefined;
                cacheWrite?: number | undefined;
                tiers?: ({
                    input: number;
                    output: number;
                    cacheRead: number;
                    cacheWrite: number;
                } & {
                    inputTokensAbove: number;
                })[] | undefined;
            } | undefined;
            contextWindow?: number | undefined;
            contextWindowOptions?: number[] | undefined;
            maxTokens?: number | undefined;
            headers?: Record<string, string> | undefined;
            compat?: {
                supportsStore?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsReasoningEffort?: boolean | undefined;
                supportsUsageInStreaming?: boolean | undefined;
                maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
                requiresToolResultName?: boolean | undefined;
                requiresAssistantAfterToolResult?: boolean | undefined;
                requiresThinkingAsText?: boolean | undefined;
                requiresReasoningContentOnAssistantMessages?: boolean | undefined;
                thinkingFormat?: "ant-ling" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
                chatTemplateKwargs?: Record<string, string | number | boolean | {
                    $var: "thinking.effort" | "thinking.enabled";
                    omitWhenOff?: boolean | undefined;
                } | null> | undefined;
                cacheControlFormat?: "anthropic" | undefined;
                openRouterRouting?: {
                    allow_fallbacks?: boolean | undefined;
                    require_parameters?: boolean | undefined;
                    data_collection?: "allow" | "deny" | undefined;
                    zdr?: boolean | undefined;
                    enforce_distillable_text?: boolean | undefined;
                    order?: string[] | undefined;
                    only?: string[] | undefined;
                    ignore?: string[] | undefined;
                    quantizations?: string[] | undefined;
                    sort?: string | {
                        by?: string | undefined;
                        partition?: string | null | undefined;
                    } | undefined;
                    max_price?: {
                        prompt?: string | number | undefined;
                        completion?: string | number | undefined;
                        image?: string | number | undefined;
                        audio?: string | number | undefined;
                        request?: string | number | undefined;
                    } | undefined;
                    preferred_min_throughput?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                    preferred_max_latency?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                } | undefined;
                vercelGatewayRouting?: {
                    only?: string[] | undefined;
                    order?: string[] | undefined;
                } | undefined;
                supportsStrictMode?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                sendSessionIdHeader?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                supportsEagerToolInputStreaming?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
                sendSessionAffinityHeaders?: boolean | undefined;
                supportsCacheControlOnTools?: boolean | undefined;
                forceAdaptiveThinking?: boolean | undefined;
            } | undefined;
        }> | undefined;
    }>;
}, {
    providers: Record<string, {
        name?: string | undefined;
        baseUrl?: string | undefined;
        apiKey?: string | undefined;
        api?: string | undefined;
        headers?: Record<string, string> | undefined;
        compat?: {
            supportsStore?: boolean | undefined;
            supportsDeveloperRole?: boolean | undefined;
            supportsReasoningEffort?: boolean | undefined;
            supportsUsageInStreaming?: boolean | undefined;
            maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
            requiresToolResultName?: boolean | undefined;
            requiresAssistantAfterToolResult?: boolean | undefined;
            requiresThinkingAsText?: boolean | undefined;
            requiresReasoningContentOnAssistantMessages?: boolean | undefined;
            thinkingFormat?: "ant-ling" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
            chatTemplateKwargs?: Record<string, string | number | boolean | {
                $var: "thinking.effort" | "thinking.enabled";
                omitWhenOff?: boolean | undefined;
            } | null> | undefined;
            cacheControlFormat?: "anthropic" | undefined;
            openRouterRouting?: {
                allow_fallbacks?: boolean | undefined;
                require_parameters?: boolean | undefined;
                data_collection?: "allow" | "deny" | undefined;
                zdr?: boolean | undefined;
                enforce_distillable_text?: boolean | undefined;
                order?: string[] | undefined;
                only?: string[] | undefined;
                ignore?: string[] | undefined;
                quantizations?: string[] | undefined;
                sort?: string | {
                    by?: string | undefined;
                    partition?: string | null | undefined;
                } | undefined;
                max_price?: {
                    prompt?: string | number | undefined;
                    completion?: string | number | undefined;
                    image?: string | number | undefined;
                    audio?: string | number | undefined;
                    request?: string | number | undefined;
                } | undefined;
                preferred_min_throughput?: number | {
                    p50?: number | undefined;
                    p75?: number | undefined;
                    p90?: number | undefined;
                    p99?: number | undefined;
                } | undefined;
                preferred_max_latency?: number | {
                    p50?: number | undefined;
                    p75?: number | undefined;
                    p90?: number | undefined;
                    p99?: number | undefined;
                } | undefined;
            } | undefined;
            vercelGatewayRouting?: {
                only?: string[] | undefined;
                order?: string[] | undefined;
            } | undefined;
            supportsStrictMode?: boolean | undefined;
            supportsLongCacheRetention?: boolean | undefined;
        } | {
            sendSessionIdHeader?: boolean | undefined;
            supportsDeveloperRole?: boolean | undefined;
            supportsLongCacheRetention?: boolean | undefined;
        } | {
            supportsEagerToolInputStreaming?: boolean | undefined;
            supportsLongCacheRetention?: boolean | undefined;
            sendSessionAffinityHeaders?: boolean | undefined;
            supportsCacheControlOnTools?: boolean | undefined;
            forceAdaptiveThinking?: boolean | undefined;
        } | undefined;
        authHeader?: boolean | undefined;
        models?: {
            id: string;
            name?: string | undefined;
            api?: string | undefined;
            baseUrl?: string | undefined;
            reasoning?: boolean | undefined;
            thinkingLevelMap?: {
                off?: string | null | undefined;
                minimal?: string | null | undefined;
                low?: string | null | undefined;
                medium?: string | null | undefined;
                high?: string | null | undefined;
                xhigh?: string | null | undefined;
                max?: string | null | undefined;
            } | undefined;
            input?: ("image" | "text")[] | undefined;
            cost?: ({
                input: number;
                output: number;
                cacheRead: number;
                cacheWrite: number;
            } & {
                tiers?: ({
                    input: number;
                    output: number;
                    cacheRead: number;
                    cacheWrite: number;
                } & {
                    inputTokensAbove: number;
                })[] | undefined;
            }) | undefined;
            contextWindow?: number | undefined;
            contextWindowOptions?: number[] | undefined;
            maxTokens?: number | undefined;
            headers?: Record<string, string> | undefined;
            compat?: {
                supportsStore?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsReasoningEffort?: boolean | undefined;
                supportsUsageInStreaming?: boolean | undefined;
                maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
                requiresToolResultName?: boolean | undefined;
                requiresAssistantAfterToolResult?: boolean | undefined;
                requiresThinkingAsText?: boolean | undefined;
                requiresReasoningContentOnAssistantMessages?: boolean | undefined;
                thinkingFormat?: "ant-ling" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
                chatTemplateKwargs?: Record<string, string | number | boolean | {
                    $var: "thinking.effort" | "thinking.enabled";
                    omitWhenOff?: boolean | undefined;
                } | null> | undefined;
                cacheControlFormat?: "anthropic" | undefined;
                openRouterRouting?: {
                    allow_fallbacks?: boolean | undefined;
                    require_parameters?: boolean | undefined;
                    data_collection?: "allow" | "deny" | undefined;
                    zdr?: boolean | undefined;
                    enforce_distillable_text?: boolean | undefined;
                    order?: string[] | undefined;
                    only?: string[] | undefined;
                    ignore?: string[] | undefined;
                    quantizations?: string[] | undefined;
                    sort?: string | {
                        by?: string | undefined;
                        partition?: string | null | undefined;
                    } | undefined;
                    max_price?: {
                        prompt?: string | number | undefined;
                        completion?: string | number | undefined;
                        image?: string | number | undefined;
                        audio?: string | number | undefined;
                        request?: string | number | undefined;
                    } | undefined;
                    preferred_min_throughput?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                    preferred_max_latency?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                } | undefined;
                vercelGatewayRouting?: {
                    only?: string[] | undefined;
                    order?: string[] | undefined;
                } | undefined;
                supportsStrictMode?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                sendSessionIdHeader?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                supportsEagerToolInputStreaming?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
                sendSessionAffinityHeaders?: boolean | undefined;
                supportsCacheControlOnTools?: boolean | undefined;
                forceAdaptiveThinking?: boolean | undefined;
            } | undefined;
        }[] | undefined;
        modelOverrides?: Record<string, {
            name?: string | undefined;
            reasoning?: boolean | undefined;
            thinkingLevelMap?: {
                off?: string | null | undefined;
                minimal?: string | null | undefined;
                low?: string | null | undefined;
                medium?: string | null | undefined;
                high?: string | null | undefined;
                xhigh?: string | null | undefined;
                max?: string | null | undefined;
            } | undefined;
            input?: ("image" | "text")[] | undefined;
            cost?: {
                input?: number | undefined;
                output?: number | undefined;
                cacheRead?: number | undefined;
                cacheWrite?: number | undefined;
                tiers?: ({
                    input: number;
                    output: number;
                    cacheRead: number;
                    cacheWrite: number;
                } & {
                    inputTokensAbove: number;
                })[] | undefined;
            } | undefined;
            contextWindow?: number | undefined;
            contextWindowOptions?: number[] | undefined;
            maxTokens?: number | undefined;
            headers?: Record<string, string> | undefined;
            compat?: {
                supportsStore?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsReasoningEffort?: boolean | undefined;
                supportsUsageInStreaming?: boolean | undefined;
                maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
                requiresToolResultName?: boolean | undefined;
                requiresAssistantAfterToolResult?: boolean | undefined;
                requiresThinkingAsText?: boolean | undefined;
                requiresReasoningContentOnAssistantMessages?: boolean | undefined;
                thinkingFormat?: "ant-ling" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
                chatTemplateKwargs?: Record<string, string | number | boolean | {
                    $var: "thinking.effort" | "thinking.enabled";
                    omitWhenOff?: boolean | undefined;
                } | null> | undefined;
                cacheControlFormat?: "anthropic" | undefined;
                openRouterRouting?: {
                    allow_fallbacks?: boolean | undefined;
                    require_parameters?: boolean | undefined;
                    data_collection?: "allow" | "deny" | undefined;
                    zdr?: boolean | undefined;
                    enforce_distillable_text?: boolean | undefined;
                    order?: string[] | undefined;
                    only?: string[] | undefined;
                    ignore?: string[] | undefined;
                    quantizations?: string[] | undefined;
                    sort?: string | {
                        by?: string | undefined;
                        partition?: string | null | undefined;
                    } | undefined;
                    max_price?: {
                        prompt?: string | number | undefined;
                        completion?: string | number | undefined;
                        image?: string | number | undefined;
                        audio?: string | number | undefined;
                        request?: string | number | undefined;
                    } | undefined;
                    preferred_min_throughput?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                    preferred_max_latency?: number | {
                        p50?: number | undefined;
                        p75?: number | undefined;
                        p90?: number | undefined;
                        p99?: number | undefined;
                    } | undefined;
                } | undefined;
                vercelGatewayRouting?: {
                    only?: string[] | undefined;
                    order?: string[] | undefined;
                } | undefined;
                supportsStrictMode?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                sendSessionIdHeader?: boolean | undefined;
                supportsDeveloperRole?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
            } | {
                supportsEagerToolInputStreaming?: boolean | undefined;
                supportsLongCacheRetention?: boolean | undefined;
                sendSessionAffinityHeaders?: boolean | undefined;
                supportsCacheControlOnTools?: boolean | undefined;
                forceAdaptiveThinking?: boolean | undefined;
            } | undefined;
        }> | undefined;
    }>;
}>;
export type ModelsConfig = Static<typeof ModelsConfigSchema>;
export declare function formatValidationPath(error: TLocalizedValidationError): string;
export declare function stripJsonComments(input: string): string;
export {};
//# sourceMappingURL=model-registry-schemas.d.ts.map