import { NetworkResult } from "@core/network";
import { Auth, PasswordLoginRequest } from "@shared/types";

/**
 * @file 认证相关网络数据源接口
 * 定义认证模块所需的所有网络请求操作
 * @author Joker.X
 */
export interface AuthNetworkDataSource {
  /**
   * 刷新 Token
   * @param {Record<string, string>} params - 刷新参数,包含 refresh_token
   * @returns {Promise<NetworkResult<Auth>>} 刷新后的认证信息
   */
  refreshToken(params: Record<string, string>): Promise<NetworkResult<Auth>>;

  /**
   * 密码登录
   * @param params 登录参数,包含用户名、密码等
   * @return 返回 Promise,包含认证结果
   */
  loginByPassword(params: PasswordLoginRequest): Promise<NetworkResult<Auth>>;
}