import { z } from 'zod';
import type { AgentContextItem } from '../types/index.js';
import type { CreateTestCaseInput } from '../services/storage/index.js';
/**
 * Zod schema for validating test case JSON input.
 * This validates a subset of CreateTestCaseInput fields that are relevant for the JSON editor.
 * The output is compatible with CreateTestCaseInput.
 */
export declare const testCaseSchema: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    category: z.ZodString;
    subcategory: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodEnum<["Easy", "Medium", "Hard"]>;
    initialPrompt: z.ZodString;
    context: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
        description: z.ZodString;
        value: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        description?: string;
        value?: string;
    }, {
        description?: string;
        value?: string;
    }>, "many">>>;
    expectedOutcomes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    name?: string;
    description?: string;
    initialPrompt?: string;
    context?: {
        description?: string;
        value?: string;
    }[];
    expectedOutcomes?: string[];
    category?: string;
    subcategory?: string;
    difficulty?: "Easy" | "Medium" | "Hard";
}, {
    name?: string;
    description?: string;
    initialPrompt?: string;
    context?: {
        description?: string;
        value?: string;
    }[];
    expectedOutcomes?: string[];
    category?: string;
    subcategory?: string;
    difficulty?: "Easy" | "Medium" | "Hard";
}>;
export declare const testCasesArraySchema: z.ZodArray<z.ZodObject<{
    name: z.ZodString;
    description: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    category: z.ZodString;
    subcategory: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodEnum<["Easy", "Medium", "Hard"]>;
    initialPrompt: z.ZodString;
    context: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
        description: z.ZodString;
        value: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        description?: string;
        value?: string;
    }, {
        description?: string;
        value?: string;
    }>, "many">>>;
    expectedOutcomes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
}, "strip", z.ZodTypeAny, {
    name?: string;
    description?: string;
    initialPrompt?: string;
    context?: {
        description?: string;
        value?: string;
    }[];
    expectedOutcomes?: string[];
    category?: string;
    subcategory?: string;
    difficulty?: "Easy" | "Medium" | "Hard";
}, {
    name?: string;
    description?: string;
    initialPrompt?: string;
    context?: {
        description?: string;
        value?: string;
    }[];
    expectedOutcomes?: string[];
    category?: string;
    subcategory?: string;
    difficulty?: "Easy" | "Medium" | "Hard";
}>, "many">;
/**
 * The validated test case input from JSON.
 * This is a subset of CreateTestCaseInput with only the fields the JSON editor handles.
 * It's structurally compatible with CreateTestCaseInput for use with asyncTestCaseStorage.
 */
export type ValidatedTestCaseInput = Pick<CreateTestCaseInput, 'name' | 'description' | 'category' | 'subcategory' | 'difficulty' | 'initialPrompt' | 'context' | 'expectedOutcomes'>;
export interface TestCaseFormState {
    name: string;
    description: string;
    category: string;
    subcategory: string;
    difficulty: 'Easy' | 'Medium' | 'Hard';
    initialPrompt: string;
    context: AgentContextItem[];
    expectedOutcomes: string[];
}
export interface ValidationError {
    path: string;
    message: string;
    type: 'error' | 'warning';
}
export interface ValidationResult<T = unknown> {
    valid: boolean;
    errors: ValidationError[];
    data?: T;
}
/**
 * Validates a single test case JSON object.
 * Returns data compatible with CreateTestCaseInput.
 */
export declare function validateTestCaseJson(json: unknown): ValidationResult<ValidatedTestCaseInput>;
/**
 * Validates an array of test cases for bulk import.
 * Also handles single objects by wrapping them in an array.
 * Returns data compatible with CreateTestCaseInput[].
 */
export declare function validateTestCasesArrayJson(json: unknown): ValidationResult<ValidatedTestCaseInput[]>;
/**
 * Serializes form state to JSON string for the editor.
 */
export declare function serializeFormToJson(formState: TestCaseFormState): string;
/**
 * Parses JSON string and returns form state if valid.
 */
export declare function parseJsonToFormState(jsonString: string): ValidationResult<TestCaseFormState>;
//# sourceMappingURL=testCaseValidation.d.ts.map