/** * 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; } /** * 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; }): 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; }; /** * Clear all registered validators (useful for testing) */ clear(): void; /** * List all registered validators for debugging */ listValidators(): void; } //# sourceMappingURL=ValidationRegistry.d.ts.map