/**
 * @sanity/ailf-core — Pipeline schemas
 *
 * Zod schemas for runtime validation of task YAML files and related configs.
 * These schemas are the single source of truth for what constitutes a valid
 * task definition — the TypeScript interfaces in types.ts are derived from
 * (or should match) these schemas.
 *
 * Extracted from packages/eval/src/pipeline/schemas.ts (Phase 0d).
 */
import { z } from "zod";
/**
 * Schema for a single rubric template (e.g., task-completion, code-correctness).
 *
 * The optional `dimension` field tags which scoring dimension this template
 * belongs to. When present, it propagates into assertion metadata so the
 * scoring engine can classify rubrics structurally instead of heuristically.
 * See docs/design-docs/structured-dimensions.md.
 */
export declare const RubricTemplateSchema: z.ZodObject<{
    criteria_label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    dimension: z.ZodOptional<z.ZodString>;
    failureModes: z.ZodOptional<z.ZodArray<z.ZodString>>;
    header: z.ZodString;
    scale: z.ZodArray<z.ZodString>;
}, z.core.$strip>;
/** Inferred TypeScript type for a rubric template. */
export type RubricTemplate = z.infer<typeof RubricTemplateSchema>;
/**
 * A named weight profile — maps dimension names to weights (must sum to 1.0).
 * Each profile is a self-contained scoring formula used for a specific
 * (mode, variant) pair.
 */
declare const WeightProfileSchema: z.ZodRecord<z.ZodString, z.ZodNumber>;
/** Inferred type for a single weight profile. */
export type WeightProfile = z.infer<typeof WeightProfileSchema>;
/**
 * Schema for the full config/rubrics.yaml config file.
 *
 * Each dimension is scored on a uniform 0–100 scale. Named scoring profiles
 * define how dimensions are combined into composite scores. Mode-profile
 * bindings declare which profile to use for each (mode, variant) pair.
 *
 * Supports both the new `profiles` format and the legacy flat `weights`
 * format for backward compatibility.
 *
 * @see docs/design-docs/named-scoring-profiles.md
 */
export declare const RubricConfigSchema: z.ZodObject<{
    footer: z.ZodString;
    "mode-profiles": z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>>>;
    profiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>>;
    templates: z.ZodRecord<z.ZodString, z.ZodObject<{
        criteria_label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        dimension: z.ZodOptional<z.ZodString>;
        failureModes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        header: z.ZodString;
        scale: z.ZodArray<z.ZodString>;
    }, z.core.$strip>>;
    weights: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
}, z.core.$strip>;
/** Inferred TypeScript type for the rubrics config. */
export type RubricConfig = z.infer<typeof RubricConfigSchema>;
/**
 * Schema for a single product feature in the feature registry.
 */
export declare const FeatureSchema: z.ZodObject<{
    area: z.ZodOptional<z.ZodString>;
    id: z.ZodString;
    name: z.ZodString;
    priority: z.ZodEnum<{
        low: "low";
        medium: "medium";
        high: "high";
        critical: "critical";
    }>;
    sections: z.ZodArray<z.ZodString>;
    status: z.ZodEnum<{
        covered: "covered";
        uncovered: "uncovered";
        planned: "planned";
        "out-of-scope": "out-of-scope";
    }>;
}, z.core.$strip>;
/** Inferred TypeScript type for a product feature. */
export type Feature = z.infer<typeof FeatureSchema>;
/**
 * Schema for the full config/features.yaml config file.
 */
