import type { PluginRegistry } from '../registry/plugin/index.js';
import type { PluginId } from '../types/ids/index.js';
import type { PluginDefinition, PluginEventListener, PluginHookContext, PluginHookEvent, PluginHookResult, PluginScope } from '../types/plugin/index.js';
import type { RunEvent } from '../types/run/index.js';
import type { ToolRegistryContract } from '../types/tool/index.js';
import type { Logger } from '../utils/logger.js';
export interface PluginLifecycleManagerConfig {
    pluginRegistry: PluginRegistry;
    toolRegistry: ToolRegistryContract;
    log: Logger;
    hookTimeoutMs?: number;
}
export declare class PluginLifecycleManager {
    private pluginRegistry;
    private toolRegistry;
    private listeners;
    private hookHandlers;
    private pluginContributions;
    private hookTimeoutMs;
    private log;
    constructor(config: PluginLifecycleManagerConfig);
    on(listener: PluginEventListener): void;
    off(listener: PluginEventListener): void;
    install(pluginDir: string, scope: PluginScope): Promise<PluginDefinition>;
    enable(pluginId: PluginId): Promise<void>;
    private attachMCPServer;
    private rollbackContributions;
    disable(pluginId: PluginId): Promise<void>;
    uninstall(pluginId: PluginId): Promise<void>;
    executeHooks(event: PluginHookEvent, context: Omit<PluginHookContext, 'pluginId' | 'event'>, emitRunEvent?: (event: RunEvent) => Promise<void>): Promise<PluginHookResult[]>;
    private emit;
}
//# sourceMappingURL=lifecycle.d.ts.map