import { AttendanceStatus } from "../generated/prisma/client.js";
export declare class AttendanceRepository {
    private employeeRepository;
    private parseDate;
    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;
    }[]>;
}
//# sourceMappingURL=AttendanceRepository.d.ts.map