/**
 * TODO: DECLARATIVE PROGRAMMING PATTERN
 *
 * This file demonstrates excellent declarative programming practices:
 * - Pure functions with immutable data structures (Map)
 * - Functional array methods (filter, map, every)
 * - Immutable data transformations
 * - Object spread operator for composition
 * - No imperative loops or state mutations
 * - Clear data flow with Array.from()
 *
 * Mutation Score: 89.66% - Functional patterns make testing predictable!
 */
import { PluginMetadata } from '../../shared/types';
import { BasePlugin } from './base/BasePlugin';
interface PluginManagerOptions {
    autoLoad?: boolean;
}
export declare class PluginManager {
    private plugins;
    private options;
    constructor(options?: PluginManagerOptions);
    /**
     * Register a plugin
     */
    registerPlugin(plugin: BasePlugin): void;
    /**
     * Get a plugin by name
     */
    getPlugin(name: string): BasePlugin | undefined;
    /**
     * Get all enabled plugins
     */
    getEnabledPlugins(): BasePlugin[];
    /**
     * Get all plugins (enabled and disabled)
     */
    getAllPlugins(): BasePlugin[];
    /**
     * Enable or disable a plugin
     */
    setPluginEnabled(name: string, enabled: boolean): boolean;
    /**
     * Get plugin metadata
     */
    getPluginMetadata(name: string): PluginMetadata | undefined;
    /**
     * List all available plugins
     */
    listPlugins(): Array<{
        name: string;
        metadata: PluginMetadata;
    }>;
    /**
     * Get plugin health status
     */
    getHealth(): Promise<{
        healthy: boolean;
        plugins: any[];
    }>;
}
export {};
//# sourceMappingURL=PluginManager.d.ts.map