/**
 * Evidence Output Parser
 *
 * Extracts structured Evidence records from free-form agent text output.
 * Looks for a fenced JSON code block containing an array of evidence objects.
 * Returns empty array gracefully on any parsing failure.
 *
 * Also provides validation to ensure UI-related evidence includes app-level
 * proof (not just Storybook screenshots), evidence completeness by task type,
 * and file existence verification.
 */
import type { Evidence } from '../../../../../domain/generated/output.js';
/**
 * Extract Evidence records from agent text output.
 * Looks for a fenced JSON code block containing a JSON array of evidence objects.
 * Returns empty array when no block found, JSON is malformed, or no valid records exist.
 */
export declare function parseEvidenceRecords(output: string): Evidence[];
export interface UiEvidenceValidationResult {
    valid: boolean;
    hasScreenshots: boolean;
    hasAppScreenshots: boolean;
    hasOnlyStorybookScreenshots: boolean;
    warnings: string[];
}
/**
 * Validate that UI-related evidence includes app-level proof, not just Storybook screenshots.
 *
 * Returns a validation result indicating whether the evidence set meets the requirement
 * for app-level proof. Screenshots/videos are considered "Storybook-only" if their
 * description or path contains storybook-related keywords and NO screenshots have
 * app-level indicators.
 *
 * This validation is informational — it produces warnings but does not filter out records.
 */
export declare function validateUiEvidenceHasAppProof(evidence: Evidence[]): UiEvidenceValidationResult;
/** Minimal task shape needed for evidence validation (subset of PhaseTask). */
export interface TaskForValidation {
    id: string;
    title: string;
    description: string;
    acceptanceCriteria: string[];
    tdd: {
        red: string[];
        green: string[];
        refactor: string[];
    } | null;
}
export type TaskType = 'ui' | 'test' | 'cli';
export interface ValidationError {
    type: 'ui' | 'completeness' | 'fileExistence';
    taskId?: string;
    taskTitle?: string;
    message: string;
}
export interface ValidationResult {
    valid: boolean;
    errors: ValidationError[];
}
/**
 * Infer task types from a task's description, acceptance criteria, and tdd field.
 * Returns an array of inferred types. Tasks can have multiple types.
 * Tasks without clear signals return an empty array (no completeness requirement).
 */
export declare function inferTaskTypes(task: TaskForValidation): TaskType[];
/**
 * Validate evidence completeness against task requirements.
 * Checks three dimensions:
 * 1. UI tasks have app-level screenshots (not just Storybook)
 * 2. Test tasks have TestOutput evidence
 * 3. CLI tasks have TerminalRecording evidence
 *
 * Pure function — no side effects, no I/O.
 */
export declare function validateEvidenceCompleteness(evidence: Evidence[], tasks: TaskForValidation[]): ValidationResult;
/**
 * Verify that each Evidence record's file exists on disk with non-zero size.
 * Returns an array of error messages for missing or empty files.
 * Never throws — all errors are caught and returned as strings (NFR-10).
 */
export declare function validateFileExistence(evidence: Evidence[]): Promise<string[]>;
/**
 * Full validation pipeline: runs completeness checks and file existence checks,
 * returns a unified ValidationResult with all detected issues.
 */
export declare function validateEvidence(evidence: Evidence[], tasks: TaskForValidation[]): Promise<ValidationResult>;
//# sourceMappingURL=evidence-output-parser.d.ts.map