export declare const FeatureRegistrySchema: z.ZodObject<{
    features: z.ZodArray<z.ZodObject<{
        area: z.ZodOptional<z.ZodString>;
        id: z.ZodString;
        name: z.ZodString;
        priority: z.ZodEnum<{
            low: "low";
            medium: "medium";
            high: "high";
            critical: "critical";
        }>;
        sections: z.ZodArray<z.ZodString>;
        status: z.ZodEnum<{
            covered: "covered";
            uncovered: "uncovered";
            planned: "planned";
            "out-of-scope": "out-of-scope";
        }>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/** Inferred TypeScript type for the feature registry. */
export type FeatureRegistry = z.infer<typeof FeatureRegistrySchema>;
/**
 * Templated llm-rubric assertion — references a rubric template by key
 * and provides task-specific criteria.
 */
declare const TemplatedLlmRubricAssertSchema: z.ZodObject<{
    criteria: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        text: z.ZodString;
    }, z.core.$strip>>;
    template: z.ZodString;
    type: z.ZodLiteral<"llm-rubric">;
    weight: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export type TemplatedLlmRubricAssert = z.infer<typeof TemplatedLlmRubricAssertSchema>;
/**
 * Union of all supported Promptfoo assertion types.
 *
 * llm-rubric assertions use the templated format (template + criteria).
 * Other assertion types use their standard value-based format.
 *
 * Note: we use z.union instead of z.discriminatedUnion because multiple
 * schemas share the "llm-rubric" type literal (the old value-based format
 * is gone, but union is more flexible for future additions).
 */
export declare const AssertionSchema: z.ZodUnion<readonly [z.ZodObject<{
    criteria: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        text: z.ZodString;
    }, z.core.$strip>>;
    template: z.ZodString;
    type: z.ZodLiteral<"llm-rubric">;
    weight: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"contains">;
    value: z.ZodString;
    weight: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"contains-any">;
    value: z.ZodArray<z.ZodString>;
    weight: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"not-contains">;
    value: z.ZodString;
    weight: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"javascript">;
    value: z.ZodString;
    weight: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>]>;
/** Inferred TypeScript type for a single assertion. */
export type Assertion = z.infer<typeof AssertionSchema>;
declare const CanonicalDocSchema: z.ZodUnion<readonly [z.ZodObject<{
    reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    slug: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    path: z.ZodString;
    reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
}, z.core.$strip>, z.ZodObject<{
    id: z.ZodString;
    reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
}, z.core.$strip>, z.ZodObject<{
    perspective: z.ZodString;
    reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
}, z.core.$strip>]>;
/** Inferred TypeScript type for a canonical doc entry. */
export type CanonicalDoc = z.infer<typeof CanonicalDocSchema>;
/**
 * Schema for the new single-definition task format.
 * Each task is defined once with an id field; the pipeline auto-generates
 * gold + baseline variants.
 */
export declare const SingleTaskSchema: z.ZodObject<{
    assert: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
        template: z.ZodString;
        type: z.ZodLiteral<"llm-rubric">;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains-any">;
        value: z.ZodArray<z.ZodString>;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"not-contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"javascript">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>]>>;
    baseline: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        rubric: z.ZodOptional<z.ZodEnum<{
            full: "full";
            abbreviated: "abbreviated";
            none: "none";
        }>>;
    }, z.core.$strip>>;
    canonical_docs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        slug: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        path: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>, z.ZodObject<{
        id: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>, z.ZodObject<{
        perspective: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>]>>;
    description: z.ZodString;
    doc_coverage: z.ZodOptional<z.ZodBoolean>;
    id: z.ZodString;
    reference_solution: z.ZodString;
    vars: z.ZodObject<{
        docs: z.ZodString;
        task: z.ZodString;
    }, z.core.$loose>;
}, z.core.$strip>;
/** Inferred TypeScript type for a single task definition. */
export type SingleTask = z.infer<typeof SingleTaskSchema>;
/**
 * Schema for legacy task entries (the old paired gold/baseline format).
 * These have description and vars but no id field.
 */
export declare const LegacyTaskSchema: z.ZodObject<{
    assert: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
        template: z.ZodString;
        type: z.ZodLiteral<"llm-rubric">;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains-any">;
        value: z.ZodArray<z.ZodString>;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"not-contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"javascript">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>]>>>;
    description: z.ZodString;
    transform: z.ZodOptional<z.ZodString>;
    vars: z.ZodObject<{
        task: z.ZodString;
    }, z.core.$loose>;
}, z.core.$strip>;
/** Inferred TypeScript type for a legacy task entry. */
export type LegacyTask = z.infer<typeof LegacyTaskSchema>;
/**
 * A single task entry that can be either format.
 * Entries with an id field are validated as SingleTask;
 * entries without are validated as LegacyTask.
 */
export declare const TaskEntrySchema: z.ZodUnion<readonly [z.ZodObject<{
    assert: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
        template: z.ZodString;
        type: z.ZodLiteral<"llm-rubric">;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains-any">;
        value: z.ZodArray<z.ZodString>;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"not-contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"javascript">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>]>>;
    baseline: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        rubric: z.ZodOptional<z.ZodEnum<{
            full: "full";
            abbreviated: "abbreviated";
            none: "none";
        }>>;
    }, z.core.$strip>>;
    canonical_docs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        slug: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        path: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>, z.ZodObject<{
        id: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>, z.ZodObject<{
        perspective: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>]>>;
    description: z.ZodString;
    doc_coverage: z.ZodOptional<z.ZodBoolean>;
    id: z.ZodString;
    reference_solution: z.ZodString;
    vars: z.ZodObject<{
        docs: z.ZodString;
        task: z.ZodString;
    }, z.core.$loose>;
}, z.core.$strip>, z.ZodObject<{
    assert: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
        template: z.ZodString;
        type: z.ZodLiteral<"llm-rubric">;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains-any">;
        value: z.ZodArray<z.ZodString>;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"not-contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"javascript">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>]>>>;
    description: z.ZodString;
    transform: z.ZodOptional<z.ZodString>;
    vars: z.ZodObject<{
        task: z.ZodString;
    }, z.core.$loose>;
}, z.core.$strip>]>;
/** Inferred TypeScript type for any task entry. */
export type TaskEntryParsed = z.infer<typeof TaskEntrySchema>;
/**
 * Schema for an entire task YAML file: an array of task entries.
 */
export declare const TaskFileSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
    assert: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
        template: z.ZodString;
        type: z.ZodLiteral<"llm-rubric">;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains-any">;
        value: z.ZodArray<z.ZodString>;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"not-contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"javascript">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>]>>;
    baseline: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        rubric: z.ZodOptional<z.ZodEnum<{
            full: "full";
            abbreviated: "abbreviated";
            none: "none";
        }>>;
    }, z.core.$strip>>;
    canonical_docs: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        slug: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        path: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>, z.ZodObject<{
        id: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>, z.ZodObject<{
        perspective: z.ZodString;
        reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>]>>;
    description: z.ZodString;
    doc_coverage: z.ZodOptional<z.ZodBoolean>;
    id: z.ZodString;
    reference_solution: z.ZodString;
    vars: z.ZodObject<{
        docs: z.ZodString;
        task: z.ZodString;
    }, z.core.$loose>;
}, z.core.$strip>, z.ZodObject<{
    assert: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
        template: z.ZodString;
        type: z.ZodLiteral<"llm-rubric">;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"contains-any">;
        value: z.ZodArray<z.ZodString>;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"not-contains">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"javascript">;
        value: z.ZodString;
        weight: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>]>>>;
    description: z.ZodString;
    transform: z.ZodOptional<z.ZodString>;
    vars: z.ZodObject<{
        task: z.ZodString;
    }, z.core.$loose>;
}, z.core.$strip>]>>;
/** Inferred TypeScript type for a parsed task file. */
export type TaskFile = z.infer<typeof TaskFileSchema>;
/**
 * Schema for per-dimension threshold values.
 * Uses a dynamic record to support all evaluation modes, not just literacy.
 * Keys use kebab-case to match YAML convention; the threshold engine
 * normalizes to camelCase for comparison against FeatureScore fields.
 */
