import { FuelType, TripStatus, VehicleType } from '../common/constants/enums';
import { CreateTripDto } from './dto/trip.dto';
import { GpsBatchDto } from '../gps/dto/gps.dto';
import { ArrivalPunchDto, DeparturePunchDto, MeetingEndPunchDto, MeetingStartPunchDto } from '../punches/dto/punch.dto';
export declare function parseVehicleType(value?: string): VehicleType | undefined;
export declare function parseFuelType(value?: string): FuelType | undefined;
export declare function toClientVehicleType(value?: VehicleType): string | null;
export declare function toClientFuelType(value?: FuelType): string | null;
export declare function toClientTripStatus(status: TripStatus): string;
export declare function toLegacyTripStatus(status: TripStatus): string;
export declare function isActiveTripStatus(status: TripStatus): boolean;
export declare function canMarkArrival(status: TripStatus): boolean;
export declare function currentLegNumber(status: TripStatus): number;
export declare function toClientPunch(punch: Record<string, unknown>): {
    id: {} | null;
    type: string;
    punchType: string;
    timestamp: {} | null;
    latitude: {} | null;
    longitude: {} | null;
    lat: {} | null;
    lng: {} | null;
    address: {} | null;
    batteryPercent: {} | null;
    gpsAccuracy: {} | null;
    speed: {} | null;
};
export declare function toClientRoutePoint(point: Record<string, unknown>): {
    id: {} | null;
    latitude: unknown;
    longitude: unknown;
    lat: unknown;
    lng: unknown;
    timestamp: {} | null;
    accuracy: {} | null;
    speed: {} | null;
};
export declare function buildLegs(trip: Record<string, unknown>, punches: ReturnType<typeof toClientPunch>[]): {
    legId: {};
    sequence: {};
    legNumber: {};
    label: string;
    fromLocation: {} | null;
    toLocation: {} | null;
    clientName: {} | null;
    purpose: {} | null;
    clientOfficeAddress: {} | null;
    isReturnLeg: boolean;
    departurePunch: {} | null;
    arrivalPunch: {} | null;
    meetingStartPunch: {} | null;
    meetingEndPunch: {} | null;
    status: string;
}[] | {
    legNumber: number;
    label: string;
    fromLocation: {} | null;
    toLocation: {} | null;
    status: string;
    departurePunch: {
        id: {} | null;
        type: string;
        punchType: string;
        timestamp: {} | null;
        latitude: {} | null;
        longitude: {} | null;
        lat: {} | null;
        lng: {} | null;
        address: {} | null;
        batteryPercent: {} | null;
        gpsAccuracy: {} | null;
        speed: {} | null;
    } | null;
    arrivalPunch: {
        id: {} | null;
        type: string;
        punchType: string;
        timestamp: {} | null;
        latitude: {} | null;
        longitude: {} | null;
        lat: {} | null;
        lng: {} | null;
        address: {} | null;
        batteryPercent: {} | null;
        gpsAccuracy: {} | null;
        speed: {} | null;
    } | null;
}[];
export declare function toClientTripSummary(trip: Record<string, unknown>): {
    requestId: string;
    userId: {} | null;
    user: Record<string, unknown> | null;
    requestDate: {} | null;
    clientName: {} | null;
    coordinates: {
        originLat: {} | null;
        originLng: {} | null;
        destinationLat: {} | null;
        destinationLng: {} | null;
    };
    status: string;
    rawStatus: string;
    isActive: boolean;
    hasDeparted: boolean;
    canMarkArrival: boolean;
    currentLegIndex: number;
    currentLeg: number;
    tripLegs: {
        legId: {};
        sequence: {};
        legNumber: {};
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        clientName: {} | null;
        purpose: {} | null;
        clientOfficeAddress: {} | null;
        isReturnLeg: boolean;
        departurePunch: {} | null;
        arrivalPunch: {} | null;
        meetingStartPunch: {} | null;
        meetingEndPunch: {} | null;
        status: string;
    }[] | {
        legNumber: number;
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        status: string;
        departurePunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
        arrivalPunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
    }[];
    legs: {
        legId: {};
        sequence: {};
        legNumber: {};
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        clientName: {} | null;
        purpose: {} | null;
        clientOfficeAddress: {} | null;
        isReturnLeg: boolean;
        departurePunch: {} | null;
        arrivalPunch: {} | null;
        meetingStartPunch: {} | null;
        meetingEndPunch: {} | null;
        status: string;
    }[] | {
        legNumber: number;
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        status: string;
        departurePunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
        arrivalPunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
    }[];
    punches: {
        id: {} | null;
        type: string;
        punchType: string;
        timestamp: {} | null;
        latitude: {} | null;
        longitude: {} | null;
        lat: {} | null;
        lng: {} | null;
        address: {} | null;
        batteryPercent: {} | null;
        gpsAccuracy: {} | null;
        speed: {} | null;
    }[];
    totalDistanceKm: {} | null;
    travelAllowance: {} | null;
    fuelRatePerKm: {} | null;
    id: string;
    tripId: string;
    fromLocation: {} | null;
    toLocation: {} | null;
    from: {} | null;
    to: {} | null;
    originLat: {} | null;
    originLng: {} | null;
    destinationLat: {} | null;
    destinationLng: {} | null;
    plannedDistance: {} | null;
    vehicleType: string | null;
    fuelType: string | null;
    purpose: {} | null;
    totalDistance: {};
    travelDuration: {};
    startedAt: {} | null;
    arrivedAt: {} | null;
    completedAt: {} | null;
    createdAt: {} | null;
    updatedAt: {} | null;
};
export declare function toClientTripDetail(trip: Record<string, unknown>, routePoints?: Record<string, unknown>[], trackingCoverageSummary?: Record<string, unknown> | null): {
    routePoints: {
        id: {} | null;
        latitude: unknown;
        longitude: unknown;
        lat: unknown;
        lng: unknown;
        timestamp: {} | null;
        accuracy: {} | null;
        speed: {} | null;
    }[];
    route: {
        id: {} | null;
        latitude: unknown;
        longitude: unknown;
        lat: unknown;
        lng: unknown;
        timestamp: {} | null;
        accuracy: {} | null;
        speed: {} | null;
    }[];
    trackingCoverageSummary: Record<string, unknown> | null;
    requestId: string;
    userId: {} | null;
    user: Record<string, unknown> | null;
    requestDate: {} | null;
    clientName: {} | null;
    coordinates: {
        originLat: {} | null;
        originLng: {} | null;
        destinationLat: {} | null;
        destinationLng: {} | null;
    };
    status: string;
    rawStatus: string;
    isActive: boolean;
    hasDeparted: boolean;
    canMarkArrival: boolean;
    currentLegIndex: number;
    currentLeg: number;
    tripLegs: {
        legId: {};
        sequence: {};
        legNumber: {};
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        clientName: {} | null;
        purpose: {} | null;
        clientOfficeAddress: {} | null;
        isReturnLeg: boolean;
        departurePunch: {} | null;
        arrivalPunch: {} | null;
        meetingStartPunch: {} | null;
        meetingEndPunch: {} | null;
        status: string;
    }[] | {
        legNumber: number;
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        status: string;
        departurePunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
        arrivalPunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
    }[];
    legs: {
        legId: {};
        sequence: {};
        legNumber: {};
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        clientName: {} | null;
        purpose: {} | null;
        clientOfficeAddress: {} | null;
        isReturnLeg: boolean;
        departurePunch: {} | null;
        arrivalPunch: {} | null;
        meetingStartPunch: {} | null;
        meetingEndPunch: {} | null;
        status: string;
    }[] | {
        legNumber: number;
        label: string;
        fromLocation: {} | null;
        toLocation: {} | null;
        status: string;
        departurePunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
        arrivalPunch: {
            id: {} | null;
            type: string;
            punchType: string;
            timestamp: {} | null;
            latitude: {} | null;
            longitude: {} | null;
            lat: {} | null;
            lng: {} | null;
            address: {} | null;
            batteryPercent: {} | null;
            gpsAccuracy: {} | null;
            speed: {} | null;
        } | null;
    }[];
    punches: {
        id: {} | null;
        type: string;
        punchType: string;
        timestamp: {} | null;
        latitude: {} | null;
        longitude: {} | null;
        lat: {} | null;
        lng: {} | null;
        address: {} | null;
        batteryPercent: {} | null;
        gpsAccuracy: {} | null;
        speed: {} | null;
    }[];
    totalDistanceKm: {} | null;
    travelAllowance: {} | null;
    fuelRatePerKm: {} | null;
    id: string;
    tripId: string;
    fromLocation: {} | null;
    toLocation: {} | null;
    from: {} | null;
    to: {} | null;
    originLat: {} | null;
    originLng: {} | null;
    destinationLat: {} | null;
    destinationLng: {} | null;
    plannedDistance: {} | null;
    vehicleType: string | null;
    fuelType: string | null;
    purpose: {} | null;
    totalDistance: {};
    travelDuration: {};
    startedAt: {} | null;
    arrivedAt: {} | null;
    completedAt: {} | null;
    createdAt: {} | null;
    updatedAt: {} | null;
};
export declare function normalizeDeparturePunch(body: Record<string, unknown>): DeparturePunchDto;
export declare function normalizeArrivalPunch(body: Record<string, unknown>): ArrivalPunchDto;
export declare function normalizeMeetingStartPunch(body: Record<string, unknown>): MeetingStartPunchDto;
export declare function normalizeMeetingEndPunch(body: Record<string, unknown>): MeetingEndPunchDto;
export declare function normalizeCreateTripInput(body: Record<string, unknown>): CreateTripDto;
export declare function normalizeGpsBatch(body: Record<string, unknown>): GpsBatchDto;
export declare function normalizeTrackingEventsBatch(body: Record<string, unknown>): {
    events: {
        type: string;
        timestamp: string;
        legId: string | undefined;
        sessionId: string | undefined;
        metadata: Record<string, unknown> | undefined;
    }[];
};
export declare function enrichTripLocationsFromPunches(trip: Record<string, unknown>, punches?: Record<string, unknown>[]): Record<string, unknown>;
export declare function toClientTrip(trip: Record<string, unknown>): {
    id: string;
    tripId: string;
    fromLocation: {} | null;
    toLocation: {} | null;
    clientName: {} | null;
    from: {} | null;
    to: {} | null;
    originLat: {} | null;
    originLng: {} | null;
    destinationLat: {} | null;
    destinationLng: {} | null;
    plannedDistance: {} | null;
    vehicleType: string | null;
    fuelType: string | null;
    purpose: {} | null;
    status: string | null;
    rawStatus: string | null;
    totalDistance: {};
    travelDuration: {};
    startedAt: {} | null;
    arrivedAt: {} | null;
    completedAt: {} | null;
    createdAt: {} | null;
    updatedAt: {} | null;
    user: {} | null;
};
