/**
 * Plugin Manager for Modular FaceZK Architecture
 * Handles plugin lifecycle, dependencies, and communication
 */
import type { IPlugin, IPluginRegistry, IPluginManager, PluginState, PluginInfo, PluginConfig } from './interfaces';
export declare class PluginManager implements IPluginManager {
    readonly registry: IPluginRegistry;
    private pluginStates;
    private pluginDependencies;
    private pluginConfigs;
    private initializationQueue;
    private isInitializing;
    constructor();
    /**
     * Load and initialize a plugin
     */
    loadPlugin(pluginId: string, config: any): Promise<void>;
    /**
     * Unload and dispose a plugin
     */
    unloadPlugin(pluginId: string): Promise<void>;
    /**
     * Reload a plugin
     */
    reloadPlugin(pluginId: string): Promise<void>;
    /**
     * Get plugin state
     */
    getPluginState(pluginId: string): PluginState;
    /**
     * Load multiple plugins with dependency resolution
     */
    loadPlugins(pluginConfigs: PluginConfig[]): Promise<void>;
    /**
     * Get all plugins of a specific type
     */
    getPluginsByType<T extends IPlugin>(type: string): T[];
    /**
     * Check if all required plugins are ready
     */
    arePluginsReady(pluginIds: string[]): boolean;
    /**
     * Get plugin information
     */
    getPluginInfo(pluginId: string): PluginInfo | null;
    /**
     * List all plugins with their states
     */
    listPlugins(): PluginInfo[];
    /**
     * Validate plugin configurations
     */
    private validatePluginConfigs;
    /**
     * Build dependency graph
     */
    private buildDependencyGraph;
    /**
     * Check plugin dependencies
     */
    private checkDependencies;
    /**
     * Get plugins that depend on a specific plugin
     */
    private getDependents;
    /**
     * Detect circular dependencies
     */
    private detectCircularDependencies;
    /**
     * Find missing dependencies
     */
    private findMissingDependencies;
    /**
     * Topological sort for initialization order
     */
    private topologicalSort;
    /**
     * Get plugin type
     */
    private getPluginType;
}
//# sourceMappingURL=plugin-manager.d.ts.map