import { ConfigurationService } from "../services/configurationService.js";
import { PluginManager } from "./pluginManager.js";
import { Logger } from "../types/index.js";
import { Scope } from "../types/configuration.js";
export interface PluginScopeManagerOptions {
    workdir: string;
    configurationService: ConfigurationService;
    pluginManager: PluginManager;
    logger?: Logger;
}
export declare class PluginScopeManager {
    private workdir;
    private configurationService;
    private pluginManager;
    private logger?;
    constructor(options: PluginScopeManagerOptions);
    /**
     * Enable a plugin in the specified scope
     */
    enablePlugin(scope: Scope, pluginId: string): Promise<void>;
    /**
     * Disable a plugin in the specified scope
     */
    disablePlugin(scope: Scope, pluginId: string): Promise<void>;
    /**
     * Get the merged enabled state of all plugins
     */
    getMergedEnabledPlugins(): Record<string, boolean>;
    /**
     * Find the scope where a plugin is currently enabled/disabled.
     * Priority: local > project > user
     */
    findPluginScope(pluginId: string): Scope | null;
    /**
     * Remove a plugin from all scopes (user, project, local)
     * This is useful when uninstalling a plugin to clean up all configuration
     */
    removePluginFromAllScopes(pluginId: string): Promise<void>;
    /**
     * Refresh the plugin manager with the latest configuration
     * Note: This only updates the configuration, it doesn't reload plugins.
     * Reloading plugins might require a more complex logic (unloading/loading).
     */
    private refreshPluginManager;
}
//# sourceMappingURL=pluginScopeManager.d.ts.map