/**
 * VGrove 标准化 Action 工具
 * 提供基于 React Router v7+ action 模式的标准化表单处理和数据变更
 * 替代原有的复杂中间件系统
 */
import { type ActionFunction } from 'react-router';
import type { AuthCheck } from './loaders';
import type { BaseUser } from './types';
/**
 * 表单验证错误
 */
export interface ValidationError {
    field: string;
    message: string;
}
/**
 * Action 响应类型
 */
export interface ActionResponse<T = unknown> {
    success: boolean;
    data?: T;
    errors?: ValidationError[];
    message?: string;
}
/**
 * 表单验证函数类型
 */
export type FormValidator = (formData: FormData) => Promise<ValidationError[]> | ValidationError[];
/**
 * 数据处理函数类型
 */
export type DataProcessor<TUser extends BaseUser = BaseUser, TReturn = unknown> = (formData: FormData, user?: TUser) => Promise<TReturn> | TReturn;
/**
 * Action 配置选项
 */
export interface ActionOptions<TUser extends BaseUser = BaseUser, TReturn = unknown> {
    /** 表单验证函数 */
    validator?: FormValidator;
    /** 数据处理函数 */
    processor?: DataProcessor<TUser, TReturn>;
    /** 成功后的重定向路径 */
    successRedirect?: string;
    /** 失败后的重定向路径 */
    errorRedirect?: string;
    /** 是否需要认证 */
    requireAuth?: boolean;
    /** 需要的角色 */
    requiredRoles?: string[];
    /** 需要的权限 */
    requiredPermissions?: string[];
    /** 认证检查函数 */
    authCheck?: AuthCheck<TUser>;
}
/**
 * 配置全局 action 选项
 */
export declare function configureActions<TUser extends BaseUser = BaseUser>(options: Partial<ActionOptions<TUser>>): void;
/**
 * 创建基础 action
 * 处理表单提交的基础逻辑
 */
export declare function createAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(options: ActionOptions<TUser, TReturn>): ActionFunction;
/**
 * 创建登录 action
 */
export declare function createLoginAction<TUser extends BaseUser = BaseUser, TCredentials = {
    username: string;
    password: string;
}, TReturn = unknown>(loginProcessor: (credentials: TCredentials) => Promise<{
    user: TUser;
    token: string;
}>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction;
/**
 * 创建注册 action
 */
export declare function createRegisterAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(registerProcessor: (userData: Record<string, unknown>) => Promise<{
    user: TUser;
    token: string;
}>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction;
/**
 * 创建登出 action
 */
export declare function createLogoutAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(logoutProcessor?: () => Promise<void>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction;
/**
 * 创建 CRUD action
 */
export declare function createCrudAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(operation: 'create' | 'update' | 'delete', processor: DataProcessor<TUser, TReturn>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction;
/**
 * 创建文件上传 action
 */
export declare function createFileUploadAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(uploadProcessor: (files: File[], formData: FormData, user?: TUser) => Promise<{
    urls: string[];
}>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction;
/**
 * 组合多个 action
 * 按顺序执行多个 action 的处理逻辑
 */
export declare function combineActions(...actions: ActionFunction[]): ActionFunction;
//# sourceMappingURL=actions.d.ts.map