/**
 * Repository Interface: ILiveryRepository
 * 
 * Defines operations for livery-related entities
 */

import type { DriverLivery } from '../entities/DriverLivery';
import type { LiveryTemplate } from '../entities/LiveryTemplate';

export interface ILiveryRepository {
  // DriverLivery operations
  findDriverLiveryById(id: string): Promise<DriverLivery | null>;
  findDriverLiveriesByDriverId(driverId: string): Promise<DriverLivery[]>;
  findDriverLiveryByDriverAndCar(driverId: string, carId: string): Promise<DriverLivery | null>;
  findDriverLiveriesByGameId(gameId: string): Promise<DriverLivery[]>;
  findDriverLiveryByDriverAndGame(driverId: string, gameId: string): Promise<DriverLivery[]>;
  createDriverLivery(livery: DriverLivery): Promise<DriverLivery>;
  updateDriverLivery(livery: DriverLivery): Promise<DriverLivery>;
  deleteDriverLivery(id: string): Promise<void>;

  // LiveryTemplate operations
  findTemplateById(id: string): Promise<LiveryTemplate | null>;
  findTemplatesBySeasonId(seasonId: string): Promise<LiveryTemplate[]>;
  findTemplateBySeasonAndCar(seasonId: string, carId: string): Promise<LiveryTemplate | null>;
  createTemplate(template: LiveryTemplate): Promise<LiveryTemplate>;
  updateTemplate(template: LiveryTemplate): Promise<LiveryTemplate>;
  deleteTemplate(id: string): Promise<void>;
}