import { TransferOrder } from '../aggregates/transfer-order.aggregate';

export interface ITransferOrderRepository {
  findById(id: bigint): Promise<TransferOrder | null>;
  findByTransferOrderNo(transferOrderNo: string): Promise<TransferOrder | null>;
  findBySellerUserId(userId: bigint, options?: { limit?: number; offset?: number }): Promise<TransferOrder[]>;
  findByBuyerUserId(userId: bigint, options?: { limit?: number; offset?: number }): Promise<TransferOrder[]>;
  findBySourceOrderNo(sourceOrderNo: string): Promise<TransferOrder[]>;
  findByStatus(status: string, limit?: number): Promise<TransferOrder[]>;
  countByUserAsSellerOrBuyer(userId: bigint): Promise<number>;
}

export const TRANSFER_ORDER_REPOSITORY = Symbol('ITransferOrderRepository');
