import { Model } from 'mongoose';
import { TripStatus } from '../common/constants/enums';
import { TripDocument } from '../trips/schemas/trip.schema';
import { DailySummaryDocument } from './schemas/daily-summary.schema';
import { MonthlySummaryDocument } from './schemas/monthly-summary.schema';
export declare class AnalyticsService {
    private readonly tripModel;
    private readonly dailyModel;
    private readonly monthlyModel;
    constructor(tripModel: Model<TripDocument>, dailyModel: Model<DailySummaryDocument>, monthlyModel: Model<MonthlySummaryDocument>);
    onTripComplete(trip: {
        userId: string;
        status: string;
    }): Promise<void>;
    recalculateDaily(userId: string, date: Date): Promise<void>;
    recalculateMonthly(userId: string, date: Date): Promise<void>;
    userReport(userId: string, from?: string, to?: string): Promise<{
        trips: {
            id: string;
            _id: import("mongoose").Types.ObjectId;
            $locals: Record<string, unknown>;
            $op: "save" | "validate" | "remove" | null;
            $where: Record<string, unknown>;
            baseModelName?: string;
            collection: import("mongoose").Collection;
            db: import("mongoose").Connection;
            errors?: import("mongoose").Error.ValidationError;
            isNew: boolean;
            schema: import("mongoose").Schema;
            tripId: string;
            userId: string;
            requestDate: Date;
            city?: string;
            fromLocation?: string;
            toLocation?: string;
            originLat?: number;
            originLng?: number;
            clientName?: string;
            destinationLat?: number;
            destinationLng?: number;
            googlePlaceId?: string;
            plannedDistance?: number;
            vehicleType?: import("../common/constants/enums").VehicleType;
            fuelType?: import("../common/constants/enums").FuelType;
            purpose?: string;
            status: TripStatus;
            totalDistance: number;
            travelDuration: number;
            idleTime: number;
            meetingDuration: number;
            productivityScore?: number;
            tripEfficiency?: number;
            startedAt?: Date;
            arrivedAt?: Date;
            completedAt?: Date;
            tripLegs?: Record<string, unknown>[];
            currentLegIndex?: number;
            __v: number;
        }[];
        summary: {
            totalDistance: number;
            travelTime: number;
            meetingTime: number;
            idleTime: number;
            avgProductivity: number;
            avgEfficiency: number;
        };
    }>;
    dailySummaries(from?: string, to?: string, userId?: string): Promise<{
        id: string;
        _id: import("mongoose").Types.ObjectId;
        $locals: Record<string, unknown>;
        $op: "save" | "validate" | "remove" | null;
        $where: Record<string, unknown>;
        baseModelName?: string;
        collection: import("mongoose").Collection;
        db: import("mongoose").Connection;
        errors?: import("mongoose").Error.ValidationError;
        isNew: boolean;
        schema: import("mongoose").Schema;
        userId: string;
        date: Date;
        totalDistance: number;
        travelTime: number;
        meetingTime: number;
        idleTime: number;
        tripsCompleted: number;
        productivityScore?: number;
        __v: number;
    }[]>;
    monthlySummaries(year?: number, userId?: string): Promise<{
        id: string;
        _id: import("mongoose").Types.ObjectId;
        $locals: Record<string, unknown>;
        $op: "save" | "validate" | "remove" | null;
        $where: Record<string, unknown>;
        baseModelName?: string;
        collection: import("mongoose").Collection;
        db: import("mongoose").Connection;
        errors?: import("mongoose").Error.ValidationError;
        isNew: boolean;
        schema: import("mongoose").Schema;
        userId: string;
        year: number;
        month: number;
        totalDistance: number;
        travelTime: number;
        meetingTime: number;
        idleTime: number;
        tripsCompleted: number;
        productivityScore?: number;
        __v: number;
    }[]>;
}
