/**
 * Schema Validator
 *
 * Validates data against predefined schemas with auto-detection capabilities
 */
import { EventEmitter } from "node:events";
import type { SchemaValidation, SchemaDefinition, ValidationResult } from "../types/porter-types";
export interface ValidationContext {
    requestId: string;
    userId: string;
    correlationId: string;
    timestamp: number;
    metadata: Record<string, unknown>;
}
export interface SchemaMatchResult {
    schema: SchemaDefinition;
    confidence: number;
    reasons: string[];
}
export declare class SchemaValidator extends EventEmitter {
    private config;
    private readonly builtInSchemas;
    constructor(config: SchemaValidation);
    /**
     * Initialize built-in schema definitions
     */
    private initializeBuiltInSchemas;
    /**
     * Validate data against schemas
     */
    validate(data: unknown, context: ValidationContext): Promise<ValidationResult>;
    /**
     * Detect possible schemas for data
     */
    detectSchemas(data: unknown): Promise<SchemaMatchResult[]>;
    /**
     * Calculate confidence score for schema match
     */
    private calculateSchemaConfidence;
    /**
     * Get reasons for schema match
     */
    private getMatchReasons;
    /**
     * Count total number of schema checks
     */
    private countSchemaChecks;
    /**
     * Validate data against specific schema
     */
    private validateAgainstSchema;
    /**
     * Validate object against schema
     */
    private validateObject;
    /**
     * Validate array against schema
     */
    private validateArray;
    /**
     * Validate string against schema
     */
    private validateString;
    /**
     * Validate number against schema
     */
    private validateNumber;
    /**
     * Validate property value recursively
     */
    private validatePropertyValue;
    /**
     * Validate string format
     */
    private validateFormat;
    /**
     * Update schema validator configuration
     */
    updateConfig(newConfig: Partial<SchemaValidation>): void;
    /**
     * Get schema validator health status
     */
    getHealthStatus(): {
        status: "healthy" | "degraded" | "unhealthy";
        details: unknown;
    };
}
