import type { CliRenderer } from "../renderer.js"; import type { Plugin, PluginContext, PluginErrorEvent, PluginErrorReport, ResolvedSlotRenderer, SlotRenderer } from "./types.js"; export interface SlotRegistryOptions { onPluginError?: (event: PluginErrorEvent) => void; debugPluginErrors?: boolean; maxPluginErrors?: number; } export declare class SlotRegistry { private plugins; private sortedPluginsCache; private listeners; private errorListeners; private pluginErrors; private registrationOrder; private batchDepth; private batchedNotify; private rendererInstance; private hostContext; private options; constructor(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions); get renderer(): CliRenderer; get context(): Readonly; configure(options: SlotRegistryOptions): void; register(plugin: Plugin): () => void; unregister(id: string): boolean; updateOrder(id: string, order: number): boolean; clear(): void; subscribe(listener: () => void): () => void; onPluginError(listener: (event: PluginErrorEvent) => void): () => void; batch(run: () => T): T; getPluginErrors(): readonly PluginErrorEvent[]; clearPluginErrors(): void; reportPluginError(report: PluginErrorReport): PluginErrorEvent; resolve(slot: K): Array>; resolveEntries(slot: K): Array>; private getSortedPlugins; private syncPluginSortMetadata; private invalidateSortedPluginsCache; private notifyListeners; private flushListeners; } export declare function createSlotRegistry(renderer: CliRenderer, key: string, context: TContext, options?: SlotRegistryOptions): SlotRegistry;