/** * RendererRegistry * * Manages renderer adapters (similar to AdapterRegistry for storage). * Config-driven system for registering and selecting renderers. * * Features: * - Register multiple renderers * - Select renderer by format and priority * - Health checks * - Failover support * - Enable/disable renderers dynamically */ import type { OUTPUT_FORMAT, ADAPTER_HEALTH_STATUS, StorageRendererRegistryConfig } from '@plyaz/types/storage'; import type { BaseRendererAdapter } from '../base/BaseRendererAdapter'; /** * RendererRegistry * * Central registry for managing renderer adapters. * * @example * ```typescript * const registry = new RendererRegistry({ logger: myLogger }); * * // Register renderers * registry.register(puppeteerRenderer); * registry.register(pdfkitRenderer); * * // Get renderer for PDF format * const renderer = registry.getRenderer(OUTPUT_FORMAT.PDF); * * // Render * const result = await renderer.render(options); * ``` */ export declare class RendererRegistry { private readonly renderers; private readonly logger?; private healthCheckInterval?; constructor(config?: StorageRendererRegistryConfig); /** * Register a renderer adapter * * @param renderer - Renderer adapter to register */ register(renderer: BaseRendererAdapter): void; /** * Unregister a renderer * * @param name - Renderer name */ unregister(name: string): void; /** * Get renderer by name * * @param name - Renderer name * @returns Renderer adapter * @throws StoragePackageError if not found */ getRendererByName(name: string): BaseRendererAdapter; /** * Get best renderer for output format * * Selects based on: * 1. Format support * 2. Enabled status * 3. Priority (highest first) * 4. Health status (prefer healthy) * * @param format - Desired output format * @returns Renderer adapter * @throws StoragePackageError if no suitable renderer found */ getRenderer(format: OUTPUT_FORMAT): BaseRendererAdapter; /** * Get fallback renderer (skip specific renderer) * * @param format - Output format * @param skipRendererName - Renderer to skip * @returns Fallback renderer * @throws StoragePackageError if no fallback found */ getFallbackRenderer(format: OUTPUT_FORMAT, skipRendererName: string): BaseRendererAdapter; /** * Get all registered renderers */ getAllRenderers(): BaseRendererAdapter[]; /** * Get renderers by format * * @param format - Output format * @returns Array of renderers supporting this format */ getRenderersByFormat(format: OUTPUT_FORMAT): BaseRendererAdapter[]; /** * Check health of all renderers */ checkAllRenderersHealth(): Promise; /** * Get health summary for all renderers */ getHealthSummary(): { totalRenderers: number; healthy: number; degraded: number; unhealthy: number; unknown: number; renderers: Array<{ name: string; type: string; status: ADAPTER_HEALTH_STATUS; lastCheck?: Date; }>; }; /** * Setup automatic health checks * @private */ private setupHealthChecks; /** * Cleanup resources */ destroy(): Promise; }