/**
 * Validation Engine
 *
 * Core validation orchestrator for data quality, schema, and integrity checks
 */
import { EventEmitter } from "node:events";
import type { ValidationConfig, ValidationResult, QualityResult } from "../types/porter-types";
export interface ValidationContext {
    requestId: string;
    userId: string;
    correlationId: string;
    timestamp: number;
    metadata: Record<string, unknown>;
}
export interface ValidationSummary {
    overall: ValidationResult;
    schema?: ValidationResult;
    integrity?: ValidationResult;
    quality?: QualityResult;
    context: ValidationContext;
    executionTime: number;
    validatedRecords: number;
}
export declare class ValidationEngine extends EventEmitter {
    private readonly config;
    private readonly schemaValidator;
    private readonly integrityValidator;
    private readonly qualityValidator;
    constructor(config: ValidationConfig);
    /**
     * Comprehensive validation of data
     */
    validate(data: unknown, context: ValidationContext, options?: {
        skipSchema?: boolean;
        skipIntegrity?: boolean;
        skipQuality?: boolean;
        failFast?: boolean;
        maxErrors?: number;
    }): Promise<ValidationSummary>;
    /**
     * Validate single record
     */
    validateRecord(record: unknown, recordIndex: number, context: ValidationContext): Promise<ValidationResult>;
    /**
     * Batch validation for large datasets
     */
    validateBatch(data: unknown[], context: ValidationContext, batchSize?: number): AsyncIterable<{
        batchIndex: number;
        records: ValidationResult[];
        summary: {
            validRecords: number;
            invalidRecords: number;
            totalWarnings: number;
        };
    }>;
    /**
     * Create validation context
     */
    createContext(requestId: string, userId: string, correlationId?: string, metadata?: Record<string, unknown>): ValidationContext;
    /**
     * Update validation configuration
     */
    updateConfig(newConfig: Partial<ValidationConfig>): void;
    /**
     * Get validation statistics
     */
    getStats(): {
        totalValidations: number;
        successRate: number;
        averageExecutionTime: number;
        commonErrors: Array<{
            error: string;
            count: number;
        }>;
        qualityScores: {
            average: number;
            recent: number[];
        };
    };
    /**
     * Test validation engine
     */
    test(testData?: unknown): Promise<{
        success: boolean;
        error?: string;
        results?: ValidationSummary;
    }>;
    /**
     * Get validation engine health status
     */
    getHealthStatus(): {
        status: "healthy" | "degraded" | "unhealthy";
        details: unknown;
    };
    /**
     * Setup event forwarding from sub-validators
     */
    private setupEventForwarding;
    /**
     * Merge validation results
     */
    private mergeResults;
    /**
     * Get quality suggestion based on issue type
     */
    private getQualitySuggestion;
}
