import { CreateLeaveDto } from '../types';
import { LeaveRepository } from '../repositories/LeaveRepository';
import { HolidayRepository } from '../repositories/HolidayRepository';
import { LeaveValidationService } from '../domain/leave/LeaveValidationService';
import { LeaveBalanceService } from '../domain/leave/LeaveBalanceService';
import { TeamResolutionService } from '../domain/team/TeamResolutionService';
import { NotificationFactory } from '../factories/NotificationFactory';
export declare class BackdatedLeaveFacade {
    private leaveRepo;
    private holidayRepo;
    private validation;
    private teamService;
    private balanceService;
    private notifications;
    private monthCounters;
    constructor(leaveRepo: LeaveRepository | undefined, holidayRepo: HolidayRepository | undefined, validation: LeaveValidationService | undefined, teamService: TeamResolutionService | undefined, balanceService: LeaveBalanceService | undefined, notifications: NotificationFactory);
    submit(employeeId: string, dto: CreateLeaveDto): Promise<{
        id: string;
        employeeId: string;
        leaveType: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        halfDaySlot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        startDate: string;
        endDate: string;
        leaveDays: number;
        status: import(".prisma/client").$Enums.leave_requests_status;
        reason: string;
        isBackdated: boolean;
        sandwichApplied: boolean;
        backdateApprovalCount: number;
        approvals: {
            approverEmployeeId: string;
            approvalReason: string | null;
            approvedAt: string;
        }[];
    }>;
    approve(peerId: string, id: string, approvalReason: string): Promise<{
        backdateApprovalCount: number;
        id: string;
        employeeId: string;
        leaveType: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        halfDaySlot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        startDate: string;
        endDate: string;
        leaveDays: number;
        status: import(".prisma/client").$Enums.leave_requests_status;
        reason: string;
        isBackdated: boolean;
        sandwichApplied: boolean;
        approvals: {
            approverEmployeeId: string;
            approvalReason: string | null;
            approvedAt: string;
        }[];
    }>;
    reject(peerId: string, id: string, reason: string): Promise<{
        id: string;
        employeeId: string;
        leaveType: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        halfDaySlot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        startDate: string;
        endDate: string;
        leaveDays: number;
        status: import(".prisma/client").$Enums.leave_requests_status;
        reason: string;
        isBackdated: boolean;
        sandwichApplied: boolean;
        backdateApprovalCount: number;
        approvals: {
            approverEmployeeId: string;
            approvalReason: string | null;
            approvedAt: string;
        }[];
    }>;
    mark(employeeId: string, id: string): Promise<{
        id: string;
        employeeId: string;
        leaveType: import(".prisma/client").$Enums.leave_requests_leave_type;
        duration: import(".prisma/client").$Enums.leave_requests_duration;
        halfDaySlot: import(".prisma/client").$Enums.leave_requests_half_day_slot | null;
        startDate: string;
        endDate: string;
        leaveDays: number;
        status: import(".prisma/client").$Enums.leave_requests_status;
        reason: string;
        isBackdated: boolean;
        sandwichApplied: boolean;
        backdateApprovalCount: number;
        approvals: {
            approverEmployeeId: string;
            approvalReason: string | null;
            approvedAt: string;
        }[];
    }>;
}
//# sourceMappingURL=BackdatedLeaveFacade.d.ts.map