import { PayrollService } from "../payroll/payroll.service";
import { EmployeesService } from "../employees/employees.service";
import { CompanyRepository } from "../company/repositories/company.repository";
import { CompanySubscriptionRepository } from "../company/repositories/company-subscription.repository";
import { CompanyProfileRepository } from "../company/repositories/company-profile.repository";
import { ProjectRepository } from "../projects/repositories/project.repository";
import { AuthRepository } from "../auth/repositories/auth.repository";
import { TimeTrackingRepository } from "../time-tracking/repositories/time-tracking.repository";
import { ClockInRecordRepository } from "../time-tracking/repositories/clock-in-record.repository";
import { LeaveRequestRepository } from "../leave-requests/repositories/leave-request.repository";
import { DataSource, Repository } from "typeorm";
import { NotificationService } from "../notification/notification.service";
import { PartyPayment } from "../party-types/entities/party-payment.entity";
import { PartyPaymentHistory } from "../party-types/entities/party-payment-history.entity";
import { Project } from "../projects/entities/project.entity";
import { ClockInRecord } from "../time-tracking/entities/clock-in-record.entity";
import { TimeTracking } from "../time-tracking/entities/time-tracking.entity";
export declare class CronService {
    private readonly payrollService;
    private readonly employeesService;
    private readonly companyRepository;
    private readonly companySubscriptionRepository;
    private readonly companyProfileRepository;
    private readonly projectRepository;
    private readonly authRepository;
    private readonly timeTrackingRepository;
    private readonly clockInRecordRepository;
    private readonly leaveRequestRepository;
    private readonly dataSource;
    private readonly notificationService;
    private readonly partyPaymentRepository;
    private readonly partyPaymentHistoryRepository;
    private readonly clockInRecordEntityRepository;
    private readonly timeTrackingEntityRepository;
    private readonly projectEntityRepository;
    private readonly logger;
    constructor(payrollService: PayrollService, employeesService: EmployeesService, companyRepository: CompanyRepository, companySubscriptionRepository: CompanySubscriptionRepository, companyProfileRepository: CompanyProfileRepository, projectRepository: ProjectRepository, authRepository: AuthRepository, timeTrackingRepository: TimeTrackingRepository, clockInRecordRepository: ClockInRecordRepository, leaveRequestRepository: LeaveRequestRepository, dataSource: DataSource, notificationService: NotificationService, partyPaymentRepository: Repository<PartyPayment>, partyPaymentHistoryRepository: Repository<PartyPaymentHistory>, clockInRecordEntityRepository: Repository<ClockInRecord>, timeTrackingEntityRepository: Repository<TimeTracking>, projectEntityRepository: Repository<Project>);
    handlePayrollGenerationCron(): Promise<void>;
    handleYearEndCarryForwardCron(): Promise<void>;
    handleSubscriptionExpiryRemindersCron(): Promise<void>;
    handleProjectAlertsCron(): Promise<void>;
    handleMonthlyReportsCron(): Promise<void>;
    checkAndSendSubscriptionExpiryReminders(): Promise<void>;
    private sendExpiryEmailAndUpdateStatus;
    private getCompanyEmail;
    checkAndSendProjectAlerts(): Promise<void>;
    private sendProjectThresholdAlert;
    private sendProjectBudgetFullAlert;
    private sendProjectBudgetNotifications;
    private getSuperAdminEmail;
    generateAndSendMonthlyReports(): Promise<void>;
    private generateCompanyMonthlyReport;
    private getProjectSummaryForMonth;
    private getEmployeeSummaryForMonth;
    private getLeaveReportForMonth;
    generatePayrollForCompany(companyId: number, month: number, year: number): Promise<{
        success: boolean;
        message: string;
        data: any;
    } | {
        success: boolean;
        message: any;
        data?: undefined;
    }>;
    processYearEndCarryForward(year: number): Promise<{
        success: boolean;
        message: any;
        data: {
            processedCompanies: number;
            totalProcessed: number;
            totalErrors: number;
        };
    } | {
        success: boolean;
        message: any;
        data?: undefined;
    }>;
    getCronStatus(): {
        payroll: {
            generate_date: number;
            current_date: number;
            is_payroll_day: boolean;
            next_run_date: string;
            days_until_next_run: number;
        };
        carry_forward: {
            is_carry_forward_day: boolean;
            next_run_date: string;
            days_until_next_run: number;
        };
    };
    handleMonthlyPartyPayments(): Promise<void>;
    private processMonthlyPayment;
    private calculateBillingMonths;
    private processMonthlyPaymentInTransaction;
    private createPaymentHistory;
    private checkBudgetThreshold;
    handleAutoClockOutAndStopTimeTracking(): Promise<void>;
    private autoClockOutRecords;
    private autoStopTimeTrackingActivities;
    private calculateTimeAndCost;
    runManually(cronName: string): Promise<void>;
}
