/**
 * Repository Interface: PaymentRepository
 */

import type { Payment, PaymentType } from '../entities/Payment';

export interface PaymentRepository {
  findById(id: string): Promise<Payment | null>;
  findByLeagueId(leagueId: string): Promise<Payment[]>;
  findByPayerId(payerId: string): Promise<Payment[]>;
  findByType(type: PaymentType): Promise<Payment[]>;
  findByFilters(filters: { leagueId?: string; payerId?: string; type?: PaymentType }): Promise<Payment[]>;
  create(payment: Payment): Promise<Payment>;
  update(payment: Payment): Promise<Payment>;
}