/**
 * Phase 3 Pipeline Schemas
 *
 * Zod validation schemas for reading Phase 2 artifacts from disk and
 * validating Phase 3 output structures.
 *
 * All "OnDisk" schemas use `.passthrough()` liberally so that Phase 2
 * format evolution does not break Phase 3 ingestion. Phase 3 only
 * validates the fields it actually reads; extra fields are preserved
 * but ignored.
 */
import { z } from 'zod';
/**
 * Schema for the phase2-manifest.json file written by Phase 2.
 *
 * Uses passthrough to tolerate extra fields such as `stages`,
 * `deterministic`, `pipeline_version`, `generated_at`, and any
 * future additions.
 */
export declare const Phase2ManifestOnDiskSchema: z.ZodObject<{
    schema_version: z.ZodString;
    trace_id: z.ZodString;
    artifacts: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        sha256: z.ZodString;
        size_bytes: z.ZodNumber;
    }, z.core.$loose>>;
    total_timing_ms: z.ZodNumber;
}, z.core.$loose>;
/**
 * Schema for the sparc-combined.json file written by Phase 2.
 *
 * The on-disk format may include additional fields beyond what Phase 3
 * consumes (e.g. `scope`, extra requirement metadata). Passthrough is
 * applied at every object level for maximum forward-compatibility.
 */
export declare const SPARCOnDiskSchema: z.ZodObject<{
    specification: z.ZodObject<{
        requirements: z.ZodArray<z.ZodObject<{
            id: z.ZodOptional<z.ZodString>;
            text: z.ZodOptional<z.ZodString>;
        }, z.core.$loose>>;
        constraints: z.ZodArray<z.ZodObject<{
            id: z.ZodOptional<z.ZodString>;
            text: z.ZodOptional<z.ZodString>;
        }, z.core.$loose>>;
        successCriteria: z.ZodArray<z.ZodObject<{
            id: z.ZodOptional<z.ZodString>;
            text: z.ZodOptional<z.ZodString>;
        }, z.core.$loose>>;
    }, z.core.$loose>;
    pseudocode: z.ZodObject<{
        modules: z.ZodArray<z.ZodObject<{
            name: z.ZodString;
        }, z.core.$loose>>;
    }, z.core.$loose>;
    architecture: z.ZodObject<{
        services: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
            responsibility: z.ZodString;
            api: z.ZodArray<z.ZodString>;
            dependencies: z.ZodArray<z.ZodString>;
        }, z.core.$loose>>;
        securityBoundaries: z.ZodOptional<z.ZodArray<z.ZodString>>;
        apiContracts: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$loose>;
    refinement: z.ZodObject<{
        performanceTargets: z.ZodOptional<z.ZodArray<z.ZodObject<{
            id: z.ZodOptional<z.ZodString>;
            text: z.ZodOptional<z.ZodString>;
        }, z.core.$loose>>>;
        securityConsiderations: z.ZodOptional<z.ZodArray<z.ZodObject<{
            id: z.ZodOptional<z.ZodString>;
            text: z.ZodOptional<z.ZodString>;
        }, z.core.$loose>>>;
    }, z.core.$loose>;
    completion: z.ZodObject<{}, z.core.$loose>;
}, z.core.$loose>;
/**
 * Schema for a single ADR record as found in adr-index.json.
 *
 * The on-disk alternatives shape (`option`, `rationale`, `rejected`)
 * differs from the Phase 2 internal schema. We use passthrough on the
 * alternatives elements to tolerate either shape.
 */
export declare const ADRRecordOnDiskSchema: z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    status: z.ZodString;
    context: z.ZodString;
    decision: z.ZodString;
    alternatives: z.ZodArray<z.ZodObject<{}, z.core.$loose>>;
    consequences: z.ZodArray<z.ZodObject<{}, z.core.$loose>>;
    sparcSectionRefs: z.ZodArray<z.ZodString>;
    researchDossierItemRefs: z.ZodArray<z.ZodString>;
}, z.core.$loose>;
/**
 * Schema for the full adr-index.json file: an array of ADR records.
 */
export declare const ADRIndexOnDiskSchema: z.ZodArray<z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    status: z.ZodString;
    context: z.ZodString;
    decision: z.ZodString;
    alternatives: z.ZodArray<z.ZodObject<{}, z.core.$loose>>;
    consequences: z.ZodArray<z.ZodObject<{}, z.core.$loose>>;
    sparcSectionRefs: z.ZodArray<z.ZodString>;
    researchDossierItemRefs: z.ZodArray<z.ZodString>;
}, z.core.$loose>>;
/**
 * Schema for the domain-model.json file written by Phase 2.
 *
 * Bounded contexts on disk may carry entities with `description`
 * rather than `properties`/`invariants`. Commands, queries, and
 * domain events also have a different shape than the Phase 2
 * internal types. Passthrough absorbs all these variations.
 */
