import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';

/**
 * 法币提现响应 DTO
 */
export class FiatWithdrawalResponseDTO {
  @ApiProperty({ description: '订单号', example: 'FW1704067200ABC123' })
  orderNo: string;

  @ApiProperty({ description: '提现金额', example: 100 })
  amount: number;

  @ApiProperty({ description: '手续费', example: 1 })
  fee: number;

  @ApiProperty({ description: '实际到账金额', example: 99 })
  netAmount: number;

  @ApiProperty({ description: '状态', example: 'REVIEWING' })
  status: string;

  @ApiProperty({ description: '收款方式', example: 'BANK_CARD' })
  paymentMethod: string;
}

/**
 * 法币提现订单列表项 DTO
 */
export class FiatWithdrawalListItemDTO {
  @ApiProperty({ description: '订单号', example: 'FW1704067200ABC123' })
  orderNo: string;

  @ApiProperty({ description: '账户序列号', example: 'D2501010001' })
  accountSequence: string;

  @ApiProperty({ description: '用户ID', example: '12345' })
  userId: string;

  @ApiProperty({ description: '提现金额', example: 100 })
  amount: number;

  @ApiProperty({ description: '手续费', example: 1 })
  fee: number;

  @ApiProperty({ description: '实际到账金额', example: 99 })
  netAmount: number;

  @ApiProperty({ description: '收款方式', example: 'BANK_CARD' })
  paymentMethod: string;

  @ApiProperty({ description: '收款方式名称', example: '银行卡' })
  paymentMethodName: string;

  @ApiProperty({ description: '收款账户显示信息', example: '中国工商银行 ****1234 (张三)' })
  paymentAccountDisplay: string;

  @ApiProperty({ description: '状态', example: 'REVIEWING' })
  status: string;

  @ApiPropertyOptional({ description: '审核人', example: 'admin' })
  reviewedBy: string | null;

  @ApiPropertyOptional({ description: '审核时间', example: '2024-01-01T00:00:00.000Z' })
  reviewedAt: string | null;

  @ApiPropertyOptional({ description: '审核备注', example: '信息核实无误' })
  reviewRemark: string | null;

  @ApiPropertyOptional({ description: '打款人', example: 'finance' })
  paidBy: string | null;

  @ApiPropertyOptional({ description: '打款时间', example: '2024-01-01T00:00:00.000Z' })
  paidAt: string | null;

  @ApiPropertyOptional({ description: '冻结时间', example: '2024-01-01T00:00:00.000Z' })
  frozenAt: string | null;

  @ApiPropertyOptional({ description: '完成时间', example: '2024-01-01T00:00:00.000Z' })
  completedAt: string | null;

  @ApiProperty({ description: '创建时间', example: '2024-01-01T00:00:00.000Z' })
  createdAt: string;
}
