/** * PluginManager * * Manages plugin registration and lifecycle. * Executes plugin hooks at appropriate points. */ import { HttpRequest, HttpResponse } from '../types'; import { IPlugin, PluginContext, PluginInfo } from './IPlugin'; export declare class PluginManager { private plugins; /** * Get the number of registered plugins */ getPluginCount(): number; /** * Check if a plugin is registered * @param name Plugin name */ hasPlugin(name: string): boolean; /** * Register a plugin * @param plugin The plugin to register * @param context Optional context for initialization * @throws Error if plugin with same name already registered */ register(plugin: IPlugin, context?: PluginContext): Promise; /** * Unregister a plugin * @param name Plugin name */ unregister(name: string): Promise; /** * List all registered plugins */ listPlugins(): PluginInfo[]; /** * Execute beforeRequest hooks for all plugins * @param request The HTTP request * @param context Plugin context * @returns Modified request */ executeBeforeRequest(request: HttpRequest, context: PluginContext): Promise; /** * Execute afterResponse hooks for all plugins * @param request The original request * @param response The HTTP response * @param context Plugin context */ executeAfterResponse(request: HttpRequest, response: HttpResponse, context: PluginContext): Promise; /** * Destroy all plugins */ destroyAll(): Promise; }