import { DepositOrder } from '@/domain/aggregates';
import { DepositStatus } from '@/domain/value-objects';

export interface IDepositOrderRepository {
  save(order: DepositOrder): Promise<DepositOrder>;
  findById(orderId: bigint): Promise<DepositOrder | null>;
  findByTxHash(txHash: string): Promise<DepositOrder | null>;
  findByUserId(userId: bigint, status?: DepositStatus): Promise<DepositOrder[]>;
  findByAccountSequence(accountSequence: string, status?: DepositStatus): Promise<DepositOrder[]>;
  existsByTxHash(txHash: string): Promise<boolean>;
}

export const DEPOSIT_ORDER_REPOSITORY = Symbol('IDepositOrderRepository');
