/**
 * 资金分配命令 - 用于认种订单的资金分配
 * 支持分配给用户钱包或系统账户
 */
export interface FundAllocationItem {
  // 目标类型: USER 或 SYSTEM
  targetType: 'USER' | 'SYSTEM';
  // 目标ID: 用户ID 或 系统账户类型标识
  targetId: string;
  // 分配类型
  allocationType: string;
  // 金额 (USDT)
  amount: number;
  // 算力百分比（可选，仅省市公司区域权益有）
  hashpowerPercent?: number;
  // 元数据
  metadata?: Record<string, any>;
}

export class AllocateFundsCommand {
  constructor(
    // 来源订单ID
    public readonly orderId: string,
    // 付款用户ID
    public readonly payerUserId: string,
    // 分配列表
    public readonly allocations: FundAllocationItem[],
  ) {}
}

/**
 * 批量链上转账命令
 */
export interface BatchTransferItem {
  // 目标钱包地址
  toAddress: string;
  // 金额 (USDT)
  amount: number;
  // 分配类型标注
  allocationType: string;
  // 目标账户ID（用于记录）
  targetAccountId?: string;
}

export class BatchOnChainTransferCommand {
  constructor(
    // 来源订单ID
    public readonly orderId: string,
    // 付款用户ID
    public readonly payerUserId: string,
    // 转账列表
    public readonly transfers: BatchTransferItem[],
  ) {}
}
