/**
 * Repository Interface: IMembershipFeeRepository
 */

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

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

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