import type { AuditSink } from '../audit.js'; import { type CircuitBreakerConfig } from '../decorators/circuit-breaker.js'; import { type MetricsCollector } from '../decorators/metrics.js'; import { type RetryConfig } from '../decorators/retry.js'; import type { CryptoOperations, HealthMonitoring, KeyManagement, SignatureOperations } from '../interfaces/core.js'; import type { EncryptionProvider } from '../providers/base.js'; import type { PolicyChecker } from '../utils/policy.js'; /** * Provider factory options for composing providers with decorators */ export type ProviderFactoryOptions = { cryptoOps: CryptoOperations; signatureOps: SignatureOperations; keyMgmt: KeyManagement; health: HealthMonitoring; name: string; defaultKeyId: string; auditSink?: AuditSink; policyChecker?: PolicyChecker; retryConfig?: RetryConfig; metricsCollector?: MetricsCollector; circuitBreakerConfig?: CircuitBreakerConfig; }; /** * Factory that composes providers with decorators in the correct order * Decorator order (outermost to innermost): * 1. Metrics (for full latency including retries) * 2. Retry (before audit to avoid duplicate events) * 3. Audit (logs all attempts) * 4. Policy (enforces before operation) * 5. Core implementation * * @param options Provider configuration and decorators * @returns Configured and decorated encryption provider */ export declare function createProvider(options: ProviderFactoryOptions): EncryptionProvider; /** * Convenience factory for local provider with optional decorators * Simplifies common use case of creating a local provider with audit, policy, etc. * * @example * const provider = createDecoratedLocalProvider({ * auditSink: new ConsoleAuditSink(), * policyChecker: myPolicyChecker, * retryConfig: { maxAttempts: 3 }, * metricsCollector: prometheusCollector, * }); */ export declare function createDecoratedLocalProvider(options?: { defaultKeyId?: string; auditSink?: AuditSink; policyChecker?: PolicyChecker; retryConfig?: RetryConfig; metricsCollector?: MetricsCollector; circuitBreakerConfig?: CircuitBreakerConfig; }): EncryptionProvider; //# sourceMappingURL=provider-factory.d.ts.map