import type { Response } from 'express';
import { ReportsService } from './reports.service';
import { ReportFiltersDto } from './dto/report-filters.dto';
import { Role } from '../common/decorators/roles.decorator';
import { ReportsDashboardService } from './reports-dashboard.service';
export declare class ReportsController {
    private readonly reportsService;
    private readonly dashboardService;
    constructor(reportsService: ReportsService, dashboardService: ReportsDashboardService);
    leavesExcel(filters: ReportFiltersDto, res: Response): Promise<void>;
    leavesCSV(filters: ReportFiltersDto, res: Response): Promise<void>;
    balancesExcel(filters: ReportFiltersDto, res: Response): Promise<void>;
    summaryPDF(filters: ReportFiltersDto, res: Response): Promise<void>;
    getDashboard(req: any): Promise<{
        role: Role;
        kpis: {
            total_users: number;
            online_users: number;
            absent_today: number;
            absent_rate_today: number;
            pending_requests: number;
            critical_balances: number;
            month_leaves: number;
            approved_this_month: number;
            rejected_this_month: number;
        };
        absent_today: {
            user_id: number;
            user_name: string;
            team: string;
            leave_type: string;
            end_date: string;
            days_left: number;
        }[];
        pending_requests: {
            id: number;
            user_name: string;
            team: string;
            leave_type: string;
            start_date: string;
            end_date: string;
            days_count: number;
            status: import("../leaves/entities/leave-request.entity").LeaveStatus;
            waiting_since: string;
        }[];
        critical_balances: {
            user_id: number;
            user_name: string;
            team: string;
            leave_type: string;
            remaining: number;
        }[];
        my_balances: {
            leave_type: string;
            acquired: number;
            taken: number;
            adjusted: number;
            remaining: number;
        }[] | null;
        period: {
            today: string;
            month_start: string;
            month_end: string;
            year: number;
        };
    }>;
}
