import { z } from 'zod';
import type { ArtifactKind } from '../../types/handoff-artifacts.js';
import type { ValidationOk, ValidationErr } from './validation-result.js';
export declare const SchemaVersion: z.ZodString;
export declare const IntakeV1Schema: z.ZodObject<{
    schema_version: z.ZodString;
    kind: z.ZodEnum<{
        idea: "idea";
        "quick-fix": "quick-fix";
        "bug-spec": "bug-spec";
        "feature-spec": "feature-spec";
        epic: "epic";
    }>;
    description: z.ZodString;
    confidence: z.ZodNumber;
    rationale: z.ZodString;
    suggestedSpecId: z.ZodOptional<z.ZodString>;
    createdAt: z.ZodISODateTime;
}, z.core.$strip>;
export declare const SpecLockV1Schema: z.ZodObject<{
    schema_version: z.ZodString;
    specId: z.ZodString;
    frontmatterSha: z.ZodString;
    approvedBy: z.ZodString;
    plannerToken: z.ZodString;
    scenarios: z.ZodArray<z.ZodObject<{
        title: z.ZodString;
        done: z.ZodBoolean;
    }, z.core.$strip>>;
    lockedAt: z.ZodISODateTime;
}, z.core.$strip>;
export declare const ReviewFeedbackV1Schema: z.ZodObject<{
    schema_version: z.ZodString;
    specId: z.ZodString;
    verdict: z.ZodEnum<{
        approved: "approved";
        "changes-requested": "changes-requested";
    }>;
    reviewer: z.ZodObject<{
        kind: z.ZodEnum<{
            human: "human";
            "spec-review-agent": "spec-review-agent";
            automation: "automation";
        }>;
        agent: z.ZodString;
        verdict: z.ZodEnum<{
            approved: "approved";
            "changes-requested": "changes-requested";
        }>;
    }, z.core.$strip>;
    blockers: z.ZodArray<z.ZodString>;
    suggestions: z.ZodArray<z.ZodString>;
    body: z.ZodString;
    reviewedAt: z.ZodISODateTime;
}, z.core.$strip>;
export declare const ImplementationReportV1Schema: z.ZodObject<{
    schema_version: z.ZodString;
    specId: z.ZodString;
    commitSha: z.ZodString;
    filesChanged: z.ZodArray<z.ZodString>;
    testsRun: z.ZodNumber;
    testsPassed: z.ZodNumber;
    completedAt: z.ZodISODateTime;
}, z.core.$strip>;
export declare const ValidationReportV1Schema: z.ZodObject<{
    schema_version: z.ZodString;
    specId: z.ZodString;
    passed: z.ZodBoolean;
    gates: z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        passed: z.ZodBoolean;
        reason: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    reviewer: z.ZodObject<{
        kind: z.ZodEnum<{
            human: "human";
            automation: "automation";
            "implementation-review-agent": "implementation-review-agent";
        }>;
        agent: z.ZodString;
        verdict: z.ZodEnum<{
            approved: "approved";
            "changes-requested": "changes-requested";
        }>;
    }, z.core.$strip>;
    specCompliance: z.ZodOptional<z.ZodObject<{
        score: z.ZodNumber;
        command: z.ZodString;
        scenarios: z.ZodArray<z.ZodObject<{
            title: z.ZodString;
            verdict: z.ZodEnum<{
                fail: "fail";
                missing: "missing";
                pass: "pass";
            }>;
            evidence: z.ZodArray<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    score: z.ZodOptional<z.ZodNumber>;
    completedAt: z.ZodISODateTime;
}, z.core.$strip>;
export declare const ARTIFACT_SCHEMAS: {
    readonly intake: z.ZodObject<{
        schema_version: z.ZodString;
        kind: z.ZodEnum<{
            idea: "idea";
            "quick-fix": "quick-fix";
            "bug-spec": "bug-spec";
            "feature-spec": "feature-spec";
            epic: "epic";
        }>;
        description: z.ZodString;
        confidence: z.ZodNumber;
        rationale: z.ZodString;
        suggestedSpecId: z.ZodOptional<z.ZodString>;
        createdAt: z.ZodISODateTime;
    }, z.core.$strip>;
    readonly 'spec.lock': z.ZodObject<{
        schema_version: z.ZodString;
        specId: z.ZodString;
        frontmatterSha: z.ZodString;
        approvedBy: z.ZodString;
        plannerToken: z.ZodString;
        scenarios: z.ZodArray<z.ZodObject<{
            title: z.ZodString;
            done: z.ZodBoolean;
        }, z.core.$strip>>;
        lockedAt: z.ZodISODateTime;
    }, z.core.$strip>;
    readonly review_feedback: z.ZodObject<{
        schema_version: z.ZodString;
        specId: z.ZodString;
        verdict: z.ZodEnum<{
            approved: "approved";
            "changes-requested": "changes-requested";
        }>;
        reviewer: z.ZodObject<{
            kind: z.ZodEnum<{
                human: "human";
                "spec-review-agent": "spec-review-agent";
                automation: "automation";
            }>;
            agent: z.ZodString;
            verdict: z.ZodEnum<{
                approved: "approved";
                "changes-requested": "changes-requested";
            }>;
        }, z.core.$strip>;
        blockers: z.ZodArray<z.ZodString>;
        suggestions: z.ZodArray<z.ZodString>;
        body: z.ZodString;
        reviewedAt: z.ZodISODateTime;
    }, z.core.$strip>;
    readonly 'implementation-report': z.ZodObject<{
        schema_version: z.ZodString;
        specId: z.ZodString;
        commitSha: z.ZodString;
        filesChanged: z.ZodArray<z.ZodString>;
        testsRun: z.ZodNumber;
        testsPassed: z.ZodNumber;
        completedAt: z.ZodISODateTime;
    }, z.core.$strip>;
    readonly 'validation-report': z.ZodObject<{
        schema_version: z.ZodString;
        specId: z.ZodString;
        passed: z.ZodBoolean;
        gates: z.ZodArray<z.ZodObject<{
            name: z.ZodString;
            passed: z.ZodBoolean;
            reason: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        reviewer: z.ZodObject<{
            kind: z.ZodEnum<{
                human: "human";
                automation: "automation";
                "implementation-review-agent": "implementation-review-agent";
            }>;
            agent: z.ZodString;
            verdict: z.ZodEnum<{
                approved: "approved";
                "changes-requested": "changes-requested";
            }>;
        }, z.core.$strip>;
        specCompliance: z.ZodOptional<z.ZodObject<{
            score: z.ZodNumber;
            command: z.ZodString;
            scenarios: z.ZodArray<z.ZodObject<{
                title: z.ZodString;
                verdict: z.ZodEnum<{
                    fail: "fail";
                    missing: "missing";
                    pass: "pass";
                }>;
                evidence: z.ZodArray<z.ZodString>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        score: z.ZodOptional<z.ZodNumber>;
        completedAt: z.ZodISODateTime;
    }, z.core.$strip>;
};
/**
 * Validate a payload against the schema for the given artifact kind.
 * Returns ValidationOk on success, ValidationErr on failure.
 * Special case: missing schema_version emits MISSING_SCHEMA_VERSION code.
 */
export declare function validateArtifact<K extends ArtifactKind>(kind: K, payload: unknown): ValidationOk<K> | ValidationErr;
//# sourceMappingURL=schemas.d.ts.map