/**
 * Validation result types for AgentV file validation.
 */
type FileType = 'eval' | 'targets' | 'config' | 'unknown';
type ValidationSeverity = 'error' | 'warning';
interface ValidationError {
    readonly severity: ValidationSeverity;
    readonly filePath: string;
    readonly location?: string;
    readonly message: string;
}
interface ValidationResult {
    readonly valid: boolean;
    readonly filePath: string;
    readonly fileType: FileType;
    readonly errors: readonly ValidationError[];
}
interface ValidationSummary {
    readonly totalFiles: number;
    readonly validFiles: number;
    readonly invalidFiles: number;
    readonly results: readonly ValidationResult[];
}

/**
 * Detect file type by reading $schema field from YAML file.
 * If $schema is missing, infers type from filename/path:
 * - config.yaml under .agentv folder → 'config'
 * - targets.yaml under .agentv folder → 'targets'
 * - All other YAML files → 'eval' (default)
 */
declare function detectFileType(filePath: string): Promise<FileType>;
/**
 * Check if a schema value is a valid AgentV schema identifier.
 */
declare function isValidSchema(schema: unknown): boolean;
/**
 * Get the expected schema for a file type.
 */
declare function getExpectedSchema(fileType: FileType): string | undefined;

/**
 * Validate an eval file (agentv-eval-v2 schema).
 */
declare function validateEvalFile(filePath: string): Promise<ValidationResult>;

/**
 * Validate a targets file (agentv-targets-v2.1 schema).
 */
declare function validateTargetsFile(filePath: string): Promise<ValidationResult>;

/**
 * Validate a config.yaml file for schema compliance and structural correctness.
 */
declare function validateConfigFile(filePath: string): Promise<ValidationResult>;

/**
 * Validate that file references in eval file content exist.
 * Checks content blocks with type: "file" and validates the referenced file exists.
 * Also checks that referenced files are not empty.
 */
declare function validateFileReferences(evalFilePath: string): Promise<readonly ValidationError[]>;

export { type FileType, type ValidationError, type ValidationResult, type ValidationSeverity, type ValidationSummary, detectFileType, getExpectedSchema, isValidSchema, validateConfigFile, validateEvalFile, validateFileReferences, validateTargetsFile };
