/**
 * WalletOutput - 原始接口返回的数据（金额单位：分）
 */
export interface GetWalletBalanceResponse {
  /**
   * 待入账收入（单位：分）
   */
  awaitingIncome?: number
  /**
   * 现页面上显示的Balance为可用于付款的金额，实际为后加上的charge字段（用户充值金额）（单位：分）
   */
  balance?: number
  /**
   * 现页面上显示的Income为用户收入金额，实际为之前定义的balance等字段（单位：分）
   */
  income?: number
  /**
   * 申请提现处理中的金额（单位：分）
   */
  requestWithdraw?: number
  /**
   * 提现手续费比例
   */
  wdFeeRate?: number
  /**
   * 可提现金额(income的一部分)（单位：分）
   */
  withdrawable?: number
}

/**
 * 转换后的钱包余额数据（金额单位：元）
 * 用于前端组件使用，所有金额字段都已从分转换为元
 */
export interface WalletBalanceInYuan {
  /**
   * 待入账收入（单位：元）
   */
  awaitingIncome?: number
  /**
   * 可用于付款的余额（单位：元）
   */
  balance?: number
  /**
   * 用户收入金额（单位：元）
   */
  income?: number
  /**
   * 申请提现处理中的金额（单位：元）
   */
  requestWithdraw?: number
  /**
   * 提现手续费比例（无需转换）
   */
  wdFeeRate?: number
  /**
   * 可提现金额（单位：元）
   */
  withdrawable?: number
}

/**
 * ChargeProductConfigOutput
 */
export interface ChargeProductConfigOutput {
  /**
   * 倒计时剩余时间
   */
  countdown?: number
  /**
   * 充值档位（商品）列表
   */
  productList?: ChargeProductConfigListOutput[]
}

/**
 * com.sonic.lion.domain.output.ChargeProductConfigListOutput
 *
 * ChargeProductConfigListOutput
 */
export interface ChargeProductConfigListOutput {
  /**
   * 充值到账的BUFF金额
   */
  chargeAmount?: number
  /**
   * 赠送的总金额
   */
  giftAmount?: number
  /**
   * 是否热门标记
   */
  hot?: boolean
  /**
   * 三方渠道的实付金额
   */
  payAmount?: number
  /**
   * 商品ID
   */
  productId?: string
}

export interface GetWebChargePreOrderRequest {
  /**
   * 商品ID
   */
  productId?: string
  version?: 1
}

export interface GetWebChargePreOrderResponse {
  /**
   * 交易号
   */
  tradeNo?: string
}

export interface GetWebChargeCheckoutRequest {
  /**
   * 交易号
   */
  tradeNo?: string
  payChannel?: 'STRIPE'
  returnUrl?: string
  cancelUrl?: string
}

export interface GetWebChargeCheckoutResponse {
  /**
   * 返回URL
   */
  paymentUrl: string
  /**
   * 手续费
   */
  fee: number
}

export interface GetWebChargeCheckoutResultRequest {
  /**
   * 交易号
   */
  submitId?: string
}

export interface GetWebChargeCheckoutResultResponse {
  tradeStatus: string
  tradeMessage: string
  paymentTradeNo: string
  paymentTradeOrderNo: string
  chargeAmount: number
}

/**
 * MemberDetailOutput
 */
export interface GetMemberDetailResponse {
  /**
   * 用户会员权限列表
   */
  memberPrivList?: MemberPrivDict[]
  /**
   * 用户会员信息
   */
  userMemberInfo?: UserSubscription
}

export enum VipType {
  ADD_CRUSH_COIN = 'ADD_CRUSH_COIN',
  ADD_CREATE_AI = 'ADD_CREATE_AI',
  ADD_ALBUM_CREATE = 'ADD_ALBUM_CREATE',
  AUTO_PLAY_VOICE = 'AUTO_PLAY_VOICE',
  CUSTOM_CHAT_BUBBLE = 'CUSTOM_CHAT_BUBBLE',
  SPECIAL_GIFT = 'SPECIAL_GIFT',
}

/**
 * 会员特权字典表
 *
 * MemberPrivDict
 */
export interface MemberPrivDict {
  /**
   * 创建时间
   */
  createTime?: number
  /**
   * 会员特权描述
   */
  desc?: string
  /**
   * 主键ID
   */
  id?: number
  /**
   * 图片
   */
  img?: string
  /**
   * 是否删除 0：未删除 1：删除
   */
  isDelete?: number
  /**
   * 排序
   */
  sort?: number
  /**
   * 会员特权标题
   */
  title?: string
  /**
   * 会员特权类型
   */
  code?: VipType
}

/**
 * 用户会员信息
 *
 * UserSubscription
 */
