import 'package:krow_domain/krow_domain.dart';

/// Repository interface for Clock In/Out functionality
abstract class ClockInRepositoryInterface {
  
  /// Retrieves the shifts assigned to the user for the current day.
  /// Returns empty list if no shift is assigned for today.
  Future<List<Shift>> getTodaysShifts();

  /// Gets the current attendance status (e.g., checked in or not, times).
  /// This helps in restoring the UI state if the app was killed.
  Future<AttendanceStatus> getAttendanceStatus();

  /// Checks the user in for the specified [shiftId].
  /// Returns the updated [AttendanceStatus].
  Future<AttendanceStatus> clockIn({required String shiftId, String? notes});

  /// Checks the user out for the currently active shift.
  /// Optionally accepts [breakTimeMinutes] if tracked.
  Future<AttendanceStatus> clockOut({
    String? notes,
    int? breakTimeMinutes,
    String? applicationId,
  });
}
