/**
 * zod validator for the single-JSON provider catalog authoring format.
 * Mirrors src/lib/types/providerCatalog.ts field-for-field with
 * z.strictObject (unknown keys are authoring mistakes) plus the
 * cross-field refinements the plain types cannot express. See
 * docs/superpowers/plans/2026-08-28-provider-json-catalog-spec.md.
 *
 * provider-catalog.schema.json is a hand-kept JSON Schema mirror for
 * editor validation only — this file is the authoritative validator.
 */
import { z } from "zod";
import type { ProviderCatalogJson } from "../../types/index.js";
export declare const providerCatalogJsonSchema: z.ZodObject<{
    $schema: z.ZodOptional<z.ZodString>;
    id: z.ZodString;
    displayName: z.ZodString;
    enumTypeName: z.ZodOptional<z.ZodString>;
    credentialsKey: z.ZodOptional<z.ZodString>;
    aliases: z.ZodArray<z.ZodString>;
    tier: z.ZodLiteral<2>;
    wire: z.ZodObject<{
        baseURL: z.ZodOptional<z.ZodString>;
        baseURLTemplate: z.ZodOptional<z.ZodString>;
        extraCredentials: z.ZodOptional<z.ZodArray<z.ZodString>>;
        missingCredentialMessage: z.ZodOptional<z.ZodString>;
        apiKeyFallbackEnvVars: z.ZodOptional<z.ZodArray<z.ZodString>>;
        envOverrides: z.ZodOptional<z.ZodObject<{
            apiKey: z.ZodOptional<z.ZodString>;
            baseURL: z.ZodOptional<z.ZodString>;
            model: z.ZodOptional<z.ZodString>;
        }, z.core.$strict>>;
    }, z.core.$strict>;
    models: z.ZodObject<{
        default: z.ZodString;
        fallbacks: z.ZodArray<z.ZodString>;
        fallbackModelName: z.ZodOptional<z.ZodString>;
        registryDefaultModel: z.ZodOptional<z.ZodString>;
        defaultContextWindow: z.ZodNumber;
        defaultMaxOutputTokens: z.ZodNumber;
        catalog: z.ZodRecord<z.ZodString, z.ZodObject<{
            contextWindow: z.ZodOptional<z.ZodNumber>;
            maxOutputTokens: z.ZodOptional<z.ZodNumber>;
            pricingPerMTok: z.ZodOptional<z.ZodObject<{
                input: z.ZodNumber;
                output: z.ZodNumber;
                cachedInput: z.ZodOptional<z.ZodNumber>;
            }, z.core.$strict>>;
            vision: z.ZodBoolean;
            status: z.ZodEnum<{
                production: "production";
                preview: "preview";
                retired: "retired";
            }>;
            description: z.ZodString;
            enumMember: z.ZodOptional<z.ZodString>;
        }, z.core.$strict>>;
        topModels: z.ZodOptional<z.ZodArray<z.ZodString>>;
        visionModel: z.ZodOptional<z.ZodString>;
        testModel: z.ZodOptional<z.ZodString>;
    }, z.core.$strict>;
    capabilities: z.ZodObject<{
        text: z.ZodBoolean;
        streaming: z.ZodBoolean;
        tools: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"model-dependent">]>;
        toolsWithStreaming: z.ZodBoolean;
        structuredOutput: z.ZodBoolean;
        structuredOutputWithTools: z.ZodBoolean;
        embeddings: z.ZodBoolean;
        thinking: z.ZodBoolean;
    }, z.core.$strict>;
    errorRules: z.ZodArray<z.ZodObject<{
        status: z.ZodOptional<z.ZodNumber>;
        pattern: z.ZodOptional<z.ZodString>;
        patternStatuses: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
        class: z.ZodEnum<{
            network: "network";
            provider: "provider";
            authentication: "authentication";
            "invalid-model": "invalid-model";
            "rate-limit": "rate-limit";
        }>;
        message: z.ZodString;
    }, z.core.$strict>>;
    quirks: z.ZodOptional<z.ZodObject<{
        timeoutErrorClass: z.ZodOptional<z.ZodLiteral<"provider">>;
        messageContentFormat: z.ZodOptional<z.ZodLiteral<"string">>;
        registryDefaultIgnoresModelEnvVar: z.ZodOptional<z.ZodBoolean>;
        responseFormatDowngrade: z.ZodOptional<z.ZodLiteral<"json-schema-to-json-object">>;
        replayReasoningContent: z.ZodOptional<z.ZodBoolean>;
        authHeaderStyle: z.ZodOptional<z.ZodLiteral<"x-api-key">>;
    }, z.core.$strict>>;
    timeouts: z.ZodOptional<z.ZodObject<{
        generateMs: z.ZodOptional<z.ZodNumber>;
        streamMs: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strict>>;
    autoSelectPriority: z.ZodOptional<z.ZodNumber>;
    setup: z.ZodObject<{
        url: z.ZodString;
        apiKeyFormat: z.ZodNullable<z.ZodString>;
        billingPolicy: z.ZodEnum<{
            "no-free-tier": "no-free-tier";
            "free-tier": "free-tier";
            "free-with-card": "free-with-card";
        }>;
        instructions: z.ZodArray<z.ZodString>;
        description: z.ZodOptional<z.ZodString>;
    }, z.core.$strict>;
    evidence: z.ZodObject<{
        rosterVerified: z.ZodObject<{
            date: z.ZodString;
            status: z.ZodOptional<z.ZodNumber>;
            code: z.ZodOptional<z.ZodString>;
            method: z.ZodOptional<z.ZodString>;
        }, z.core.$strict>;
        authProbe: z.ZodOptional<z.ZodObject<{
            date: z.ZodString;
            status: z.ZodOptional<z.ZodNumber>;
            code: z.ZodOptional<z.ZodString>;
            method: z.ZodOptional<z.ZodString>;
        }, z.core.$strict>>;
        billingProbe: z.ZodOptional<z.ZodObject<{
            date: z.ZodString;
            status: z.ZodOptional<z.ZodNumber>;
            code: z.ZodOptional<z.ZodString>;
            method: z.ZodOptional<z.ZodString>;
        }, z.core.$strict>>;
        liveMatrix: z.ZodNullable<z.ZodObject<{
            date: z.ZodString;
            result: z.ZodString;
        }, z.core.$strict>>;
        addedInPR: z.ZodString;
    }, z.core.$strict>;
}, z.core.$strict>;
export declare function parseProviderCatalogJson(raw: unknown, sourcePath: string): ProviderCatalogJson;
