import { leave_requests, Prisma } from '@prisma/client';
export declare class LeaveRepository {
    private prisma;
    create(data: Prisma.leave_requestsCreateInput): Promise<leave_requests>;
    findById(id: string): Prisma.Prisma__leave_requestsClient<({
        leave_request_approvals: {
            comment: string | null;
            created_at: Date;
            id: string;
            action: import(".prisma/client").$Enums.leave_request_approvals_action;
            approver_employee_id: string;
            approval_reason: string | null;
            leave_request_id: string;
        }[];
    } & {
        created_at: Date;
        id: string;
        employee_id: string;
        status: import(".prisma/client").$Enums.leave_requests_status;
        updated_at: Date;
        submitted_at: Date;
        leave_type: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        half_day_slot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        start_date: Date;
        end_date: Date;
        leave_days: Prisma.Decimal;
        reason: string;
        is_backdated: boolean;
        sandwich_applied: boolean;
        attachment_url: string | null;
        marked_at: Date | null;
        approved_at: Date | null;
        final_approval_at: Date | null;
    }) | null, null, import("@prisma/client/runtime/library").DefaultArgs>;
    listByEmployee(employeeId: string, status?: string): Prisma.PrismaPromise<({
        leave_request_approvals: {
            comment: string | null;
            created_at: Date;
            id: string;
            action: import(".prisma/client").$Enums.leave_request_approvals_action;
            approver_employee_id: string;
            approval_reason: string | null;
            leave_request_id: string;
        }[];
    } & {
        created_at: Date;
        id: string;
        employee_id: string;
        status: import(".prisma/client").$Enums.leave_requests_status;
        updated_at: Date;
        submitted_at: Date;
        leave_type: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        half_day_slot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        start_date: Date;
        end_date: Date;
        leave_days: Prisma.Decimal;
        reason: string;
        is_backdated: boolean;
        sandwich_applied: boolean;
        attachment_url: string | null;
        marked_at: Date | null;
        approved_at: Date | null;
        final_approval_at: Date | null;
    })[]>;
    update(id: string, data: Prisma.leave_requestsUpdateInput): Prisma.Prisma__leave_requestsClient<{
        leave_request_approvals: {
            comment: string | null;
            created_at: Date;
            id: string;
            action: import(".prisma/client").$Enums.leave_request_approvals_action;
            approver_employee_id: string;
            approval_reason: string | null;
            leave_request_id: string;
        }[];
    } & {
        created_at: Date;
        id: string;
        employee_id: string;
        status: import(".prisma/client").$Enums.leave_requests_status;
        updated_at: Date;
        submitted_at: Date;
        leave_type: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        half_day_slot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        start_date: Date;
        end_date: Date;
        leave_days: Prisma.Decimal;
        reason: string;
        is_backdated: boolean;
        sandwich_applied: boolean;
        attachment_url: string | null;
        marked_at: Date | null;
        approved_at: Date | null;
        final_approval_at: Date | null;
    }, never, import("@prisma/client/runtime/library").DefaultArgs>;
    countEmergencyInQuarter(employeeId: string, quarterStart: Date, quarterEnd: Date): Prisma.PrismaPromise<number>;
    findApprovedOverlapping(employeeId: string, date: Date): Prisma.Prisma__leave_requestsClient<{
        created_at: Date;
        id: string;
        employee_id: string;
        status: import(".prisma/client").$Enums.leave_requests_status;
        updated_at: Date;
        submitted_at: Date;
        leave_type: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        half_day_slot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        start_date: Date;
        end_date: Date;
        leave_days: Prisma.Decimal;
        reason: string;
        is_backdated: boolean;
        sandwich_applied: boolean;
        attachment_url: string | null;
        marked_at: Date | null;
        approved_at: Date | null;
        final_approval_at: Date | null;
    } | null, null, import("@prisma/client/runtime/library").DefaultArgs>;
    findApprovedInRange(from: Date, to: Date): Prisma.PrismaPromise<{
        created_at: Date;
        id: string;
        employee_id: string;
        status: import(".prisma/client").$Enums.leave_requests_status;
        updated_at: Date;
        submitted_at: Date;
        leave_type: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        half_day_slot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        start_date: Date;
        end_date: Date;
        leave_days: Prisma.Decimal;
        reason: string;
        is_backdated: boolean;
        sandwich_applied: boolean;
        attachment_url: string | null;
        marked_at: Date | null;
        approved_at: Date | null;
        final_approval_at: Date | null;
    }[]>;
}
//# sourceMappingURL=LeaveRepository.d.ts.map