import { TripStatus } from '../common/constants/enums';
import type { JwtUserPayload } from '../auth/jwt.types';
import { TripsService } from './trips.service';
import { UpdateTripDto, UpdateTripStatusDto } from './dto/trip.dto';
export declare class TripsController {
    private readonly trips;
    constructor(trips: TripsService);
    create(actor: JwtUserPayload, body: Record<string, unknown>): Promise<{
        id: string;
        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;
        _id: import("mongoose").Types.ObjectId;
        __v: number;
    }>;
    list(actor: JwtUserPayload, userId?: string, status?: TripStatus, from?: string, to?: string, cursor?: string, limit?: string): Promise<{
        items: Record<string, unknown>[];
        nextCursor: string | null;
    }>;
    getOne(tripId: string, actor: JwtUserPayload): Promise<Record<string, unknown>>;
    update(tripId: string, actor: JwtUserPayload, dto: UpdateTripDto): Promise<{
        id: string;
        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;
        _id: import("mongoose").Types.ObjectId;
        __v: number;
    }>;
    remove(tripId: string, actor: JwtUserPayload): Promise<{
        ok: boolean;
        tripId: string;
    }>;
    updateStatus(tripId: string, actor: JwtUserPayload, dto: UpdateTripStatusDto): Promise<{
        id: string;
        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;
        _id: import("mongoose").Types.ObjectId;
        __v: number;
    }>;
}