export declare const DomainModelOnDiskSchema: z.ZodObject<{
    contexts: z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        aggregates: z.ZodOptional<z.ZodArray<z.ZodObject<{
            name: z.ZodString;
        }, z.core.$loose>>>;
        commands: z.ZodOptional<z.ZodArray<z.ZodObject<{
            name: z.ZodString;
        }, z.core.$loose>>>;
        queries: z.ZodOptional<z.ZodArray<z.ZodObject<{
            name: z.ZodString;
        }, z.core.$loose>>>;
        domainEvents: z.ZodOptional<z.ZodArray<z.ZodObject<{
            name: z.ZodString;
        }, z.core.$loose>>>;
        ubiquitousLanguage: z.ZodOptional<z.ZodArray<z.ZodObject<{
            term: z.ZodString;
        }, z.core.$loose>>>;
    }, z.core.$loose>>;
    contextMap: z.ZodArray<z.ZodObject<{
        upstream: z.ZodString;
        downstream: z.ZodString;
        type: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
    }, z.core.$loose>>;
    ubiquitousLanguageGlossary: z.ZodOptional<z.ZodArray<z.ZodObject<{
        term: z.ZodString;
    }, z.core.$loose>>>;
}, z.core.$loose>;
/**
 * Schema for the tdd-plan.json file written by Phase 2.
 *
 * The on-disk `testPyramid` is a record of layer names to count/pct
 * objects (not the `levels` array from the internal schema). Test
 * suites carry extra fields like `mockDependencies` and `adrRefs`.
 * Passthrough absorbs all variations.
 */
export declare const TDDPlanOnDiskSchema: z.ZodObject<{
    approach: z.ZodString;
    testPyramid: z.ZodObject<{}, z.core.$loose>;
    testSuites: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        boundedContext: z.ZodString;
        layer: z.ZodString;
        name: z.ZodString;
        tests: z.ZodArray<z.ZodObject<{}, z.core.$loose>>;
    }, z.core.$loose>>;
    mockContracts: z.ZodArray<z.ZodObject<{}, z.core.$loose>>;
    seamDefinitions: z.ZodArray<z.ZodObject<{
        id: z.ZodOptional<z.ZodString>;
        name: z.ZodOptional<z.ZodString>;
    }, z.core.$loose>>;
    executionOrder: z.ZodArray<z.ZodString>;
}, z.core.$loose>;
/**
 * Schema for the Phase 3 manifest written at the end of a successful run.
 * This is a strict schema (no passthrough) because Phase 3 controls the
 * output format.
 */
export declare const Phase3ManifestSchema: z.ZodObject<{
    schema_version: z.ZodLiteral<"3.0.0">;
    trace_id: z.ZodString;
    implementation_language: z.ZodEnum<{
        typescript: "typescript";
        rust: "rust";
    }>;
    mixed_mode: z.ZodLiteral<false>;
    ruflo_version: z.ZodString;
    artifacts: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        sha256: z.ZodString;
        size_bytes: z.ZodNumber;
    }, z.core.$strip>>;
    total_timing_ms: z.ZodNumber;
    success: z.ZodBoolean;
}, z.core.$strip>;
/**
 * Schema for the language resolution result produced by the
 * language-resolution pipeline stage.
 */
export declare const LanguageResolutionSchema: z.ZodObject<{
    language: z.ZodEnum<{
        typescript: "typescript";
        rust: "rust";
    }>;
    mixed_mode: z.ZodLiteral<false>;
    rationale: z.ZodString;
    signals: z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        source: z.ZodString;
        favors: z.ZodEnum<{
            typescript: "typescript";
            rust: "rust";
        }>;
        weight: z.ZodNumber;
        score: z.ZodNumber;
        confidence: z.ZodNumber;
        evidence: z.ZodString;
    }, z.core.$loose>>;
    typescript_score: z.ZodNumber;
    rust_score: z.ZodNumber;
}, z.core.$strip>;
export type ValidatedPhase2ManifestOnDisk = z.infer<typeof Phase2ManifestOnDiskSchema>;
export type ValidatedSPARCOnDisk = z.infer<typeof SPARCOnDiskSchema>;
export type ValidatedADRRecordOnDisk = z.infer<typeof ADRRecordOnDiskSchema>;
export type ValidatedADRIndexOnDisk = z.infer<typeof ADRIndexOnDiskSchema>;
export type ValidatedDomainModelOnDisk = z.infer<typeof DomainModelOnDiskSchema>;
export type ValidatedTDDPlanOnDisk = z.infer<typeof TDDPlanOnDiskSchema>;
export type ValidatedPhase3Manifest = z.infer<typeof Phase3ManifestSchema>;
export type ValidatedLanguageResolution = z.infer<typeof LanguageResolutionSchema>;
//# sourceMappingURL=schemas.d.ts.map