/**
 * 资产流水类型（与后端 TransactionType 序号 0–53 一致）。
 * 优先使用 i18n：futuresPage.fundingTx.* / assets.statementTypes.*
 * 以下为 zh-CN 兜底（无 i18n 上下文时）。
 */
export const STATEMENT_TYPE_LABELS_ZH: Record<string, string> = {
  '0': '充值',
  '1': '提现',
  '2': '转账',
  '3': '币币交易',
  '4': '法币买入',
  '5': '法币卖出',
  '6': '签到奖励',
  '7': '推广奖励',
  '8': '合约跟单奖励',
  '9': '投票',
  '10': '人工充值',
  '11': '配对',
  '12': '交易奖励',
  '13': 'CTC买入',
  '14': 'CTC卖出',
  '15': '红包发出',
  '16': '红包领取',
  '17': '提现码提现',
  '18': '提现码充值',
  '19': '永续合约手续费',
  '20': '永续合约盈利',
  '21': '永续合约亏损',
  '22': '期权合约失败',
  '23': '期权合约手续费',
  '24': '期权合约奖金',
  '25': '合约返佣',
  '26': '合约资金费率',
  '27': '永续合约爆仓',
  '28': '活动手续费',
  '29': '活动盈利',
  '30': '活动亏损',
  '31': '活动返佣',
  '32': '平级奖励',
  '33': '平台手续费收入',
  '34': '秒合约失败',
  '35': '秒合约奖金',
  '36': '理财利息',
  '37': '合约跟单手续费',
  '38': '合约跟单盈利',
  '39': '合约跟单亏损',
  '40': '合约跟单分润',
  '41': '合约跟单返佣',
  '42': '跟单资金费率',
  '43': '现货盈利',
  '44': '现货亏损',
  '45': '现货手续费',
  '46': '现货返佣',
  '47': '体验金提现',
  '48': '现货交易',
  '49': '质押',
  '50': '质押解冻释放',
  '51': '空投奖励',
  '52': '划入质押钱包',
  '53': '质押钱包划出',
}

export interface StatementTypeLike {
  typeId: string
  name: string
}

/**
 * 展示顺序：本地枚举文案（与后端 type 序号一致）→ 接口 `/uc/asset/transaction/type` → 回退原始 id
 */
type TranslateFn = (key: string) => string

export function resolveStatementTypeName(
  type: string | number | undefined | null,
  apiTypes: StatementTypeLike[],
  t?: TranslateFn,
  te?: (key: string) => boolean,
) {
  const id = type === undefined || type === null ? '' : String(type)
  if (!id) {
    return '—'
  }
  if (t && te) {
    const fundingKey = `futuresPage.fundingTx.${id}`
    if (te(fundingKey)) {
      return t(fundingKey)
    }
    const spotKey = `assets.statementTypes.${id}`
    if (te(spotKey)) {
      return t(spotKey)
    }
  }
  const local = STATEMENT_TYPE_LABELS_ZH[id]
  if (local) {
    return local
  }
  const api = apiTypes.find(x => x.typeId === id)
  if (api?.name) {
    return api.name
  }
  return id
}
