import { LeavesService } from './leaves.service';
import { CreateLeaveRequestDto } from './dto/create-leave-request.dto';
import { ValidateLeaveDto } from './dto/validate-leave.dto';
import { AdjustBalanceDto } from './dto/adjust-balance.dto';
import { SetBalanceDto } from './dto/set-balance.dto';
import { LeavesAcquisitionService } from './leaves-acquisition.service';
import { PlanningService } from '../planning/planning.service';
import { Repository } from 'typeorm';
import { LeaveType } from './entities/leave-type.entity';
export declare class LeavesController {
    private readonly leavesService;
    private readonly acquisitionService;
    private readonly planningService;
    private readonly leaveTypeRepo;
    constructor(leavesService: LeavesService, acquisitionService: LeavesAcquisitionService, planningService: PlanningService, leaveTypeRepo: Repository<LeaveType>);
    getLeaveTypes(): Promise<LeaveType[]>;
    getMyRequests(req: any): Promise<import("./entities/leave-request.entity").LeaveRequest[]>;
    calculate(req: any, startDate: string, endDate: string, leaveTypeId: string, halfDayStart?: string, halfDayEnd?: string): Promise<{
        days_count: number;
        balance?: number;
    }>;
    checkThreshold(req: any, startDate: string, endDate: string): Promise<{
        has_conflict: boolean;
        conflicts: {
            date: string;
            presence: number;
            minimum: number;
        }[];
        warning_message?: string;
    }>;
    getPending(req: any): Promise<import("./entities/leave-request.entity").LeaveRequest[]>;
    create(req: any, dto: CreateLeaveRequestDto, file?: Express.Multer.File): Promise<import("./entities/leave-request.entity").LeaveRequest & {
        threshold_warning?: string;
    }>;
    runAcquisition(year?: string): Promise<{
        updated: number;
        created: number;
    }>;
    previewAcquisition(userId: string, year?: string): Promise<{
        year: number;
        schedule: import("../users/entities/user.entity").WorkSchedule;
        acquired_cp: number;
        acquired_rtt: number;
        seniority_years: number;
        bonus_days: number;
    }>;
    getAllBalances(userId: string): Promise<(import("./entities/leave-balance.entity").LeaveBalance & {
        remaining: number;
    })[]>;
    getTeamBalances(teamId: string, leaveTypeId: string): Promise<{
        user: Partial<import("../users/entities/user.entity").User>;
        balance: import("./entities/leave-balance.entity").LeaveBalance & {
            remaining: number;
        };
    }[]>;
    getBalance(req: any, leaveTypeId: string): Promise<import("./entities/leave-balance.entity").LeaveBalance & {
        remaining: number;
    }>;
    setBalance(req: any, userId: string, dto: SetBalanceDto): Promise<import("./entities/leave-balance.entity").LeaveBalance & {
        remaining: number;
    }>;
    adjustBalance(req: any, userId: string, dto: AdjustBalanceDto): Promise<import("./entities/leave-balance.entity").LeaveBalance & {
        remaining: number;
    }>;
    validate(req: any, id: string, dto: ValidateLeaveDto): Promise<import("./entities/leave-request.entity").LeaveRequest>;
    cancel(req: any, id: string): Promise<import("./entities/leave-request.entity").LeaveRequest>;
    uploadAttachment(req: any, id: string, file: Express.Multer.File): Promise<import("./entities/leave-request.entity").LeaveRequest>;
    getOne(req: any, id: string): Promise<import("./entities/leave-request.entity").LeaveRequest>;
}
