import { EventEmitter } from "node:events"; import { type IPlugin, type AppEvents, type BunWorkerOptions as WorkerOptions, type OnResolveArgs, type OnLoadArgs, type IPluginManager } from "./types"; import { HooksManager } from "./managers/HooksManager"; export declare class PluginManager extends EventEmitter implements IPluginManager { private plugins; private availablePlugins; private configs; private pluginApis; private pluginFilePaths; private resources; private dependencyManager; hooksManager: HooksManager; private storageRoot; private hostVersion; private pluginLoadTimeout; private workerFactory; private workerRunnerPath; constructor(storageRoot?: string, options?: { pluginLoadTimeout?: number; workerFactory?: (url: string | URL, options?: WorkerOptions) => Worker; workerRunnerPath?: string; }); getWorkerFactory(): (url: string | URL, options?: WorkerOptions) => Worker; register(plugin: IPlugin): Promise; registerIsolated(pluginPath: string, pluginName: string): Promise; unregister(pluginName: string, clean?: boolean): Promise; getPlugin(name: string): IPlugin | undefined; /** * @param pluginName - Plugin name * @returns The absolute path of the plugin file, or undefined if not found */ getPluginPath(pluginName: string): string | undefined; /** * Get all plugin paths * @returns Map with plugin names as keys and their paths as values */ getAllPluginPaths(): Map; getApi(name: string): T | undefined; getPluginConfig(name: string): Record; setPluginConfig(name: string, config: Record): Record; listPlugins(): string[]; registerApi(pluginName: string, api: any): void; getPluginApi(pluginName: string): any | undefined; private unregisterApi; emit(eventName: K, payload: AppEvents[K]): boolean; emit(eventName: string | symbol, ...args: any[]): boolean; on(eventName: K & string, listener: (payload: AppEvents[K]) => void): this; on(eventName: string | symbol, listener: (...args: any[]) => void): this; once(eventName: K & string, listener: (payload: AppEvents[K]) => void): this; once(eventName: string | symbol, listener: (...args: any[]) => void): this; off(eventName: K & string, listener: (payload: AppEvents[K]) => void): this; off(eventName: string | symbol, listener: (...args: any[]) => void): this; loadPluginsFromDirectory(directoryPath?: string): Promise; disablePlugin(name: string): Promise; enablePlugin(name: string): Promise; reloadPlugin(name: string): Promise; private updatePluginState; runOnResolve(args: OnResolveArgs): Promise<{ path: string; namespace?: string; } | null>; runOnLoad(args: OnLoadArgs): Promise<{ contents?: string; loader?: string; } | null>; use(plugin: IPlugin): Promise; plugin(plugin: IPlugin): Promise; remove(pluginName: string): Promise; toBunPlugin(): Bun.BunPlugin; private hotReloadTimer; enableHotReload(pluginDir: string): void; getMetrics(): { totalPlugins: number; activePlugins: string[]; resources: { totalWorkers: number; totalTimers: number; totalListeners: number; pluginCount: number; }; hooks: { onStart: number; onResolve: number; onLoad: number; }; }; getPluginStatus(): Record; private ensureDependenciesInstalled; } //# sourceMappingURL=PluginManager.d.ts.map