import '../ui_entities/coverage_entities.dart';

/// Repository interface for coverage-related operations.
///
/// This interface defines the contract for accessing coverage data,
/// acting as a boundary between the Domain and Data layers.
/// It allows the Domain layer to remain independent of specific data sources.
///
/// Implementation of this interface must delegate all data access through
/// the `packages/data_connect` layer, ensuring compliance with Clean Architecture.
abstract interface class CoverageRepository {
  /// Fetches shifts for a specific date.
  ///
  /// Returns a list of [CoverageShift] entities representing all shifts
  /// scheduled for the given [date].
  Future<List<CoverageShift>> getShiftsForDate({required DateTime date});

  /// Fetches coverage statistics for a specific date.
  ///
  /// Returns [CoverageStats] containing aggregated metrics including
  /// total workers needed, confirmed, checked in, en route, and late.
  Future<CoverageStats> getCoverageStats({required DateTime date});
}
