export type AttendanceStatusType = 'PRESENT' | 'ABSENT' | 'HALF_DAY';

export interface DailyAttendanceItem {
  employeeId: string;
  name: string;
  mobile?: string;
  designation?: string;
  status: AttendanceStatusType | null;
  remarks?: string;
  isSaved?: boolean;
}

export interface SummaryData {
  totalEmployees: number;
  present: number;
  absent: number;
  halfDay: number;
  attendanceRate: number;
}

export interface MonthlyEmployee {
  employeeId: string;
  name: string;
  designation?: string;
  daily: Record<number, { status: AttendanceStatusType | null; remarks?: string }>;
  stats: {
    presentDays: number;
    absentDays: number;
    halfDays: number;
    attendanceRate: number;
  };
}

export interface SingleEmployeeSummary {
  employee: {
    id: string;
    employeeCode: string;
    name: string;
    mobile?: string;
    department?: string;
    designation?: string;
  };
  stats: {
    totalDays: number;
    presentDays: number;
    absentDays: number;
    halfDays: number;
    attendancePercentage: number;
  };
  recentLogs: Array<{
    id: string;
    date: string;
    status: AttendanceStatusType;
    remarks?: string;
  }>;
}

export type AttendanceReportType =
  | 'DAILY'
  | 'EMPLOYEE'
  | 'MONTHLY_SUMMARY'
  | 'REGISTER'
  | 'ABSENT'
  | 'HALF_DAY'
  | 'ATTENDANCE_SUMMARY';

export interface AttendanceExportConfig {
  reportType: AttendanceReportType;
  format: 'pdf' | 'excel';
  date?: string;
  fromDate?: string;
  toDate?: string;
  month?: number;
  year?: number;
  employeeId?: string | number;
  department?: string;
}
