import '../models/attendance_login_request.dart';
import '../models/attendance_logout_request.dart';
import '../models/attendance_response_model.dart';
import '../models/attendance_model.dart';
import '../models/overtime_model.dart';
import '../models/extra_payment_model.dart';
import '../models/salary_model.dart';

//in the following polymorphism  is being used , a quich recap it is where th esame method but opperate in a different way

//one Repo two requests
abstract class AttendanceRepository {
  Future<AttendanceResponseModel> login(AttendanceLoginRequest request);

  Future<AttendanceResponseModel> logout(AttendanceLogoutRequest request);

  Future<List<AttendanceModel>> getAttendanceRecords({
    required String employeeId,
  });
  Future<List<OvertimeModel>> getExtraHours({required String employeeId});
  Future<List<ExtraPaymentModel>> getRewards({required String employeeId});
  Future<List<ExtraPaymentModel>> getPunishments({required String employeeId});
  Future<SalaryModel> calculateSalary({
    required String employeeId,
    required int month,
    required int year,
  });
}
