import type { User } from '@/api/system/user/model';
/**
 * 登录参数
 */
export interface LoginParam {
  // 账号
  username?: string;
  // 用户ID（loginByUserId 登录使用）
  userId?: number;
  // 密码
  password?: string;
  // 租户id
  tenantId?: number;
  // 是否记住密码
  remember?: boolean;
  // 手机号码
  phone?: string;
  // 邮箱
  email?: string;
  // 短信验证码
  code?: string;
  // 短信验证码（别名，与后端 LoginParam.code 对应）
  smsCode?: string;
}

/**
 * 登录返回结果
 */
export interface LoginResult {
  // token
  access_token?: string;
  // 用户信息
  user?: User;
  // 多租户场景下返回，此时 access_token / user 为 null
  tenants?: TenantOption[];
}

/**
 * 多租户登录时后端返回的租户选项
 */
export interface TenantOption {
  tenantId?: number;
  tenantName?: string;
  userId?: number;
  username?: string;
  nickname?: string;
}

/**
 * 登录接口统一返回结果
 * - ok：单租户直接登录成功
 * - selectTenant：多租户，需要前端弹出选择租户列表
 */
export type LoginOutcome =
  | { status: 'ok'; user: NonNullable<LoginResult['user']>; message: string }
  | { status: 'selectTenant'; tenants: TenantOption[]; message: string };

/**
 * 图形验证码返回结果
 */
export interface CaptchaResult {
  // 图形验证码base64数据
  base64: string;
  // 验证码文本
  text: string;
}

/**
 * 短信验证码返回结果
 */
export interface SmsCaptchaResult {
  // 验证码文本
  text: string;
}