export interface UserSubscription {
  /**
   * 自动续期状态
   */
  autoRenewStatus?: boolean
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 编辑时间
   */
  editTime?: string
  /**
   * 过期时间
   */
  expTime?: string
  id?: number
  /**
   * IP 地址 用于发生争议之后的退款证据
   */
  ip?: string
  /**
   * 会员类型
   */
  memberType?: MemberType
  /**
   * 所属平台
   */
  platform?: Platform
  /**
   * 价格周期
   */
  priceType?: PriceType
  /**
   * 产品ID 或者说 订阅计划ID
   */
  productId?: string
  /**
   * 购买时间
   */
  purchaseTime?: string
  /**
   * 用于google 续期的token
   */
  purchaseToken?: string
  refundTimeMs?: number
  /**
   * 是否已经提醒过。
   */
  remind?: boolean
  /**
   * 订阅状态
   */
  status?: string
  /**
   * 订阅ID 订阅的唯一标识
   */
  subscriptionId?: string
  /**
   * 用户Id
   */
  userId?: number
}

/**
 * 所属平台
 */
export enum Platform {
  Apple = 'APPLE',
  Google = 'GOOGLE',
  Stripe = 'STRIPE',
}

/**
 * 价格周期
 */
export enum PriceType {
  SubMonth = 'SUB_MONTH',
  SubSeason = 'SUB_SEASON',
  SubYear = 'SUB_YEAR',
}

/**
 * ResultListSubProductListOutput
 */
export type GetSubProductListResponse = SubProductListOutput[]

/**
 * com.sonic.lion.domain.output.SubProductListOutput
 *
 * SubProductListOutput
 */
export interface SubProductListOutput {
  /**
   * 应用id
   */
  bundleId?: string
  /**
   * 得到的Buff
   */
  chargeAmount?: number
  /**
   * 优惠多少 百分比
   */
  discount?: string
  /**
   * 订阅套餐类型
   */
  memberType?: MemberType
  /**
   * 支付金额
   */
  payAmount?: number
  /**
   * 订阅时长
   */
  period?: Period
  /**
   * 平台
   */
  platform?: string
  /**
   * 内购商品项id
   */
  productId?: string
  /**
   * 产品类型  连续购买订阅 和 非连续
   */
  productType?: ProductType
}

/**
 * 订阅套餐类型
 */
export enum MemberType {
  Vip = 'VIP',
}

/**
 * 订阅时长
 */
export enum Period {
  SubMonth = 'SUB_MONTH',
  SubSeason = 'SUB_SEASON',
  SubYear = 'SUB_YEAR',
}

/**
 * 产品类型  连续购买订阅 和 非连续
 */
export enum ProductType {
  App = 'APP',
  Subscription = 'SUBSCRIPTION',
}

export interface GetSubProductCheckoutLinkRequest {
  subProductId: string
  returnUrl?: string
  cancelUrl?: string
}

export interface PageParams {
  pn?: number
  ps?: number
}

/**
 * BillListReq
 */
export interface getTransactionListRequest {
  /**
   * 结束时间戳
   */
  endTime?: number
  page?: PageParams
  query?: MapObject
  /**
   * 开始时间戳
   */
  startTime?: number
  type?: TransactionType
}

/**
 * account_buff_bill
 *
 * AccountBuffBill
 */
export interface AccountBuffBill {
  accountId?: number
  balance?: number
  billNo?: string
  billStatus?: BillStatus
  bizNo?: string
  /**
   * 外部交易号关联单号（如：打赏单号关联的游戏订单的订单号）
   */
  bizNoRelationNo?: string
  bizType?: BizType
  buff?: number
  /**
   * Buff 归类
   */
  buffClassify?: BuffClassify
  buffType?: BuffType
  createTime?: string
  deleted?: boolean
  desUid?: number
  editTime?: string
  extend?: string
  /**
   * 赠送金额
   */
  giftAmount?: number
  id?: number
  inOrOut?: InOrOut
  payChannel?: PayChannel
  payMethod?: string
  platform?: string
  reason?: string
  /**
   * 游戏订单 担保交易 冗余目标方的用户id
   */
  targetUserId?: number
  /**
   * 转入可提现收入时间
   */
  toWithdrawableIncomeTime?: string
  tradeNo?: string
  uid?: number
  /**
   * 提现状态
   */
  withdrawStatus?: WithdrawStatus
}

export enum BillStatus {
  Created = 'CREATED',
  RollBack = 'ROLL_BACK',
  Settled = 'SETTLED',
}

