/**
 * VGrove 标准化 Loader 工具
 * 提供基于 React Router v6+ loader 模式的标准化认证和权限检查
 * 替代原有的 RouteProtectionWrapper、RuntimeExecutor 等复杂系统
 */
import { type LoaderFunction } from 'react-router';
import type { BaseUser } from './types';
/**
 * 认证检查函数类型
 */
export type AuthCheck<TUser extends BaseUser = BaseUser> = () => Promise<TUser | null> | TUser | null;
/**
 * 角色检查函数类型
 */
export type RoleCheck<TUser extends BaseUser = BaseUser> = (user: TUser, requiredRoles: string[]) => boolean;
/**
 * 权限检查函数类型
 */
export type PermissionCheck<TUser extends BaseUser = BaseUser> = (user: TUser, requiredPermissions: string[]) => boolean;
/**
 * Loader 配置选项
 */
export interface LoaderOptions<TUser extends BaseUser = BaseUser> {
    /** 认证检查函数 */
    authCheck?: AuthCheck<TUser>;
    /** 角色检查函数 */
    roleCheck?: RoleCheck<TUser>;
    /** 权限检查函数 */
    permissionCheck?: PermissionCheck<TUser>;
    /** 未认证时的重定向路径 */
    loginPath?: string;
    /** 权限不足时的重定向路径 */
    forbiddenPath?: string;
    /** 公共路径列表（无需认证） */
    publicPaths?: string[];
}
/**
 * 配置全局 loader 选项
 */
export declare function configureLoaders<TUser extends BaseUser = BaseUser>(options: LoaderOptions<TUser>): void;
/**
 * 创建认证 loader
 * 检查用户是否已认证，未认证则重定向到登录页
 */
export declare function createAuthLoader<TUser extends BaseUser = BaseUser>(options?: Partial<LoaderOptions<TUser>>): LoaderFunction;
/**
 * 创建角色检查 loader
 * 检查用户是否具有所需角色
 */
export declare function createRoleLoader<TUser extends BaseUser = BaseUser>(requiredRoles: string[], options?: Partial<LoaderOptions<TUser>>): LoaderFunction;
/**
 * 创建权限检查 loader
 * 检查用户是否具有所需权限
 */
export declare function createPermissionLoader<TUser extends BaseUser = BaseUser>(requiredPermissions: string[], options?: Partial<LoaderOptions<TUser>>): LoaderFunction;
/**
 * 创建组合 loader
 * 同时检查认证、角色和权限
 */
export declare function createCombinedLoader<TUser extends BaseUser = BaseUser>(config: {
    roles?: string[];
    permissions?: string[];
    requireAll?: boolean;
}, options?: Partial<LoaderOptions<TUser>>): LoaderFunction;
/**
 * 创建自定义 loader
 * 允许用户定义自己的检查逻辑
 */
export declare function createCustomLoader<TUser extends BaseUser = BaseUser>(checkFunction: (user: TUser, request: Request) => Promise<boolean> | boolean, options?: Partial<LoaderOptions<TUser>>): LoaderFunction;
/**
 * 组合多个 loader
 * 按顺序执行多个 loader，任何一个失败都会中断
 */
export declare function combineLoaders(...loaders: LoaderFunction[]): LoaderFunction;
//# sourceMappingURL=loaders.d.ts.map