/**
 * Validation Registry
 *
 * Central registry for all validation processors in the ADPA Quality Assurance Engine.
 * Provides registration, discovery, and management of validation rules.
 *
 * This registry follows the factory pattern and enables dynamic discovery
 * and execution of validation checks based on document types and context.
 *
 * @version 1.0.0
 * @author ADPA Quality Assurance Engine Team
 * @created June 2025
 */
import { IValidator } from './interfaces/IValidator.js';
/**
 * Configuration for validator registration
 */
export interface ValidatorRegistration {
    /** The validator instance */
    validator: IValidator;
    /** Whether this validator is currently enabled */
    enabled: boolean;
    /** When this validator was registered */
    registeredAt: Date;
    /** Version of the validator */
    version?: string;
    /** Additional metadata */
    metadata?: Record<string, any>;
}
/**
 * Filter criteria for validator discovery
 */
export interface ValidatorFilter {
    /** Only return validators applicable to these document types */
    documentTypes?: string[];
    /** Only return validators with these IDs */
    validatorIds?: string[];
    /** Only return enabled/disabled validators */
    enabledOnly?: boolean;
    /** Minimum priority level (1 = highest) */
    minPriority?: number;
    /** Maximum priority level (10 = lowest) */
    maxPriority?: number;
    /** Only return validators with specific tags */
    tags?: string[];
}
/**
 * Central registry for all validation processors
 */
export declare class ValidationRegistry {
    private static instance;
    private validators;
    private tags;
    private constructor();
    /**
     * Get the singleton instance of the registry
     */
    static getInstance(): ValidationRegistry;
    /**
     * Register a new validator
     * @param validator The validator to register
     * @param options Registration options
     */
    register(validator: IValidator, options?: {
        enabled?: boolean;
        version?: string;
        tags?: string[];
        metadata?: Record<string, any>;
    }): void;
    /**
     * Unregister a validator
     * @param validatorId The ID of the validator to remove
     */
    unregister(validatorId: string): boolean;
    /**
     * Enable or disable a validator
     * @param validatorId The validator ID
     * @param enabled Whether to enable or disable
     */
    setEnabled(validatorId: string, enabled: boolean): boolean;
    /**
     * Get all registered validators matching the filter
     * @param filter Optional filter criteria
     * @returns Array of validator registrations
     */
    getValidators(filter?: ValidatorFilter): ValidatorRegistration[];
    /**
     * Get a specific validator by ID
     * @param validatorId The validator ID
     * @returns The validator registration or undefined
     */
    getValidator(validatorId: string): ValidatorRegistration | undefined;
    /**
     * Check if a validator is registered
     * @param validatorId The validator ID
     * @returns Whether the validator is registered
     */
    isRegistered(validatorId: string): boolean;
    /**
     * Get all available tags
     * @returns Array of tag names
     */
    getTags(): string[];
    /**
     * Get validators by tag
     * @param tag The tag name
     * @returns Array of validator IDs with this tag
     */
    getValidatorsByTag(tag: string): string[];
    /**
     * Get registry statistics
     * @returns Statistics about the registry
     */
    getStats(): {
        totalValidators: number;
        enabledValidators: number;
        disabledValidators: number;
        totalTags: number;
        validatorsByPriority: Record<number, number>;
    };
    /**
     * Clear all registered validators (useful for testing)
     */
    clear(): void;
    /**
     * List all registered validators for debugging
     */
    listValidators(): void;
}
//# sourceMappingURL=ValidationRegistry.d.ts.map