/**
 * Zod validation schemas for {@link EvidenceRecord} and its variants.
 *
 * Kept in a separate file from the plain TypeScript types so that consumers
 * that do not need runtime validation (e.g. type-only imports) pay zero cost.
 *
 * All schemas are named `*RecordSchema` and derive their inferred types from
 * the canonical TypeScript interfaces in `./evidence-record.ts`.
 *
 * The top-level {@link evidenceRecordSchema} is a `z.discriminatedUnion` on
 * `"kind"` so Zod can route to the correct variant in O(1).
 *
 * @epic T810
 * @task T816
 */
import { z } from 'zod';
/**
 * Zod schema for {@link ImplDiffRecord}.
 *
 * Validates that `filesChanged` is a non-empty array and that `linesAdded` /
 * `linesRemoved` are non-negative integers.
 */
export declare const implDiffRecordSchema: z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"impl-diff">;
    phase: z.ZodLiteral<"implement">;
    filesChanged: z.ZodArray<z.ZodString>;
    linesAdded: z.ZodNumber;
    linesRemoved: z.ZodNumber;
}, z.core.$strip>;
/** Inferred TypeScript type from {@link implDiffRecordSchema}. */
export type ImplDiffRecordInput = z.input<typeof implDiffRecordSchema>;
/**
 * Zod schema for {@link ValidateSpecCheckRecord}.
 *
 * Validates that `reqIdsChecked` is non-empty and `details` is non-blank.
 */
export declare const validateSpecCheckRecordSchema: z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"validate-spec-check">;
    phase: z.ZodLiteral<"validate">;
    reqIdsChecked: z.ZodArray<z.ZodString>;
    passed: z.ZodBoolean;
    details: z.ZodString;
}, z.core.$strip>;
/** Inferred TypeScript type from {@link validateSpecCheckRecordSchema}. */
export type ValidateSpecCheckRecordInput = z.input<typeof validateSpecCheckRecordSchema>;
/**
 * Zod schema for {@link TestOutputRecord}.
 *
 * Validates that `command` is non-blank and test counts are non-negative.
 */
export declare const testOutputRecordSchema: z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"test-output">;
    phase: z.ZodLiteral<"test">;
    command: z.ZodString;
    exitCode: z.ZodNumber;
    testsPassed: z.ZodNumber;
    testsFailed: z.ZodNumber;
}, z.core.$strip>;
/** Inferred TypeScript type from {@link testOutputRecordSchema}. */
export type TestOutputRecordInput = z.input<typeof testOutputRecordSchema>;
/**
 * Zod schema for {@link LintReportRecord}.
 *
 * `phase` is restricted to `'implement' | 'test'`.
 * `warnings` and `errors` are non-negative integers.
 */
export declare const lintReportRecordSchema: z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"lint-report">;
    phase: z.ZodEnum<{
        test: "test";
        implement: "implement";
    }>;
    tool: z.ZodString;
    passed: z.ZodBoolean;
    warnings: z.ZodNumber;
    errors: z.ZodNumber;
}, z.core.$strip>;
/** Inferred TypeScript type from {@link lintReportRecordSchema}. */
export type LintReportRecordInput = z.input<typeof lintReportRecordSchema>;
/**
 * Zod schema for {@link CommandOutputRecord}.
 *
 * `phase` can be `'implement'`, `'validate'`, or `'test'`.
 * `cmd` must be non-blank.
 */
export declare const commandOutputRecordSchema: z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"command-output">;
    phase: z.ZodEnum<{
        test: "test";
        implement: "implement";
        validate: "validate";
    }>;
    cmd: z.ZodString;
    exitCode: z.ZodNumber;
}, z.core.$strip>;
/** Inferred TypeScript type from {@link commandOutputRecordSchema}. */
export type CommandOutputRecordInput = z.input<typeof commandOutputRecordSchema>;
/**
 * Zod discriminated-union schema for {@link EvidenceRecord}.
 *
 * Uses `z.discriminatedUnion('kind', [...])` for O(1) variant lookup.
 * Parse with `evidenceRecordSchema.parse(input)` or
 * `evidenceRecordSchema.safeParse(input)`.
 *
 * @example
 * ```ts
 * const rec = evidenceRecordSchema.parse({
 *   kind: 'test-output',
 *   phase: 'test',
 *   agentIdentity: 'T816-worker',
 *   attachmentSha256: 'a'.repeat(64),
 *   command: 'pnpm test',
 *   exitCode: 0,
 *   testsPassed: 10,
 *   testsFailed: 0,
 *   ranAt: '2026-04-16T00:00:00.000Z',
 *   durationMs: 1234,
 * });
 * ```
 */
export declare const evidenceRecordSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"impl-diff">;
    phase: z.ZodLiteral<"implement">;
    filesChanged: z.ZodArray<z.ZodString>;
    linesAdded: z.ZodNumber;
    linesRemoved: z.ZodNumber;
}, z.core.$strip>, z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"validate-spec-check">;
    phase: z.ZodLiteral<"validate">;
    reqIdsChecked: z.ZodArray<z.ZodString>;
    passed: z.ZodBoolean;
    details: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"test-output">;
    phase: z.ZodLiteral<"test">;
    command: z.ZodString;
    exitCode: z.ZodNumber;
    testsPassed: z.ZodNumber;
    testsFailed: z.ZodNumber;
}, z.core.$strip>, z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"lint-report">;
    phase: z.ZodEnum<{
        test: "test";
        implement: "implement";
    }>;
    tool: z.ZodString;
    passed: z.ZodBoolean;
    warnings: z.ZodNumber;
    errors: z.ZodNumber;
}, z.core.$strip>, z.ZodObject<{
    agentIdentity: z.ZodString;
    attachmentSha256: z.ZodString;
    ranAt: z.ZodString;
    durationMs: z.ZodNumber;
    kind: z.ZodLiteral<"command-output">;
    phase: z.ZodEnum<{
        test: "test";
        implement: "implement";
        validate: "validate";
    }>;
    cmd: z.ZodString;
    exitCode: z.ZodNumber;
}, z.core.$strip>], "kind">;
/** Inferred TypeScript type from {@link evidenceRecordSchema}. */
export type EvidenceRecordInput = z.input<typeof evidenceRecordSchema>;
//# sourceMappingURL=evidence-record-schema.d.ts.map