import { TrackingService } from './tracking.service';
import { CalculateRouteDto, RecalculateEtaDto, UpdateDriverLocationDto } from './dto/tracking.dto';
export declare class TrackingController {
    private readonly trackingService;
    constructor(trackingService: TrackingService);
    createLocation(req: {
        user: {
            sub: string;
            role: string;
        };
    }, body: UpdateDriverLocationDto & {
        deliveryId: string;
    }): Promise<{
        orderId: string;
        deliveryId: string;
        driverId: string;
        location: {
            id: string;
            createdAt: Date;
            orderId: string | null;
            driverId: string;
            latitude: import("@prisma/client/runtime/library").Decimal;
            longitude: import("@prisma/client/runtime/library").Decimal;
            heading: import("@prisma/client/runtime/library").Decimal | null;
            speed: import("@prisma/client/runtime/library").Decimal | null;
            accuracy: import("@prisma/client/runtime/library").Decimal | null;
        };
        route: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryRouteStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            restaurantLatitude: import("@prisma/client/runtime/library").Decimal | null;
            restaurantLongitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLatitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLongitude: import("@prisma/client/runtime/library").Decimal | null;
            pickupDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            deliveryDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            estimatedPickupTime: number | null;
            estimatedDeliveryTime: number | null;
            encodedPolylineToRestaurant: string | null;
            encodedPolylineToCustomer: string | null;
        } | null;
    }>;
    getOrderTracking(req: {
        user: {
            sub: string;
            role: string;
        };
    }, orderId: string): Promise<{
        orderId: string;
        status: import("@prisma/client").$Enums.OrderStatus;
        trackingStatusLabel: string;
        deliveryConfirmationCode: string | null;
        restaurant: {
            id: string;
            name: string;
            latitude: import("@prisma/client/runtime/library").Decimal | null;
            longitude: import("@prisma/client/runtime/library").Decimal | null;
            addressLabel: string | null;
        };
        customer: {
            id: string;
            name: string;
            latitude: import("@prisma/client/runtime/library").Decimal | null;
            longitude: import("@prisma/client/runtime/library").Decimal | null;
            addressLabel: string | null;
        };
        driver: {
            id: string;
            name: string;
            photo: string | null;
            rating: number;
            vehiclePlate: string | null;
            vehicleModel: string | null;
        } | null;
        delivery: ({
            driver: {
                id: string;
                status: import("@prisma/client").$Enums.AccountStatus;
                createdAt: Date;
                updatedAt: Date;
                userId: string;
                documentNumber: string;
                pixKey: string | null;
                fullName: string;
                avatarUrl: string | null;
                rating: import("@prisma/client/runtime/library").Decimal;
                cnhUrl: string | null;
                vehicleDocumentUrl: string | null;
                vehiclePlate: string | null;
                vehicleModel: string | null;
                isOnline: boolean;
            } | null;
        } & {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            pricePerKm: import("@prisma/client/runtime/library").Decimal;
            distanceKm: import("@prisma/client/runtime/library").Decimal | null;
            etaMinutes: number | null;
            baseFee: import("@prisma/client/runtime/library").Decimal;
            deliveryFeeCustomer: import("@prisma/client/runtime/library").Decimal;
            driverEarning: import("@prisma/client/runtime/library").Decimal;
            platformDeliveryProfit: import("@prisma/client/runtime/library").Decimal;
            demandMultiplier: import("@prisma/client/runtime/library").Decimal;
            weatherMultiplier: import("@prisma/client/runtime/library").Decimal;
            surgeMultiplier: import("@prisma/client/runtime/library").Decimal;
            bonusAmount: import("@prisma/client/runtime/library").Decimal;
            rainBonus: import("@prisma/client/runtime/library").Decimal;
            peakBonus: import("@prisma/client/runtime/library").Decimal;
            tipsAmount: import("@prisma/client/runtime/library").Decimal;
            proofImageUrl: string | null;
            pickedUpAt: Date | null;
            deliveredAt: Date | null;
        }) | null;
        route: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryRouteStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            restaurantLatitude: import("@prisma/client/runtime/library").Decimal | null;
            restaurantLongitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLatitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLongitude: import("@prisma/client/runtime/library").Decimal | null;
            pickupDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            deliveryDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            estimatedPickupTime: number | null;
            estimatedDeliveryTime: number | null;
            encodedPolylineToRestaurant: string | null;
            encodedPolylineToCustomer: string | null;
        } | null;
        latestLocation: {
            id: string;
            createdAt: Date;
            orderId: string | null;
            driverId: string;
            latitude: import("@prisma/client/runtime/library").Decimal;
            longitude: import("@prisma/client/runtime/library").Decimal;
            heading: import("@prisma/client/runtime/library").Decimal | null;
            speed: import("@prisma/client/runtime/library").Decimal | null;
            accuracy: import("@prisma/client/runtime/library").Decimal | null;
        };
    }>;
    getRoute(req: {
        user: {
            sub: string;
            role: string;
        };
    }, orderId: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.DeliveryRouteStatus;
        createdAt: Date;
        updatedAt: Date;
        orderId: string;
        driverId: string | null;
        restaurantLatitude: import("@prisma/client/runtime/library").Decimal | null;
        restaurantLongitude: import("@prisma/client/runtime/library").Decimal | null;
        customerLatitude: import("@prisma/client/runtime/library").Decimal | null;
        customerLongitude: import("@prisma/client/runtime/library").Decimal | null;
        pickupDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
        deliveryDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
        estimatedPickupTime: number | null;
        estimatedDeliveryTime: number | null;
        encodedPolylineToRestaurant: string | null;
        encodedPolylineToCustomer: string | null;
    } | null>;
    calculateRoute(body: CalculateRouteDto): Promise<{
        distanceKm: number;
        etaMinutes: number;
        encodedPolyline: string;
        provider: "google-routes" | "google-directions" | "fallback";
        legs: unknown[];
    }>;
    recalculateEta(req: {
        user: {
            sub: string;
            role: string;
        };
    }, body: RecalculateEtaDto): Promise<{
        orderId: string;
        status: import("@prisma/client").$Enums.OrderStatus;
        trackingStatusLabel: string;
        deliveryConfirmationCode: string | null;
        restaurant: {
            id: string;
            name: string;
            latitude: import("@prisma/client/runtime/library").Decimal | null;
            longitude: import("@prisma/client/runtime/library").Decimal | null;
            addressLabel: string | null;
        };
        customer: {
            id: string;
            name: string;
            latitude: import("@prisma/client/runtime/library").Decimal | null;
            longitude: import("@prisma/client/runtime/library").Decimal | null;
            addressLabel: string | null;
        };
        driver: {
            id: string;
            name: string;
            photo: string | null;
            rating: number;
            vehiclePlate: string | null;
            vehicleModel: string | null;
        } | null;
        delivery: ({
            driver: {
                id: string;
                status: import("@prisma/client").$Enums.AccountStatus;
                createdAt: Date;
                updatedAt: Date;
                userId: string;
                documentNumber: string;
                pixKey: string | null;
                fullName: string;
                avatarUrl: string | null;
                rating: import("@prisma/client/runtime/library").Decimal;
                cnhUrl: string | null;
                vehicleDocumentUrl: string | null;
                vehiclePlate: string | null;
                vehicleModel: string | null;
                isOnline: boolean;
            } | null;
        } & {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            pricePerKm: import("@prisma/client/runtime/library").Decimal;
            distanceKm: import("@prisma/client/runtime/library").Decimal | null;
            etaMinutes: number | null;
            baseFee: import("@prisma/client/runtime/library").Decimal;
            deliveryFeeCustomer: import("@prisma/client/runtime/library").Decimal;
            driverEarning: import("@prisma/client/runtime/library").Decimal;
            platformDeliveryProfit: import("@prisma/client/runtime/library").Decimal;
            demandMultiplier: import("@prisma/client/runtime/library").Decimal;
            weatherMultiplier: import("@prisma/client/runtime/library").Decimal;
            surgeMultiplier: import("@prisma/client/runtime/library").Decimal;
            bonusAmount: import("@prisma/client/runtime/library").Decimal;
            rainBonus: import("@prisma/client/runtime/library").Decimal;
            peakBonus: import("@prisma/client/runtime/library").Decimal;
            tipsAmount: import("@prisma/client/runtime/library").Decimal;
            proofImageUrl: string | null;
            pickedUpAt: Date | null;
            deliveredAt: Date | null;
        }) | null;
        route: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryRouteStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            restaurantLatitude: import("@prisma/client/runtime/library").Decimal | null;
            restaurantLongitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLatitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLongitude: import("@prisma/client/runtime/library").Decimal | null;
            pickupDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            deliveryDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            estimatedPickupTime: number | null;
            estimatedDeliveryTime: number | null;
            encodedPolylineToRestaurant: string | null;
            encodedPolylineToCustomer: string | null;
        } | null;
        latestLocation: {
            id: string;
            createdAt: Date;
            orderId: string | null;
            driverId: string;
            latitude: import("@prisma/client/runtime/library").Decimal;
            longitude: import("@prisma/client/runtime/library").Decimal;
            heading: import("@prisma/client/runtime/library").Decimal | null;
            speed: import("@prisma/client/runtime/library").Decimal | null;
            accuracy: import("@prisma/client/runtime/library").Decimal | null;
        };
    } | {
        orderId: string;
        etaMinutes: number;
        provider: "google-routes" | "google-directions" | "fallback";
        route: {
            id: string;
            status: import("@prisma/client").$Enums.DeliveryRouteStatus;
            createdAt: Date;
            updatedAt: Date;
            orderId: string;
            driverId: string | null;
            restaurantLatitude: import("@prisma/client/runtime/library").Decimal | null;
            restaurantLongitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLatitude: import("@prisma/client/runtime/library").Decimal | null;
            customerLongitude: import("@prisma/client/runtime/library").Decimal | null;
            pickupDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            deliveryDistanceKm: import("@prisma/client/runtime/library").Decimal | null;
            estimatedPickupTime: number | null;
            estimatedDeliveryTime: number | null;
            encodedPolylineToRestaurant: string | null;
            encodedPolylineToCustomer: string | null;
        };
        timestamp: string;
    }>;
}