export enum BizType {
  Charge = 'CHARGE',
  ChatAssistant = 'CHAT_ASSISTANT',
  CreateAIImage = 'CREATE_AI_IMAGE',
  FrozenBalance = 'FROZEN_BALANCE',
  Game = 'GAME',
  Gift = 'GIFT',
  HeartbeatPurchase = 'HEARTBEAT_PURCHASE',
  ImageUnlock = 'IMAGE_UNLOCK',
  NewUserGift = 'NEW_USER_GIFT',
  Refund = 'REFUND',
  SendVoice = 'SEND_VOICE',
  Sub = 'SUB',
  SubscribeMember = 'SUBSCRIBE_MEMBER',
  TextModel = 'TEXT_MODEL',
  UnfrozenBalance = 'UNFROZEN_BALANCE',
  UnlockAdmirers = 'UNLOCK_ADMIRERS',
  VipBuffGift = 'VIP_BUFF_GIFT',
  VoiceCall = 'VOICE_CALL',
  Withdraw = 'WITHDRAW',
}

/**
 * Buff 归类
 */
export enum BuffClassify {
  BCharge = 'B_CHARGE',
  BEpalPrize = 'B_EPAL_PRIZE',
  BEpalSubscription = 'B_EPAL_SUBSCRIPTION',
  BGift = 'B_GIFT',
  BLuckyDraw = 'B_LUCKY_DRAW',
  BOther = 'B_OTHER',
  BPurchase = 'B_PURCHASE',
  BRefund = 'B_REFUND',
  BStore = 'B_STORE',
  BTip = 'B_TIP',
  IEpalReward = 'I_EPAL_REWARD',
  IGiftIncome = 'I_GIFT_INCOME',
  IOther = 'I_OTHER',
  IRefund = 'I_REFUND',
  IServiceIncome = 'I_SERVICE_INCOME',
  IStoreReward = 'I_STORE_REWARD',
  ISubscriptionIncome = 'I_SUBSCRIPTION_INCOME',
  ITipIncome = 'I_TIP_INCOME',
  IWithdraw = 'I_WITHDRAW',
}

export enum BuffType {
  AwaitingIncome = 'AWAITING_INCOME',
  Balance = 'BALANCE',
  FrozenBalance = 'FROZEN_BALANCE',
  FrozenIncome = 'FROZEN_INCOME',
  Refund = 'REFUND',
  WithdrawableIncome = 'WITHDRAWABLE_INCOME',
}

export enum InOrOut {
  In = 'IN',
  Out = 'OUT',
}

export enum PayChannel {
  Buff = 'BUFF',
  Google = 'GOOGLE',
  Iap = 'IAP',
  Stripe = 'STRIPE',
}

/**
 * 提现状态
 */
export enum WithdrawStatus {
  InReview = 'IN_REVIEW',
  ReviewFail = 'REVIEW_FAIL',
  WithdrawFail = 'WITHDRAW_FAIL',
  WithdrawFailBack = 'WITHDRAW_FAIL_BACK',
  WithdrawIng = 'WITHDRAW_ING',
  WithdrawSuccess = 'WITHDRAW_SUCCESS',
}

/**
 * MapObject
 */
export interface MapObject {
  key?: { [key: string]: any }
  [property: string]: any
}

export enum TransactionType {
  Balance = 'BALANCE',
  Income = 'INCOME',
}

/**
 * SummaryBillListResp
 */
export interface SummaryBillListResp {
  /**
   * 总收入
   */
  incomeTotal?: number
  /**
   * 总支出
   */
  outcomeTotal?: number
  /**
   * 分页列表
   */
  pageList?: PageBillOutput
}

/**
 * 分页列表
 *
 * PageBillOutput
 */
export interface PageBillOutput {
  /**
   * 数据列表
   */
  datas?: BillOutput[]
  /**
   * 页码
   */
  pn?: number
  /**
   * 每页显示条数
   */
  ps?: number
  /**
   * 总数据条数
   */
  tc?: number
}

/**
 * BillOutput
 */
export interface BillOutput {
  amount?: number
  bizNum?: string
  bizType?: BizType
  /**
   * buff类型
   */
  buffType?: BuffType
  /**
   * desUid对应用户自定义ID
   */
  custId?: string
  desUid?: number
  extend?: string
  giftId?: number
  headImg?: string
  id?: number
  inOrOut?: InOrOut
  item?: string
  message?: string
  nickname?: string
  payment?: string
  /**
   * 订阅类型 待入账会按月分期到期，期数
   */
  period?: number
  /**
   * 订阅类型 待入账会按月分期到期 每期金额
   */
  periodAmount?: number
  platform?: string
  status?: string
  time?: string
  /**
   * 转入可提现收入时间
   */
  toWithdrawableIncomeTime?: string
  tradeNo?: string
}
