import type { Algorithm } from '../types.js'; import type { EncryptionAlgorithmStrategy, SigningAlgorithmStrategy } from './algorithm.js'; /** * Algorithm registry for managing available encryption and signing strategies * Allows dynamic registration of new algorithms without modifying core code (OCP) * Centralizes algorithm validation - no more repeated checks throughout codebase */ export declare class AlgorithmRegistry { private readonly encryptionStrategies; private readonly signingStrategies; constructor(); /** * Register a new encryption algorithm strategy */ registerEncryption(strategy: EncryptionAlgorithmStrategy): void; /** * Register a new signing algorithm strategy */ registerSigning(strategy: SigningAlgorithmStrategy): void; /** * Get an encryption strategy for the given algorithm * @throws UnsupportedAlgorithmError if algorithm is not registered */ getEncryptionStrategy(algorithm: Algorithm): EncryptionAlgorithmStrategy; /** * Get a signing strategy for the given algorithm * @throws UnsupportedAlgorithmError if algorithm is not registered */ getSigningStrategy(algorithm: Algorithm): SigningAlgorithmStrategy; /** * Get all supported encryption algorithms */ getSupportedEncryptionAlgorithms(): Algorithm[]; /** * Get all supported signing algorithms */ getSupportedSigningAlgorithms(): Algorithm[]; /** * Check if an encryption algorithm is supported */ supportsEncryption(algorithm: Algorithm): boolean; /** * Check if a signing algorithm is supported */ supportsSigning(algorithm: Algorithm): boolean; } //# sourceMappingURL=registry.d.ts.map