/**
 * 路由适配器类型定义
 */
import type { RouteConfig, RouteLocation, NavigateOptions } from '../types';
import type { AppInstance } from '../../startup/AppInstance';
/**
 * 路由适配器接口
 * 所有路由库适配器都必须实现此接口
 */
export interface IRouterAdapter {
    /**
     * 适配器名称
     */
    readonly name: string;
    /**
     * 适配器版本
     */
    readonly version?: string;
    /**
     * 初始化适配器
     *
     * @param config - 路由配置
     * @returns Promise<void>
     */
    initialize(config: RouterAdapterConfig): Promise<void>;
    /**
     * 挂载到应用实例
     *
     * @param app - 应用实例
     */
    mount(app: AppInstance): void;
    /**
     * 导航到指定路径
     *
     * @param to - 目标路径或路由名称
     * @param options - 导航选项
     */
    navigate(to: string, options?: NavigateOptions): void | Promise<void>;
    /**
     * 获取当前路由信息
     *
     * @returns 当前路由位置信息
     */
    getCurrentRoute(): RouteLocation;
    /**
     * 销毁适配器
     */
    destroy?(): void;
}
/**
 * 路由适配器配置
 */
export interface RouterAdapterConfig {
    /**
     * 路由配置列表
     */
    routes: RouteConfig[];
    /**
     * 路由模式
     */
    mode?: 'browser' | 'hash' | 'memory';
    /**
     * 适配器特定选项
     */
    options?: Record<string, unknown>;
    /**
     * 默认路由错误组件
     *
     * 当路由配置中的 `errors` 为空时，将使用此组件作为错误边界。
     * 如果不提供，将使用框架内置的 `RouteErrorBoundary` 组件。
     *
     * 组件必须使用默认导出（export default）。
     */
    defaultRouteErrorComponent?: import('../types').ComponentImport;
    /**
     * 默认路由加载组件
     *
     * 当路由配置中的 `loading` 为空时，将使用此组件作为加载指示器。
     * 如果不提供，将使用 antd 的 `Spin` 组件。
     *
     * 组件必须使用默认导出（export default）。
     */
    defaultRouteLoadingComponent?: import('../types').ComponentImport;
}
/**
 * 路由适配器工厂函数
 */
export type RouterAdapterFactory = (config: RouterAdapterConfig) => IRouterAdapter | Promise<IRouterAdapter>;
/**
 * 适配器注册信息
 */
export interface AdapterRegistration {
    /**
     * 适配器名称
     */
    name: string;
    /**
     * 适配器工厂函数
     */
    factory: RouterAdapterFactory;
    /**
     * 适配器优先级（数字越小优先级越高）
     * @default 100
     */
    priority?: number;
    /**
     * 是否启用
     * @default true
     */
    enabled?: boolean;
}
//# sourceMappingURL=types.d.ts.map