export declare const ThresholdDimensionsSchema: z.ZodRecord<z.ZodString, z.ZodNumber>;
/** Inferred TypeScript type for threshold dimension overrides. */
export type ThresholdDimensions = z.infer<typeof ThresholdDimensionsSchema>;
/**
 * Schema for threshold defaults (and per-area overrides).
 * All fields are optional in per-area overrides; defaults must have composite.
 */
export declare const ThresholdDefaultsSchema: z.ZodObject<{
    ceiling: z.ZodOptional<z.ZodNumber>;
    composite: z.ZodNumber;
    dimensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
    "doc-lift": z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
/** Inferred TypeScript type for threshold defaults. */
export type ThresholdDefaults = z.infer<typeof ThresholdDefaultsSchema>;
/**
 * Schema for regression thresholds (all values should be negative or zero).
 */
export declare const RegressionThresholdsSchema: z.ZodObject<{
    composite: z.ZodNumber;
    "per-area": z.ZodNumber;
    "per-dimension": z.ZodNumber;
}, z.core.$strip>;
/** Inferred TypeScript type for regression thresholds. */
export type RegressionThresholds = z.infer<typeof RegressionThresholdsSchema>;
/**
 * Schema for severity classification rules.
 */
export declare const SeverityConfigSchema: z.ZodObject<{
    critical: z.ZodOptional<z.ZodObject<{
        "composite-below": z.ZodOptional<z.ZodNumber>;
        "negative-doc-lift": z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    info: z.ZodOptional<z.ZodObject<{
        "composite-below": z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
    warning: z.ZodOptional<z.ZodObject<{
        "composite-below": z.ZodOptional<z.ZodNumber>;
        "regression-exceeds": z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/** Inferred TypeScript type for severity classification. */
export type SeverityConfig = z.infer<typeof SeverityConfigSchema>;
/**
 * Schema for the complete config/thresholds.yaml file.
 */
export declare const ThresholdConfigSchema: z.ZodObject<{
    areas: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        ceiling: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
        composite: z.ZodOptional<z.ZodNumber>;
        dimensions: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>>;
        "doc-lift": z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
    }, z.core.$strip>>>;
    defaults: z.ZodObject<{
        ceiling: z.ZodOptional<z.ZodNumber>;
        composite: z.ZodNumber;
        dimensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
        "doc-lift": z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>;
    regression: z.ZodOptional<z.ZodObject<{
        composite: z.ZodNumber;
        "per-area": z.ZodNumber;
        "per-dimension": z.ZodNumber;
    }, z.core.$strip>>;
    severity: z.ZodOptional<z.ZodObject<{
        critical: z.ZodOptional<z.ZodObject<{
            "composite-below": z.ZodOptional<z.ZodNumber>;
            "negative-doc-lift": z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        info: z.ZodOptional<z.ZodObject<{
            "composite-below": z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>>;
        warning: z.ZodOptional<z.ZodObject<{
            "composite-below": z.ZodOptional<z.ZodNumber>;
            "regression-exceeds": z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/** Inferred TypeScript type for the full threshold config. */
export type ThresholdConfig = z.infer<typeof ThresholdConfigSchema>;
/**
 * Format a Zod error into human-readable lines suitable for CLI output.
 * Each line includes the path (e.g., "[2].vars.task") and the error message.
 */
export declare function formatZodErrors(error: z.ZodError): string[];
export {};
