/** * Presenter Registry - Manages command-specific presenters * * Implements Open/Closed Principle: new presenters can be added * without modifying existing code. */ import type { ConsoleOutput } from '../../output/console-output.js'; import type { MarkdownRenderer } from '../../output/markdown.js'; import type { CommandPresenter } from './base-presenter.js'; /** * Factory function type for creating presenters */ type PresenterFactory = (console: ConsoleOutput, renderer: MarkdownRenderer) => CommandPresenter; /** * Registry for command-specific presenters */ export declare class PresenterRegistry { private readonly cache; private readonly console; private readonly factories; private readonly renderer; constructor(console: ConsoleOutput, renderer: MarkdownRenderer); /** * Register default command presenters */ private registerDefaultPresenters; /** * Register a presenter factory for a command */ register(commandName: string, factory: PresenterFactory): void; /** * Check if a presenter exists for a command */ has(commandName: string): boolean; /** * Get the presenter for a command * Returns undefined if no presenter is registered */ get(commandName: string): CommandPresenter | undefined; /** * Display command summary using the appropriate presenter * Returns true if a presenter was found and used */ displaySummary(commandName: string, outputs: Record): boolean; /** * Get list of registered command names */ getRegisteredCommands(): string[]; } export {}; //# sourceMappingURL=presenter-registry.d.ts.map