/** * Plugin Manager * * Orchestrates plugin execution through request/response lifecycle */ import type { Client } from '@elastic/elasticsearch'; import type { Plugin, PluginContext, PluginResponse, PluginErrorContext, PluginStats, PluginManagerConfig } from './types.js'; /** * Plugin Manager */ export declare class PluginManager { private plugins; private pluginStats; private config; private logger; private metrics; private client?; constructor(config?: PluginManagerConfig); /** * Set the Elasticsearch client */ setClient(client: Client): void; /** * Register a plugin */ register(plugin: Plugin): Promise; /** * Unregister a plugin */ unregister(name: string): Promise; /** * Get a registered plugin */ getPlugin(name: string): Plugin | undefined; /** * Get all registered plugins */ getPlugins(): Plugin[]; /** * Get plugins sorted by priority */ private getSortedPlugins; /** * Execute beforeRequest hooks */ executeBeforeRequest(context: PluginContext): Promise; /** * Execute afterResponse hooks */ executeAfterResponse(context: PluginContext, response: PluginResponse): Promise>; /** * Execute onError hooks */ executeOnError(errorContext: PluginErrorContext): Promise; /** * Get plugin statistics */ getStats(): Map; /** * Clear plugin statistics */ clearStats(): void; /** * Destroy all plugins */ destroy(): Promise; /** * Execute a function with timeout */ private executeWithTimeout; /** * Update hook statistics */ private updateHookStats; } /** * Create a plugin manager */ export declare function createPluginManager(config?: PluginManagerConfig): PluginManager;