import { Express } from 'express';
import { Logger } from '../logging/Logger';
import { Plugin } from './Plugin';
import { PluginConfig } from '../types';
export interface PluginRegistration {
    plugin: Plugin;
    config?: PluginConfig;
    enabled?: boolean;
}
export declare class PluginManager {
    private plugins;
    private loadOrder;
    private logger;
    constructor(logger?: Logger);
    /**
     * Register a plugin with optional configuration
     */
    register(plugin: Plugin, config?: PluginConfig, enabled?: boolean): this;
    /**
     * Get a registered plugin by name
     */
    get(name: string): Plugin | undefined;
    /**
     * Check if a plugin is registered and enabled
     */
    has(name: string): boolean;
    /**
     * Enable a plugin
     */
    enable(name: string): boolean;
    /**
     * Disable a plugin
     */
    disable(name: string): boolean;
    /**
     * Get list of all registered plugins
     */
    list(): {
        name: string;
        version: string;
        enabled: boolean;
    }[];
    /**
     * Sort plugins by their dependencies to determine load order
     */
    private calculateLoadOrder;
    /**
     * Initialize all registered and enabled plugins in dependency order
     */
    initializeAll(app: Express): Promise<void>;
    /**
     * Get the load order of plugins (useful for debugging)
     */
    getLoadOrder(): string[];
    /**
     * Clear all registered plugins
     */
    clear(): void;
}
//# sourceMappingURL=PluginManager.d.ts.map