import { CreatePayrollCycleDto } from "./dto/create-payroll-cycle.dto";
import { UpdatePayrollCycleDto } from "./dto/update-payroll-cycle.dto";
import { ProcessPayrollDto } from "./dto/process-payroll.dto";
import { PayrollFiltersDto } from "./dto/payroll-filters.dto";
import { ProcessPayrollFiltersDto } from "./dto/process-payroll-filters.dto";
import { PayrollCycleRepository } from "./repositories/payroll-cycle.repository";
import { PayrollEntryRepository } from "./repositories/payroll-entry.repository";
import { SalaryStructureRepository } from "./repositories/salary-structure.repository";
import { CompanySettingsRepository } from "../company/repositories/company-settings.repository";
import { CompanyProfileRepository } from "../company/repositories/company-profile.repository";
import { LeaveRequestRepository } from "../leave-requests/repositories/leave-request.repository";
import { EmployeeRepository } from "../employees/repositories/employee.repository";
import { EmployeeSalaryDetailRepository } from "../employees/repositories/employee-salary-detail.repository";
import { EmployeeSalaryHistoryRepository } from "../employees/repositories/employee-salary-history.repository";
export declare class PayrollService {
    private readonly payrollCycleRepository;
    private readonly payrollEntryRepository;
    private readonly salaryStructureRepository;
    private readonly companySettingsRepository;
    private readonly companyProfileRepository;
    private readonly leaveRequestRepository;
    private readonly employeeRepository;
    private readonly employeeSalaryDetailRepository;
    private readonly employeeSalaryHistoryRepository;
    constructor(payrollCycleRepository: PayrollCycleRepository, payrollEntryRepository: PayrollEntryRepository, salaryStructureRepository: SalaryStructureRepository, companySettingsRepository: CompanySettingsRepository, companyProfileRepository: CompanyProfileRepository, leaveRequestRepository: LeaveRequestRepository, employeeRepository: EmployeeRepository, employeeSalaryDetailRepository: EmployeeSalaryDetailRepository, employeeSalaryHistoryRepository: EmployeeSalaryHistoryRepository);
    createPayrollCycle(createPayrollCycleDto: CreatePayrollCycleDto, token?: string, systemCompanyId?: number, systemUserId?: number): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    findAllPayrollCycles(query: PayrollFiltersDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    findOnePayrollCycle(id: number): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    updatePayrollCycle(id: number, updatePayrollCycleDto: UpdatePayrollCycleDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    removePayrollCycle(id: number, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    processPayroll(processPayrollDto: ProcessPayrollDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getProcessPayrollData(payrollCycleId: number, query: ProcessPayrollFiltersDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private getProcessedPayrollEntries;
    private getEmployeesWithCalculatedSalary;
    private getBasicSalaryFromHistory;
    private calculateEmployeeSalaryComponents;
    private calculateDynamicAmount;
    private getCurrencySymbol;
    finalizePayroll(payrollCycleId: number, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private calculateEmployeeAttendance;
    updatePayrollAttendance(payrollEntryId: number, attendanceData: {
        employee_id?: number;
        payroll_cycle_id?: number;
        working_days?: number;
        present_days?: number;
        paid_leaves?: number;
        unpaid_leaves?: number;
    }, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getSalarySlip(payrollEntryId: number, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getEmployeeSalarySlips(query: any, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    exportSalarySlipPDF(payrollEntryId: number, token: string, res: any): Promise<any>;
    exportPayrollEntries(payrollCycleId: number, token: string, res: any): Promise<any>;
    private generateSalarySlipHTML;
    private addTdsToSalaryComponents;
}
