/**
 * Repository Interface: MembershipFeeRepository
 */

import type { MemberPayment } from '../entities/MemberPayment';
import type { MembershipFee } from '../entities/MembershipFee';

export interface MembershipFeeRepository {
  findById(id: string): Promise<MembershipFee | null>;
  findByLeagueId(leagueId: string): Promise<MembershipFee | null>;
  create(fee: MembershipFee): Promise<MembershipFee>;
  update(fee: MembershipFee): Promise<MembershipFee>;
}

export interface MemberPaymentRepository {
  findById(id: string): Promise<MemberPayment | null>;
  findByFeeIdAndDriverId(feeId: string, driverId: string): Promise<MemberPayment | null>;
  findByLeagueIdAndDriverId(leagueId: string, driverId: string, membershipFeeRepo: MembershipFeeRepository): Promise<MemberPayment[]>;
  create(payment: MemberPayment): Promise<MemberPayment>;
  update(payment: MemberPayment): Promise<MemberPayment>;
}