import type { Response } from "express";
import { AttendanceRepository } from "../repositories/AttendanceRepository.js";
import { AttendanceStatus } from "../generated/prisma/client.js";
import { type AttendanceReportType } from "../utils/excel/attendanceExportExcel.js";
export interface UnifiedExportQueryParams {
    reportType: AttendanceReportType;
    format: "pdf" | "excel";
    date?: string;
    fromDate?: string;
    toDate?: string;
    month?: number;
    year?: number;
    employeeId?: string;
}
export declare class AttendanceService {
    private readonly attendanceRepository;
    constructor(attendanceRepository?: AttendanceRepository);
    getDailyAttendance(dateStr: string, search?: string): Promise<{
        employeeId: string;
        employeeCode: string;
        name: string;
        mobile: string | null;
        designation: string | null;
        status: import("../generated/prisma/index.js").$Enums.AttendanceStatus | null;
        remarks: string | null;
        isSaved: boolean;
        attendanceId: string | null;
    }[]>;
    saveBulkAttendance(dateStr: string, records: Array<{
        employeeId: string | number;
        status: AttendanceStatus;
        remarks?: string | null;
    }>, createdBy?: bigint): Promise<{
        date: string;
        totalEmployees: number;
        present: number;
        absent: number;
        halfDay: number;
        attendanceRate: number;
    }>;
    getSummary(dateStr: string): Promise<{
        date: string;
        totalEmployees: number;
        present: number;
        absent: number;
        halfDay: number;
        attendanceRate: number;
    }>;
    getMonthlyAttendance(year: number, month: number, search?: string): Promise<{
        year: number;
        month: number;
        daysInMonth: number;
        employees: {
            employeeId: string;
            employeeCode: string;
            name: string;
            designation: string | null;
            daily: Record<number, {
                status: AttendanceStatus | null;
                remarks?: string | null;
            }>;
            stats: {
                presentDays: number;
                absentDays: number;
                halfDays: number;
                attendanceRate: number;
            };
        }[];
    }>;
    getEmployeeSummary(employeeId: bigint, year?: number, month?: number): Promise<{
        employee: {
            id: string;
            employeeCode: string;
            name: string;
            mobile: string | null;
            designation: string | null;
        };
        stats: {
            totalDays: number;
            presentDays: number;
            absentDays: number;
            halfDays: number;
            attendancePercentage: number;
        };
        recentLogs: {
            id: string;
            date: string | undefined;
            status: import("../generated/prisma/index.js").$Enums.AttendanceStatus;
            remarks: string | null;
        }[];
    } | null>;
    getReportData(startDate?: string, endDate?: string, employeeId?: bigint, status?: AttendanceStatus): Promise<{
        id: string;
        date: string | undefined;
        employeeId: string;
        employeeCode: string;
        employeeName: string;
        designation: string | null;
        status: import("../generated/prisma/index.js").$Enums.AttendanceStatus;
        remarks: string;
    }[]>;
    exportAttendanceReport(params: UnifiedExportQueryParams, res: Response): Promise<void>;
}
//# sourceMappingURL=AttendanceService.d.ts.map