import { Avoidable } from "@tomtom-org/maps-sdk/core"; export interface Coordinates { lat: number; lon: number; } export interface RouteResult { routes?: Array<{ summary: { lengthInMeters: number; travelTimeInSeconds: number; trafficDelayInSeconds: number; departureTime: string; arrivalTime: string; noTrafficTravelTimeInSeconds?: number; historicTrafficTravelTimeInSeconds?: number; liveTrafficIncidentsTravelTimeInSeconds?: number; trafficLengthInMeters?: number; batteryConsumptionInkWh?: number; costFactor?: number; fuelConsumptionInLiters?: number; tollCosts?: { currency?: string; value?: number; }; deviationDistance?: number; deviationTime?: number; deviationPoint?: { latitude: number; longitude: number; }; reachableRouteOffsets?: Array<{ chargeMarginInkWh: number; routeOffsetInMeters: number; point: { latitude: number; longitude: number; }; pointIndex: number; }>; }; routeReassessments?: Array<{ batteryConsumptionInkWh?: number; reachableRouteOffsets?: Array<{ chargeMarginInkWh: number; routeOffsetInMeters: number; point: { latitude: number; longitude: number; }; pointIndex: number; }>; }>; legs: Array<{ summary?: { lengthInMeters?: number; travelTimeInSeconds?: number; trafficDelayInSeconds?: number; departureTime?: string; arrivalTime?: string; noTrafficTravelTimeInSeconds?: number; historicTrafficTravelTimeInSeconds?: number; liveTrafficIncidentsTravelTimeInSeconds?: number; trafficLengthInMeters?: number; batteryConsumptionInkWh?: number; originalWaypointIndexAtEndOfLeg?: number; userDefinedPauseTimeInSeconds?: number; entryPointIndexAtEndOfLeg?: number; }; points: Array<{ latitude: number; longitude: number; altitude?: number; }>; instructions?: Array<{ routeOffsetInMeters: number; travelTimeInSeconds: number; point: { latitude: number; longitude: number; }; message: string; instructionType?: string; street?: string; maneuver?: string; exit?: number; duration?: number; distance?: number; }>; encodedPolyline?: string; encodedPolylinePrecision?: number; }>; sections?: Array<{ startPointIndex: number; endPointIndex: number; sectionType: string; travelTimeInSeconds?: number; }>; }>; formatVersion?: string; } export interface RouteOptions { routeType?: "fastest" | "shortest" | "eco" | "thrilling"; travelMode?: "car" | "pedestrian" | "bicycle" | "truck" | "taxi" | "bus" | "van"; avoid?: string | string[]; traffic?: boolean; departAt?: string; arriveAt?: string; vehicleMaxSpeed?: number; vehicleWeight?: number; vehicleWidth?: number; vehicleHeight?: number; vehicleLength?: number; vehicleCommercial?: boolean; vehicleAxleWeight?: number; vehicleLoadType?: string; vehicleNumberOfAxles?: number; vehicleAdrTunnelRestrictionCode?: string; maxAlternatives?: number; alternativeType?: "anyRoute" | "betterRoute"; minDeviationTime?: number; minDeviationDistance?: number; instructionsType?: "coded" | "text" | "tagged"; language?: string; sectionType?: string | string[]; includeTollPaymentTypes?: string; computeBestOrder?: boolean; supportingPoints?: string; supportingPointIndexOfOrigin?: number; vehicleHeading?: number; vehicleEngineType?: "combustion" | "electric"; constantSpeedConsumptionInkWhPerHundredkm?: string; currentChargeInkWh?: number; maxChargeInkWh?: number; minChargeAtDestinationInkWh?: number; minChargeAtChargingStopsInkWh?: number; chargeMarginsInkWh?: string; auxiliaryPowerInkW?: number; constantSpeedConsumptionInLitersPerHundredkm?: string; currentFuelInLiters?: number; auxiliaryPowerInLitersPerHour?: number; fuelEnergyDensityInMJoulesPerLiter?: number; accelerationEfficiency?: number; decelerationEfficiency?: number; uphillEfficiency?: number; downhillEfficiency?: number; consumptionInkWhPerkmAltitudeGain?: number; recuperationInkWhPerkmAltitudeLoss?: number; report?: string; routeRepresentation?: "polyline" | "summaryOnly" | "encodedPolyline" | "none"; extendedRouteRepresentation?: string; computeTravelTimeFor?: "all" | "none"; enhancedNarrative?: boolean; hilliness?: "low" | "normal" | "high"; windingness?: "low" | "normal" | "high"; timeConsideration?: "auto" | "linear" | "stopAndFixTime"; routeVehicleType?: string; callback?: string; } export interface RouteOptionsOrbis { routeType?: "fast" | "short" | "efficient" | "thrilling"; travelMode?: "car"; avoid?: string | string[]; traffic?: string; departAt?: string; arriveAt?: string; vehicleMaxSpeed?: number; vehicleWeight?: number; vehicleWidth?: number; vehicleHeight?: number; vehicleLength?: number; vehicleCommercial?: boolean; vehicleAxleWeight?: number; vehicleLoadType?: string; vehicleNumberOfAxles?: number; vehicleAdrTunnelRestrictionCode?: string; maxAlternatives?: number; alternativeType?: "anyRoute" | "betterRoute"; minDeviationTime?: number; minDeviationDistance?: number; instructionsType?: "coded" | "text" | "tagged"; language?: string; sectionType?: string | string[]; includeTollPaymentTypes?: string; computeBestOrder?: boolean; supportingPoints?: string; supportingPointIndexOfOrigin?: number; vehicleHeading?: number; vehicleEngineType?: "combustion" | "electric"; constantSpeedConsumptionInkWhPerHundredkm?: string; currentChargeInkWh?: number; maxChargeInkWh?: number; minChargeAtDestinationInkWh?: number; minChargeAtChargingStopsInkWh?: number; chargeMarginsInkWh?: string; auxiliaryPowerInkW?: number; constantSpeedConsumptionInLitersPerHundredkm?: string; currentFuelInLiters?: number; auxiliaryPowerInLitersPerHour?: number; fuelEnergyDensityInMJoulesPerLiter?: number; accelerationEfficiency?: number; decelerationEfficiency?: number; uphillEfficiency?: number; downhillEfficiency?: number; consumptionInkWhPerkmAltitudeGain?: number; recuperationInkWhPerkmAltitudeLoss?: number; report?: string; routeRepresentation?: "polyline" | "summaryOnly" | "encodedPolyline" | "none"; extendedRouteRepresentation?: string; computeTravelTimeFor?: "all" | "none"; enhancedNarrative?: boolean; hilliness?: "low" | "normal" | "high"; windingness?: "low" | "normal" | "high"; timeConsideration?: "auto" | "linear" | "stopAndFixTime"; routeVehicleType?: string; callback?: string; } /** * Options for calculating reachable range */ export interface ReachableRangeOptions { timeBudgetInSec?: number; distanceBudgetInMeters?: number; energyBudgetInkWh?: number; fuelBudgetInLiters?: number; travelMode?: string; routeType?: string; traffic?: boolean; avoid?: string | string[]; maxFerryLengthInMeters?: number; departAt?: string; report?: string; hilliness?: "low" | "normal" | "high"; windingness?: "low" | "normal" | "high"; vehicleMaxSpeed?: number; vehicleWeight?: number; vehicleWidth?: number; vehicleHeight?: number; vehicleLength?: number; vehicleCommercial?: boolean; vehicleAxleWeight?: number; vehicleNumberOfAxles?: number; vehicleLoadType?: string; vehicleAdrTunnelRestrictionCode?: string; vehicleEngineType?: "combustion" | "electric"; constantSpeedConsumptionInLitersPerHundredkm?: string; currentFuelInLiters?: number; auxiliaryPowerInLitersPerHour?: number; fuelEnergyDensityInMJoulesPerLiter?: number; constantSpeedConsumptionInkWhPerHundredkm?: string; currentChargeInkWh?: number; maxChargeInkWh?: number; auxiliaryPowerInkW?: number; accelerationEfficiency?: number; decelerationEfficiency?: number; uphillEfficiency?: number; downhillEfficiency?: number; consumptionInkWhPerkmAltitudeGain?: number; recuperationInkWhPerkmAltitudeLoss?: number; callback?: string; } /** * Result from calculating a reachable range */ export interface ReachableRangeResult { formatVersion: string; copyright: string; privacy: string; reachableRange: { center: { latitude: number; longitude: number; }; boundary: Array<{ latitude: number; longitude: number; }>; shells?: Array<{ points: Array<{ latitude: number; longitude: number; }>; origin: { latitude: number; longitude: number; }; }>; }; type?: string; report?: { effectiveSettings?: Array<{ key: string; value: string; }>; }; } /** * Options for calculating reachable range with TomTom Orbis Maps API */ export interface ReachableRangeOptionsOrbis { timeBudgetInSec?: number; distanceBudgetInMeters?: number; energyBudgetInkWh?: number; fuelBudgetInLiters?: number; chargeBudgetPercent?: number; remainingChargeBudgetPercent?: number; travelMode?: "car"; routeType?: "fast" | "short" | "efficient" | "thrilling"; traffic?: "live" | "historical"; avoid?: Avoidable | Avoidable[]; departAt?: string; report?: string; hilliness?: "low" | "normal" | "high"; windingness?: "low" | "normal" | "high"; vehicleMaxSpeed?: number; vehicleWeight?: number; vehicleEngineType?: "combustion" | "electric"; constantSpeedConsumptionInLitersPerHundredkm?: string; currentFuelInLiters?: number; auxiliaryPowerInLitersPerHour?: number; fuelEnergyDensityInMJoulesPerLiter?: number; constantSpeedConsumptionInkWhPerHundredkm?: string; currentChargeInkWh?: number; maxChargeInkWh?: number; auxiliaryPowerInkW?: number; accelerationEfficiency?: number; decelerationEfficiency?: number; uphillEfficiency?: number; downhillEfficiency?: number; consumptionInkWhPerkmAltitudeGain?: number; recuperationInkWhPerkmAltitudeLoss?: number; callback?: string; }