/**
 * CAPI 语义错误码 — 前后端共享契约
 *
 * 所有 CAPI 错误响应均包含 `errorCode` 字段，iOS 端据此做强类型分支判断，
 * 不依赖中文 message 字符串。
 */

export const CAPIErrorCode = {
  // ── Auth 认证 ──
  /** Apple identityToken 无效或验证失败 */
  AUTH_INVALID_APPLE_TOKEN: 'AUTH_INVALID_APPLE_TOKEN',
  /** 用户已被禁用 */
  AUTH_USER_DISABLED: 'AUTH_USER_DISABLED',
  /** 用户已注销/删除 */
  AUTH_USER_DELETED: 'AUTH_USER_DELETED',
  /** Refresh token 已过期（7 天未使用） */
  AUTH_REFRESH_TOKEN_EXPIRED: 'AUTH_REFRESH_TOKEN_EXPIRED',
  /** Refresh token 已被撤销（登出或安全事件） */
  AUTH_REFRESH_TOKEN_REVOKED: 'AUTH_REFRESH_TOKEN_REVOKED',
  /** 未登录或 access token 过期 */
  AUTH_UNAUTHORIZED: 'AUTH_UNAUTHORIZED',
  /** 使用了 admin token 访问用户端点（或反之） */
  AUTH_WRONG_TOKEN_TYPE: 'AUTH_WRONG_TOKEN_TYPE',
  /** 开发登录在生产环境被禁用 */
  AUTH_DEV_LOGIN_FORBIDDEN: 'AUTH_DEV_LOGIN_FORBIDDEN',

  // ── 通用 ──
  /** 请求参数校验失败 */
  VALIDATION_ERROR: 'VALIDATION_ERROR',
  /** 资源未找到 */
  NOT_FOUND: 'NOT_FOUND',
  /** 权限不足 */
  FORBIDDEN: 'FORBIDDEN',
  /** 请求过于频繁 */
  RATE_LIMITED: 'RATE_LIMITED',
  /** 服务器内部错误 */
  INTERNAL_ERROR: 'INTERNAL_ERROR',
} as const;

export type CAPIErrorCode = (typeof CAPIErrorCode)[keyof typeof CAPIErrorCode];
