/**
 * 路由插件管理器
 * 负责插件的注册、执行和生命周期管理
 */
import type { RouterPlugin, PluginContext, PluginRegisterOptions } from './types';
import { PluginLifecycleStage } from './types';
/**
 * 路由插件管理器
 */
export declare class RouterPluginManager {
    private plugins;
    /**
     * 注册插件
     *
     * @param plugin - 插件实例
     * @param options - 注册选项
     * @returns 取消注册函数
     */
    register(plugin: RouterPlugin, options?: PluginRegisterOptions): () => void;
    /**
     * 批量注册插件
     *
     * @param plugins - 插件数组
     * @param options - 注册选项
     */
    registerBatch(plugins: RouterPlugin[], options?: PluginRegisterOptions): void;
    /**
     * 按依赖关系排序插件（拓扑排序）
     */
    private sortByDependencies;
    /**
     * 取消注册插件
     *
     * @param name - 插件名称
     */
    unregister(name: string): void;
    /**
     * 执行插件钩子
     *
     * @param stage - 生命周期阶段
     * @param context - 插件上下文
     */
    executeHooks(stage: PluginLifecycleStage, context: PluginContext): Promise<void>;
    /**
     * 获取插件
     *
     * @param name - 插件名称
     * @returns 插件实例，如果不存在返回 undefined
     */
    getPlugin(name: string): RouterPlugin | undefined;
    /**
     * 获取所有插件
     *
     * @returns 插件数组
     */
    getAllPlugins(): RouterPlugin[];
    /**
     * 获取启用的插件
     *
     * @returns 启用的插件数组
     */
    getEnabledPlugins(): RouterPlugin[];
    /**
     * 清空所有插件
     */
    clear(): void;
    /**
     * 获取插件数量
     *
     * @returns 插件数量
     */
    getCount(): number;
}
export declare function getRouterPluginManager(): RouterPluginManager;
//# sourceMappingURL=RouterPluginManager.d.ts.map