import { Repository } from "typeorm";
import { ReportsRepository } from "./repositories/reports.repository";
import { CompanyProfileRepository } from "../company/repositories/company-profile.repository";
import { CompanySettingsRepository } from "../company/repositories/company-settings.repository";
import { TimeTracking } from "../time-tracking/entities/time-tracking.entity";
import { ClockInRecord } from "../time-tracking/entities/clock-in-record.entity";
import { Project } from "../projects/entities/project.entity";
import { ProjectEmployee } from "../projects/entities/project-employee.entity";
import { LeaveRequest } from "../leave-requests/entities/leave-request.entity";
import { LeaveType } from "../leave-types/entities/leave-type.entity";
import { Employee } from "../employees/entities/employee.entity";
import { PartyPayment } from "../party-types/entities/party-payment.entity";
import { PartyPaymentHistory } from "../party-types/entities/party-payment-history.entity";
import { ProjectReportFiltersDto } from "./dto/project-report-filters.dto";
import { TimeEntriesReportFiltersDto } from "./dto/time-entries-report-filters.dto";
import { ProjectCostingFiltersDto } from "./dto/project-costing-filters.dto";
import { ProjectAnalyticsFiltersDto } from "./dto/project-analytics-filters.dto";
import { EmployeeProductivityFiltersDto } from "./dto/employee-productivity-filters.dto";
import { TimesheetReportFiltersDto } from "./dto/timesheet-report-filters.dto";
import { ClockInReportFiltersDto } from "./dto/clock-in-report-filters.dto";
import { ProjectReportExportDto } from "./dto/export-filters.dto";
import { ClockInReportExportDto } from "./dto/clock-in-report.dto";
import { LeaveAnalyticsFiltersDto } from "./dto/leave-analytics-filters.dto";
import { ProjectManagementFiltersDto } from "./dto/project-management-filters.dto";
import { Client } from "../clients/entities/client.entity";
import { ActivityType } from "../activity-types/entities/activity-type.entity";
import { DataSource } from "typeorm";
export declare class ReportsService {
    private readonly reportsRepository;
    private readonly companyProfileRepository;
    private readonly companySettingsRepository;
    private readonly timeTrackingEntityRepository;
    private readonly clockInRecordRepository;
    private readonly projectEntityRepository;
    private readonly projectEmployeeEntityRepository;
    private readonly leaveRequestEntityRepository;
    private readonly leaveTypeEntityRepository;
    private readonly employeeEntityRepository;
    private readonly clientEntityRepository;
    private readonly activityTypeEntityRepository;
    private readonly partyPaymentEntityRepository;
    private readonly partyPaymentHistoryEntityRepository;
    private readonly timeTrackingRepository;
    private readonly dataSource;
    constructor(reportsRepository: ReportsRepository, companyProfileRepository: CompanyProfileRepository, companySettingsRepository: CompanySettingsRepository, timeTrackingEntityRepository: Repository<TimeTracking>, clockInRecordRepository: Repository<ClockInRecord>, projectEntityRepository: Repository<Project>, projectEmployeeEntityRepository: Repository<ProjectEmployee>, leaveRequestEntityRepository: Repository<LeaveRequest>, leaveTypeEntityRepository: Repository<LeaveType>, employeeEntityRepository: Repository<Employee>, clientEntityRepository: Repository<Client>, activityTypeEntityRepository: Repository<ActivityType>, partyPaymentEntityRepository: Repository<PartyPayment>, partyPaymentHistoryEntityRepository: Repository<PartyPaymentHistory>, timeTrackingRepository: Repository<TimeTracking>, dataSource: DataSource);
    getProjectAnalytics(filters: ProjectAnalyticsFiltersDto, token: string): Promise<any>;
    getDashboard(token: string): Promise<any>;
    getActivityPercentage(filters: ProjectAnalyticsFiltersDto, token: string): Promise<any>;
    getEmployeeProductivity(filters: EmployeeProductivityFiltersDto, token: string): Promise<any>;
    getProjectReport(filters: ProjectReportFiltersDto, token: string): Promise<any>;
    getTimeEntriesReport(filters: TimeEntriesReportFiltersDto, token: string): Promise<any>;
    getProjectCostingReport(filters: ProjectCostingFiltersDto, token: string): Promise<any>;
    getProjectCostingList(filters: ProjectCostingFiltersDto, token: string): Promise<any>;
    private getAvailableYearRange;
    getTimesheetReport(filters: TimesheetReportFiltersDto, token: string): Promise<any>;
    getClockInReport(filters: ClockInReportFiltersDto, token: string): Promise<any>;
    private parseDateRange;
    private processProjectReportCharts;
    private getProjectReportData;
    private getTimeEntriesReportData;
    private getSummaryData;
    private getCostTrendData;
    private getProjectCostData;
    private getTotalCostForYear;
    private getPartyCostForPeriod;
    private getCostBreakdownByContributor;
    private getTimesheetEntriesData;
    private getTimesheetSummaryData;
    private getClockInEntriesData;
    private getProjectCostingListData;
    private getProjectCostingListDataByTimeFrame;
    private formatDuration;
    private getTopProjectsByEmployees;
    private getTopProjectsByTime;
    private getTopProjectsNearThreshold;
    private getCurrencySymbol;
    exportProjectReport(res: any, filters: ProjectReportExportDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    exportClockInReport(res: any, filters: ClockInReportExportDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    exportTimesheetReport(res: any, filters: TimesheetReportFiltersDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    exportProjectCostingList(res: any, filters: ProjectCostingFiltersDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    exportProjectCostingReport(res: any, filters: ProjectCostingFiltersDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private getDashboardStats;
    private getRecentProjects;
    private getNotClockedInEmployees;
    findTodaysTimeTracking(employeeId: number, companyId: number): Promise<{
        id: number;
        project_name: any;
        activity_type: any;
        total_hours: number;
        description: any;
    }[]>;
    private getRecentLeaves;
    bulkUploadTimesheets(fileBuffer: Buffer, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private parseTimesheetExcelFile;
    private parseTimesheetDates;
    private ensureProjectAssignment;
    private calculateTimeAndCost;
    private generateTimesheetErrorExcel;
    getLeaveAnalytics(filters: LeaveAnalyticsFiltersDto, authHeader: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getProjectManagementReport(filters: ProjectManagementFiltersDto, authorization: string): Promise<any>;
}
