/**
 * 代理充值相关类型定义
 */

// 充值状态
export enum AgentRechargeStatus {
  PENDING = 1, // 待支付
  PAID = 2, // 已支付
  COMPLETED = 3, // 已完成
  CLOSED = 4, // 已关闭
  REFUNDED = 5 // 已退款
}

// 支付方式
export type AgentRechargePaymentMethod = 'wechat' | 'offline'

// 支付通道
export type AgentRechargePaymentChannel = 'wechat_direct' | 'fuyou' | 'offline'

// 代理充值订单
export interface AgentRecharge {
  id: number
  recharge_no: string
  agent_wallet_id: number
  shop_id: number
  shop_name: string
  amount: number // 充值金额（单位：分）
  status: AgentRechargeStatus
  status_name: string // 状态名称
  payment_method: AgentRechargePaymentMethod
  payment_channel: AgentRechargePaymentChannel
  payment_config_id: number | null
  payment_transaction_id: string
  payment_voucher_key?: string[] | string // 凭证附件列表；历史数据可能为单字符串或逗号字符串
  rejection_reason?: string | null // 拒绝原因
  remark?: string // 运营备注
  submitter_name?: string | null // 提交人名称
  approval_source?: 'none' | 'legacy' | 'wecom' | null // 审批来源
  approval_status?: string | null // 审批状态
  approval_status_name?: string | null // 审批状态名称
  current_approver_summary?: string | null // 当前审批人摘要
  processing_status?: string | null // 业务处理状态
  processing_status_name?: string | null // 业务处理状态名称
  created_at: string
  paid_at: string | null
  completed_at: string | null
  updated_at: string
}

// 查询代理充值订单列表参数
export interface AgentRechargeQueryParams {
  page?: number
  page_size?: number
  shop_id?: number
  status?: AgentRechargeStatus
  start_date?: string
  end_date?: string
  dateRange?: string[] | any // For date range picker in UI
}

// 代理充值订单列表响应
export interface AgentRechargeListResponse {
  page: number
  page_size: number
  total: number
  items: AgentRecharge[]
  list: AgentRecharge[] // 兼容旧字段
}

// 创建代理充值订单请求
export interface CreateAgentRechargeRequest {
  amount: number // 充值金额（单位：分），最小 1（即 ¥0.01）
  payment_method: AgentRechargePaymentMethod
  shop_id: number
  payment_voucher_key?: string[] // 线下支付凭证附件列表（payment_method=offline 时必填）
  remark?: string // 运营备注，最多 1000 字
}

// 确认线下充值请求
export interface ConfirmOfflinePaymentRequest {
  operation_password: string
}

// 拒绝代理充值订单请求
export interface RejectAgentRechargeRequest {
  rejection_reason: string
}
