import { Transaction } from '../entities/transaction.entity';

export interface VolumeMetrics {
  totalVolume: number;
  totalAmount: string;
}

export interface ITransactionRepository {
  create(data: Partial<Transaction>): Promise<Transaction>;
  findByWalletId(walletId: string, page: number, limit: number): Promise<[Transaction[], number]>;

  // Admin queries
  getVolumeMetrics(): Promise<VolumeMetrics>;
  findPaginated(page: number, limit: number): Promise<[Transaction[], number]>;
  getDailyActiveUsers(date: Date): Promise<number>;
  getMonthlyActiveUsers(monthStart: Date): Promise<number>;
}

export const TRANSACTION_REPOSITORY = Symbol('ITransactionRepository');
