import 'package:krow_domain/krow_domain.dart';

/// Interface for the Clock In feature repository.
///
/// Defines the methods for managing clock-in/out operations and retrieving
/// related shift and attendance data.
abstract interface class ClockInRepositoryInterface {
  /// Retrieves the shift scheduled for today.
  Future<Shift?> getTodaysShift();

  /// Retrieves the current attendance status (check-in time, check-out time, etc.).
  ///
  /// Returns a Map containing:
  /// - 'isCheckedIn': bool
  /// - 'checkInTime': DateTime?
  /// - 'checkOutTime': DateTime?
  Future<Map<String, dynamic>> getAttendanceStatus();

  /// Clocks the user in for a specific shift.
  Future<Map<String, dynamic>> clockIn({
    required String shiftId,
    String? notes,
  });

  /// Clocks the user out of the current shift.
  Future<Map<String, dynamic>> clockOut({
    String? notes,
    int? breakTimeMinutes,
  });

  /// Retrieves the history of clock-in/out activity.
  ///
  /// Returns a list of maps, where each map represents an activity entry.
  Future<List<Map<String, dynamic>>> getActivityLog();
}
