import { z } from "zod";
export declare const CONFIG_VERSION: "config/v1";
declare const uiJourneyDeclarationSchema: z.ZodObject<{
    id: z.ZodString;
    status: z.ZodEnum<{
        inferred: "inferred";
        confirmed: "confirmed";
    }>;
    appliesTo: z.ZodObject<{
        routes: z.ZodArray<z.ZodString>;
        roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
        viewports: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strict>;
    adapter: z.ZodObject<{
        module: z.ZodString;
        export: z.ZodString;
    }, z.core.$strict>;
}, z.core.$strict>;
declare const uiJourneysSchema: z.ZodObject<{
    schemaVersion: z.ZodLiteral<"ui.journeys/v1">;
    declarations: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        status: z.ZodEnum<{
            inferred: "inferred";
            confirmed: "confirmed";
        }>;
        appliesTo: z.ZodObject<{
            routes: z.ZodArray<z.ZodString>;
            roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
            viewports: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$strict>;
        adapter: z.ZodObject<{
            module: z.ZodString;
            export: z.ZodString;
        }, z.core.$strict>;
    }, z.core.$strict>>;
}, z.core.$strict>;
export type UiJourneyDeclaration = z.infer<typeof uiJourneyDeclarationSchema>;
export type UiJourneysConfig = z.infer<typeof uiJourneysSchema>;
export declare const invariantumConfigSchema: z.ZodObject<{
    schemaVersion: z.ZodLiteral<"config/v1">;
    seed: z.ZodOptional<z.ZodString>;
    surfaces: z.ZodArray<z.ZodObject<{
        module: z.ZodString;
        export: z.ZodString;
    }, z.core.$strict>>;
    detectors: z.ZodOptional<z.ZodObject<{
        include: z.ZodOptional<z.ZodArray<z.ZodString>>;
        exceptions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            decisionId: z.ZodString;
        }, z.core.$strict>, z.ZodObject<{
            contractId: z.ZodString;
        }, z.core.$strict>]>>>;
    }, z.core.$strict>>;
    env: z.ZodOptional<z.ZodObject<{
        allow: z.ZodArray<z.ZodString>;
    }, z.core.$strict>>;
    matrix: z.ZodOptional<z.ZodObject<{
        dimensions: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>>;
    }, z.core.$strict>>;
    ui: z.ZodOptional<z.ZodObject<{
        baseUrl: z.ZodURL;
        routes: z.ZodArray<z.ZodObject<{
            pattern: z.ZodString;
            fixtures: z.ZodOptional<z.ZodArray<z.ZodObject<{
                params: z.ZodRecord<z.ZodString, z.ZodString>;
                label: z.ZodString;
            }, z.core.$strict>>>;
        }, z.core.$strict>>;
        roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
        auth: z.ZodOptional<z.ZodObject<{
            adapters: z.ZodRecord<z.ZodString, z.ZodObject<{
                module: z.ZodString;
                export: z.ZodString;
            }, z.core.$strict>>;
        }, z.core.$strict>>;
        journeys: z.ZodOptional<z.ZodObject<{
            schemaVersion: z.ZodLiteral<"ui.journeys/v1">;
            declarations: z.ZodArray<z.ZodObject<{
                id: z.ZodString;
                status: z.ZodEnum<{
                    inferred: "inferred";
                    confirmed: "confirmed";
                }>;
                appliesTo: z.ZodObject<{
                    routes: z.ZodArray<z.ZodString>;
                    roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
                    viewports: z.ZodOptional<z.ZodArray<z.ZodString>>;
                }, z.core.$strict>;
                adapter: z.ZodObject<{
                    module: z.ZodString;
                    export: z.ZodString;
                }, z.core.$strict>;
            }, z.core.$strict>>;
        }, z.core.$strict>>;
        interactionDiscovery: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodBoolean;
        }, z.core.$strict>>;
        locales: z.ZodOptional<z.ZodArray<z.ZodString>>;
        viewports: z.ZodOptional<z.ZodArray<z.ZodObject<{
            name: z.ZodString;
            width: z.ZodNumber;
            height: z.ZodNumber;
        }, z.core.$strict>>>;
        families: z.ZodOptional<z.ZodArray<z.ZodString>>;
        timeouts: z.ZodOptional<z.ZodObject<{
            navigateMs: z.ZodNumber;
            settleMs: z.ZodNumber;
        }, z.core.$strict>>;
    }, z.core.$strict>>;
    discovery: z.ZodOptional<z.ZodObject<{
        adapters: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            module: z.ZodString;
        }, z.core.$strict>>;
    }, z.core.$strict>>;
    credentials: z.ZodOptional<z.ZodObject<{
        adapters: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            provider: z.ZodLiteral<"env">;
            reference: z.ZodString;
        }, z.core.$strict>>;
    }, z.core.$strict>>;
    network: z.ZodOptional<z.ZodObject<{
        expectations: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            url: z.ZodURL;
            method: z.ZodString;
        }, z.core.$strict>>;
    }, z.core.$strict>>;
    contracts: z.ZodOptional<z.ZodObject<{
        references: z.ZodArray<z.ZodString>;
    }, z.core.$strict>>;
    redaction: z.ZodOptional<z.ZodObject<{
        patterns: z.ZodArray<z.ZodString>;
        replacement: z.ZodString;
    }, z.core.$strict>>;
    artifacts: z.ZodOptional<z.ZodObject<{
        retention: z.ZodObject<{
            maxRuns: z.ZodNumber;
            maxAgeDays: z.ZodNumber;
        }, z.core.$strict>;
    }, z.core.$strict>>;
    concurrency: z.ZodOptional<z.ZodNumber>;
    timeouts: z.ZodOptional<z.ZodObject<{
        defaultMs: z.ZodNumber;
        phases: z.ZodRecord<z.ZodString, z.ZodNumber>;
    }, z.core.$strict>>;
    report: z.ZodOptional<z.ZodObject<{
        mode: z.ZodEnum<{
            interactive: "interactive";
            static: "static";
        }>;
        autoOpen: z.ZodBoolean;
    }, z.core.$strict>>;
    journeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
    invariants: z.ZodOptional<z.ZodArray<z.ZodString>>;
    acceptedFindings: z.ZodOptional<z.ZodObject<{
        store: z.ZodString;
    }, z.core.$strict>>;
    hook: z.ZodOptional<z.ZodObject<{
        budgetMs: z.ZodOptional<z.ZodNumber>;
        dependencyMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
    }, z.core.$strict>>;
}, z.core.$strict>;
export type InvariantumConfig = z.infer<typeof invariantumConfigSchema>;
export type ConfigErrorCode = "parse-error" | "validation-error" | "unknown-field" | "unsupported-version" | "env-reference-not-allowed" | "read-error";
export interface ConfigError {
    readonly code: ConfigErrorCode;
    readonly path: string;
    readonly message: string;
    readonly recoveryInstructions: string;
}
export type ConfigResult = {
    ok: true;
    config: InvariantumConfig;
} | {
    ok: false;
    error: ConfigError;
};
export declare function loadConfig(path: string | undefined, env: Record<string, string | undefined>): ConfigResult;
export {};
//# sourceMappingURL=config.d.ts.map