/**
 * Quality Validator
 *
 * Validates data quality using configurable rules and thresholds
 */
import { EventEmitter } from "node:events";
import type { DataQualityValidation, QualityResult } from "../types/porter-types";
export interface ValidationContext {
    requestId: string;
    userId: string;
    correlationId: string;
    timestamp: number;
    metadata: Record<string, unknown>;
}
export interface FieldAnalysis {
    field: string;
    totalRecords: number;
    nullCount: number;
    emptyCount: number;
    uniqueCount: number;
    validCount: number;
    invalidCount: number;
    completeness: number;
    uniqueness: number;
    validity: number;
    examples: unknown[];
    patterns: string[];
}
export declare class QualityValidator extends EventEmitter {
    private config;
    private readonly expressionEvaluator;
    private readonly builtInRules;
    constructor(config: DataQualityValidation);
    /**
     * Create built-in quality rules
     */
    private createBuiltInRules;
    /**
     * Validate data quality
     */
    validate(data: unknown, context: ValidationContext): Promise<QualityResult>;
    /**
     * Analyze fields in the dataset
     */
    private analyzeFields;
    /**
     * Apply quality rules to field analyses
     */
    private applyQualityRules;
    /**
     * Evaluate a quality rule against field analysis
     */
    private evaluateRule;
    /**
     * Calculate overall quality scores
     */
    private calculateQualityScores;
    /**
     * Detect patterns in field values
     */
    private detectPatterns;
    /**
     * Normalize value for uniqueness calculation
     */
    private normalizeValue;
    /**
     * Create empty quality result
     */
    private createEmptyResult;
    /**
     * Analyze single field across dataset
     */
    analyzeField(records: unknown[], fieldName: string): Promise<FieldAnalysis>;
    /**
     * Get quality recommendations
     */
    getQualityRecommendations(result: QualityResult): Array<{
        type: string;
        severity: "low" | "medium" | "high" | "critical";
        message: string;
        suggestion: string;
    }>;
    /**
     * Update quality validator configuration
     */
    updateConfig(newConfig: Partial<DataQualityValidation>): void;
    /**
     * Get quality validator health status
     */
    getHealthStatus(): {
        status: "healthy" | "degraded" | "unhealthy";
        details: unknown;
    };
    /**
     * Test quality validator
     */
    test(testData?: unknown[]): Promise<{
        success: boolean;
        error?: string;
        result?: QualityResult;
    }>;
}
