/**
 * VGrove 增强的 Loader 和 Action 创建器
 * 集成中间件系统的高级路由处理功能
 */
import { type LoaderFunctionArgs, type ActionFunctionArgs } from 'react-router';
import { type MiddlewareFunction, type GuardFailureConfig } from './middleware';
import type { AuthCheck } from './loaders';
import type { BaseUser } from './types';
/**
 * 增强的 Loader 配置
 */
export interface EnhancedLoaderConfig<TUser extends BaseUser = BaseUser> {
    /** 原始 loader 函数 */
    loader?: (args: LoaderFunctionArgs) => any;
    /** 中间件列表 */
    middlewares?: MiddlewareFunction<TUser>[];
    /** 认证检查函数 */
    authCheck?: AuthCheck<TUser>;
    /** 必需的角色 */
    requiredRoles?: string[];
    /** 必需的权限 */
    requiredPermissions?: string[];
    /** 守卫失败配置 */
    guardFailureConfig?: GuardFailureConfig;
    /** 是否跳过全局中间件 */
    skipGlobalMiddlewares?: boolean;
    /** 自定义错误处理 */
    errorHandler?: (error: any, args: LoaderFunctionArgs) => any;
    /** 数据转换器 */
    dataTransformer?: (data: any) => any;
    /** 缓存配置 */
    cache?: {
        enabled: boolean;
        ttl?: number;
        key?: (args: LoaderFunctionArgs) => string;
    };
}
/**
 * 增强的 Action 配置
 */
export interface EnhancedActionConfig<TUser extends BaseUser = BaseUser> {
    /** 原始 action 函数 */
    action?: (args: ActionFunctionArgs) => any;
    /** 中间件列表 */
    middlewares?: MiddlewareFunction<TUser>[];
    /** 认证检查函数 */
    authCheck?: AuthCheck<TUser>;
    /** 必需的角色 */
    requiredRoles?: string[];
    /** 必需的权限 */
    requiredPermissions?: string[];
    /** 守卫失败配置 */
    guardFailureConfig?: GuardFailureConfig;
    /** 是否跳过全局中间件 */
    skipGlobalMiddlewares?: boolean;
    /** 自定义错误处理 */
    errorHandler?: (error: any, args: ActionFunctionArgs) => any;
    /** 数据验证器 */
    validator?: (formData: FormData) => Promise<any> | any;
    /** 成功重定向路径 */
    successRedirect?: string | ((result: any) => string);
    /** 失败重定向路径 */
    failureRedirect?: string | ((error: any) => string);
}
/**
 * 创建增强的 Loader
 */
export declare function createEnhancedLoader<TUser extends BaseUser = BaseUser>(config: EnhancedLoaderConfig<TUser>): (args: LoaderFunctionArgs) => Promise<any>;
/**
 * 创建增强的 Action
 */
export declare function createEnhancedAction<TUser extends BaseUser = BaseUser>(config: EnhancedActionConfig<TUser>): (args: ActionFunctionArgs) => Promise<any>;
/**
 * 便捷函数：创建带认证的 Loader
 */
export declare function createAuthenticatedLoader<TUser extends BaseUser = BaseUser>(loader: (args: LoaderFunctionArgs) => any, authCheck: AuthCheck<TUser>, options?: Partial<EnhancedLoaderConfig<TUser>>): (args: LoaderFunctionArgs) => Promise<any>;
/**
 * 便捷函数：创建带角色检查的 Loader
 */
export declare function createRoleBasedLoader<TUser extends BaseUser = BaseUser>(loader: (args: LoaderFunctionArgs) => any, requiredRoles: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedLoaderConfig<TUser>>): (args: LoaderFunctionArgs) => Promise<any>;
/**
 * 便捷函数：创建带权限检查的 Loader
 */
export declare function createPermissionBasedLoader<TUser extends BaseUser = BaseUser>(loader: (args: LoaderFunctionArgs) => any, requiredPermissions: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedLoaderConfig<TUser>>): (args: LoaderFunctionArgs) => Promise<any>;
/**
 * 便捷函数：创建带认证的 Action
 */
export declare function createAuthenticatedAction<TUser extends BaseUser = BaseUser>(action: (args: ActionFunctionArgs) => any, authCheck: AuthCheck<TUser>, options?: Partial<EnhancedActionConfig<TUser>>): (args: ActionFunctionArgs) => Promise<any>;
/**
 * 便捷函数：创建带角色检查的 Action
 */
export declare function createRoleBasedAction<TUser extends BaseUser = BaseUser>(action: (args: ActionFunctionArgs) => any, requiredRoles: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedActionConfig<TUser>>): (args: ActionFunctionArgs) => Promise<any>;
/**
 * 便捷函数：创建带权限检查的 Action
 */
export declare function createPermissionBasedAction<TUser extends BaseUser = BaseUser>(action: (args: ActionFunctionArgs) => any, requiredPermissions: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedActionConfig<TUser>>): (args: ActionFunctionArgs) => Promise<any>;
/**
 * 清除所有缓存
 */
export declare function clearAllCache(): void;
/**
 * 获取缓存统计信息
 */
export declare function getCacheStats(): {
    size: number;
};
//# sourceMappingURL=enhanced-loaders.d.ts.map