/**
 * Plugin loader and management service
 */
import { Plugin, PluginManifest, PluginRegistry, PluginContext } from '../types/plugin.js';
import { Logger } from './logger.js';
/**
 * Plugin loader - discovers, loads, and manages ACE CLI plugins
 *
 * Plugins are stored in ~/.ace/plugins/
 * Plugin registry is stored in ~/.ace/plugins.json
 */
export declare class PluginLoader {
    private pluginsDir;
    private registryFile;
    private registry;
    private loadedPlugins;
    private logger;
    constructor(logger: Logger);
    /**
     * Load plugin registry from disk
     */
    private loadRegistry;
    /**
     * Save plugin registry to disk
     */
    private saveRegistry;
    /**
     * Get plugin registry
     */
    getRegistry(): PluginRegistry;
    /**
     * Discover all plugins in plugins directory
     */
    discoverPlugins(): PluginManifest[];
    /**
     * Load plugin manifest from directory
     */
    private loadManifest;
    /**
     * Load and activate a plugin
     */
    loadPlugin(name: string, context: PluginContext): Promise<Plugin>;
    /**
     * Check if plugin is trusted
     */
    isTrusted(manifest: PluginManifest): boolean;
    /**
     * Check if plugin is enabled
     */
    isEnabled(name: string): boolean;
    /**
     * Trust a plugin
     */
    trustPlugin(name: string, version: string): void;
    /**
     * Untrust a plugin
     */
    untrustPlugin(name: string): void;
    /**
     * Enable a plugin
     */
    enablePlugin(name: string): void;
    /**
     * Disable a plugin
     */
    disablePlugin(name: string): void;
    /**
     * Get loaded plugin
     */
    getPlugin(name: string): Plugin | undefined;
    /**
     * List all loaded plugins
     */
    listLoadedPlugins(): Plugin[];
    /**
     * Execute a plugin command
     */
    executePluginCommand(pluginName: string, commandName: string, args: any[], context: PluginContext): Promise<any>;
}
/**
 * Get the global plugin loader instance
 */
export declare function getPluginLoader(logger: Logger): PluginLoader;
//# sourceMappingURL=plugin-loader.d.ts.map