import { DomainEvent } from './domain-event.base';

export interface WithdrawalRequestedPayload {
  orderNo: string;           // 提现订单号
  accountSequence: string;   // 跨服务关联标识
  userId: string;
  walletId: string;
  amount: string;            // 提现金额
  fee: string;               // 手续费
  netAmount: string;         // 实际到账金额 (amount - fee)
  assetType: string;         // 资产类型 (USDT)
  chainType: string;         // 目标链 (BSC/KAVA)
  toAddress: string;         // 提现目标地址
}

export class WithdrawalRequestedEvent extends DomainEvent {
  static readonly EVENT_NAME = 'wallet.withdrawal.requested';

  constructor(private readonly payload: WithdrawalRequestedPayload) {
    super({
      aggregateId: payload.orderNo,
      aggregateType: 'WithdrawalOrder',
    });
  }

  getPayload(): WithdrawalRequestedPayload {
    return this.payload;
  }
}
