import { Types } from 'mongoose';
import { ModelsService } from '../models/models.service';
import { CommonService } from '../common/common.service';
import { CreateLeaveDto, UpdateLeaveDto, ListLeaveDto } from './dto/leave.dto';
export declare class LeaveService {
    private readonly models;
    private readonly commonService;
    constructor(models: ModelsService, commonService: CommonService);
    normalizeDateToMidday(val: any): number;
    private noonIstEpoch;
    private getMonthRange;
    private daysBetweenInclusive;
    private findDriverOrThrow;
    private assertNoOverlap;
    private assertNoTripConflict;
    recomputeDriverLeaveStatus(driverId: Types.ObjectId): Promise<void>;
    markLeave(dto: CreateLeaveDto, user: any): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    private formatIstDate;
    private notifyDriverOfLeave;
    updateLeave(id: string, dto: UpdateLeaveDto, user: any): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    deleteLeave(id: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    listLeaves(driverId: string, query: ListLeaveDto): Promise<{
        status: string;
        message: string;
        data: any[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    private computeMonthSummary;
    getMonthlySummary(driverId: string, month: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    getUnpaidLeaveDaysListForMonth(driverId: Types.ObjectId | string, month: string): Promise<number[]>;
}
