import type { EnvironmentSpec } from "../../types.js"; /** * Plugin lifecycle event hooks */ export type PluginHooks = { "before:provision"?: (spec: EnvironmentSpec) => Promise; "after:provision"?: (spec: EnvironmentSpec, result: unknown) => Promise; "before:snapshot"?: (spec: EnvironmentSpec) => Promise; "after:snapshot"?: (spec: EnvironmentSpec, snapshot: unknown) => Promise; "before:doctor"?: (spec: EnvironmentSpec) => Promise; "after:doctor"?: (spec: EnvironmentSpec, report: unknown) => Promise; "before:destroy"?: (spec: EnvironmentSpec) => Promise; "after:destroy"?: (spec: EnvironmentSpec, result: unknown) => Promise; }; /** * Plugin interface with lifecycle hooks */ export type Plugin = { readonly name: string; readonly version?: string; readonly hooks?: Partial; }; /** * Plugin Manager with lifecycle hook support * Enables plugins to hook into key operations */ export declare class PluginManager { private readonly plugins; private readonly logger; /** * Register a plugin */ register(plugin: Plugin): void; /** * Unregister a plugin */ unregister(name: string): void; /** * Get a plugin */ get(name: string): Plugin | undefined; /** * Get all plugins */ getAll(): Plugin[]; /** * Execute hook for all plugins */ executeHook(hookName: K, ...args: Parameters>): Promise; /** * Execute pre-operation hook */ executeBeforeHook(hookName: Extract, spec: EnvironmentSpec): Promise; /** * Execute post-operation hook */ executeAfterHook(hookName: Extract, spec: EnvironmentSpec, result: unknown): Promise; /** * Clear all plugins */ clear(): void; } /** * Get the global plugin manager */ export declare function getPluginManager(): PluginManager; //# sourceMappingURL=plugin-manager.d.ts.map