/**
 * 路由插件类型定义
 */
import type { RouterConfig, RouteConfig } from '../types';
import type { RouterMiddlewareContext } from '../middleware/types';
/**
 * 插件生命周期阶段
 */
export declare enum PluginLifecycleStage {
    /**
     * 插件注册阶段
     */
    REGISTER = "register",
    /**
     * 路由初始化前
     */
    BEFORE_INIT = "before-init",
    /**
     * 路由初始化后
     */
    AFTER_INIT = "after-init",
    /**
     * 路由转换前
     */
    BEFORE_TRANSFORM = "before-transform",
    /**
     * 路由转换后
     */
    AFTER_TRANSFORM = "after-transform",
    /**
     * 路由匹配前
     */
    BEFORE_MATCH = "before-match",
    /**
     * 路由匹配后
     */
    AFTER_MATCH = "after-match",
    /**
     * 插件销毁阶段
     */
    DESTROY = "destroy"
}
/**
 * 插件上下文
 */
export interface PluginContext {
    /**
     * 路由配置
     */
    config: RouterConfig;
    /**
     * 转换后的路由
     */
    routes?: RouteConfig[];
    /**
     * 中间件上下文（在路由匹配时可用）
     */
    middlewareContext?: RouterMiddlewareContext;
    /**
     * 插件元数据
     */
    meta?: Record<string, unknown>;
}
/**
 * 插件钩子函数
 */
export type PluginHook = (context: PluginContext) => void | Promise<void>;
/**
 * 路由插件接口
 */
export interface RouterPlugin {
    /**
     * 插件名称（唯一标识）
     */
    name: string;
    /**
     * 插件版本
     */
    version?: string;
    /**
     * 插件描述
     */
    description?: string;
    /**
     * 插件优先级（数字越小优先级越高）
     * @default 100
     */
    priority?: number;
    /**
     * 是否启用
     * @default true
     */
    enabled?: boolean;
    /**
     * 插件依赖（其他插件名称列表）
     */
    dependencies?: string[];
    /**
     * 插件配置
     */
    config?: Record<string, unknown>;
    /**
     * 生命周期钩子
     */
    hooks?: {
        /**
         * 插件注册时调用
         */
        onRegister?: PluginHook;
        /**
         * 路由初始化前调用
         */
        onBeforeInit?: PluginHook;
        /**
         * 路由初始化后调用
         */
        onAfterInit?: PluginHook;
        /**
         * 路由转换前调用
         */
        onBeforeTransform?: PluginHook;
        /**
         * 路由转换后调用
         */
        onAfterTransform?: PluginHook;
        /**
         * 路由匹配前调用
         */
        onBeforeMatch?: PluginHook;
        /**
         * 路由匹配后调用
         */
        onAfterMatch?: PluginHook;
        /**
         * 插件销毁时调用
         */
        onDestroy?: PluginHook;
    };
}
/**
 * 插件注册选项
 */
export interface PluginRegisterOptions {
    /**
     * 是否覆盖已存在的插件
     * @default false
     */
    overwrite?: boolean;
    /**
     * 插件配置
     */
    config?: Record<string, unknown>;
}
//# sourceMappingURL=types.d.ts.map