@tomtom-org/maps-sdk 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4674 @@
1
+ import { BBox } from 'geojson';
2
+ import { Feature } from 'geojson';
3
+ import { FeatureCollection } from 'geojson';
4
+ import { GeoJsonObject } from 'geojson';
5
+ import { GeoJsonProperties } from 'geojson';
6
+ import { Geometry } from 'geojson';
7
+ import { LineString } from 'geojson';
8
+ import { MultiPolygon } from 'geojson';
9
+ import { Point } from 'geojson';
10
+ import { Polygon } from 'geojson';
11
+ import { Position } from 'geojson';
12
+
13
+ /**
14
+ * Structured address components for a place.
15
+ *
16
+ * Provides hierarchical address information from building number up to country level.
17
+ * Not all components are present for every place; availability depends on the location
18
+ * and data coverage.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const address: AddressProperties = {
23
+ * freeformAddress: '1600 Pennsylvania Avenue NW, Washington, DC 20500, USA',
24
+ * streetNumber: '1600',
25
+ * streetName: 'Pennsylvania Avenue NW',
26
+ * municipality: 'Washington',
27
+ * countrySubdivision: 'DC',
28
+ * postalCode: '20500',
29
+ * countryCode: 'US',
30
+ * country: 'United States',
31
+ * countryCodeISO3: 'USA'
32
+ * };
33
+ * ```
34
+ *
35
+ * @group Place
36
+ */
37
+ export declare type AddressProperties = {
38
+ /**
39
+ * Complete formatted address string.
40
+ *
41
+ * Follows the formatting conventions of the result's country of origin.
42
+ * For countries, this is the full country name.
43
+ */
44
+ freeformAddress: string;
45
+ /**
46
+ * Building or house number on the street.
47
+ */
48
+ streetNumber?: string;
49
+ /**
50
+ * Street name without the building number.
51
+ */
52
+ streetName?: string;
53
+ /**
54
+ * Subdivision of a municipality (sub-city or super-city area).
55
+ */
56
+ municipalitySubdivision?: string;
57
+ /**
58
+ * City or town name.
59
+ */
60
+ municipality?: string;
61
+ /**
62
+ * County or second-level administrative subdivision.
63
+ */
64
+ countrySecondarySubdivision?: string;
65
+ /**
66
+ * Named area or third-level administrative subdivision.
67
+ */
68
+ countryTertiarySubdivision?: string;
69
+ /**
70
+ * State or province (first-level administrative subdivision).
71
+ */
72
+ countrySubdivision?: string;
73
+ /**
74
+ * Postal code or ZIP code.
75
+ */
76
+ postalCode?: string;
77
+ /**
78
+ * Extended postal code.
79
+ *
80
+ * Availability depends on region. More precise than standard postal code.
81
+ */
82
+ extendedPostalCode?: string;
83
+ /**
84
+ * Two-letter ISO 3166-1 alpha-2 country code.
85
+ *
86
+ * Examples: 'US', 'GB', 'NL', 'DE'
87
+ */
88
+ countryCode?: string;
89
+ /**
90
+ * Full country name.
91
+ */
92
+ country?: string;
93
+ /**
94
+ * Three-letter ISO 3166-1 alpha-3 country code.
95
+ *
96
+ * Examples: 'USA', 'GBR', 'NLD', 'DEU'
97
+ *
98
+ * @see [ISO 3166-1 alpha-3 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3)
99
+ */
100
+ countryCodeISO3?: string;
101
+ /**
102
+ * Full name of the first-level administrative subdivision.
103
+ *
104
+ * Present when countrySubdivision is abbreviated. Supported for USA, Canada, and Great Britain.
105
+ * Example: "California" when countrySubdivision is "CA"
106
+ */
107
+ countrySubdivisionName?: string;
108
+ /**
109
+ * Local area or locality name.
110
+ *
111
+ * Represents a named geographic area that groups addressable objects
112
+ * without being an official administrative unit.
113
+ */
114
+ localName?: string;
115
+ };
116
+
117
+ /**
118
+ * Address range information for a street segment.
119
+ *
120
+ * Used for Address Range type results to indicate ranges of addresses
121
+ * along a street segment.
122
+ *
123
+ * @group Place
124
+ */
125
+ export declare type AddressRanges = {
126
+ /**
127
+ * Address range on the left side of the street.
128
+ *
129
+ * Looking from the 'from' point toward the 'to' point.
130
+ */
131
+ rangeLeft: string;
132
+ /**
133
+ * Address range on the right side of the street.
134
+ *
135
+ * Looking from the 'from' point toward the 'to' point.
136
+ */
137
+ rangeRight: string;
138
+ /**
139
+ * Starting coordinates of the street segment [longitude, latitude].
140
+ */
141
+ from: Position;
142
+ /**
143
+ * Ending coordinates of the street segment [longitude, latitude].
144
+ */
145
+ to: Position;
146
+ };
147
+
148
+ /**
149
+ * Generic object type with string keys and unknown values.
150
+ *
151
+ * Used as a flexible type constraint for objects where the shape is not predetermined.
152
+ * Useful for extensible property objects or when accepting arbitrary user data.
153
+ *
154
+ * @example
155
+ * ```typescript
156
+ * function processCustomData(data: Anything) {
157
+ * // Access properties dynamically
158
+ * console.log(data['customField']);
159
+ * }
160
+ * ```
161
+ *
162
+ * @group Shared
163
+ */
164
+ export declare type Anything = {
165
+ [x: string]: unknown;
166
+ };
167
+
168
+ /**
169
+ * Creates a soft waypoint with a flexible radius for route calculation.
170
+ *
171
+ * A soft waypoint allows the routing algorithm to find the optimal path within
172
+ * a specified radius of the target location, rather than forcing the route to
173
+ * pass through the exact point. This is useful for:
174
+ * - Allowing the router to stay on major roads instead of detouring
175
+ * - Creating more efficient routes when exact location isn't critical
176
+ * - Simulating "pass near" behavior in route planning
177
+ *
178
+ * The resulting waypoint is a GeoJSON Point Feature with a `radiusMeters` property
179
+ * that the routing service uses to optimize the path.
180
+ *
181
+ * @param hasLngLat The location to extract coordinates from. Can be a coordinate array,
182
+ * Point geometry, or Point Feature.
183
+ * @param radiusMeters The radius in meters within which the route can pass.
184
+ * The routing service will find the optimal point within this radius.
185
+ * @returns A waypoint Feature with the radiusMeters property set.
186
+ *
187
+ * @example
188
+ * ```typescript
189
+ * // Create a soft waypoint from coordinates
190
+ * // Route can pass anywhere within 500m of this point
191
+ * const softWaypoint = asSoftWaypoint([4.9, 52.3], 500);
192
+ *
193
+ * // Use in route calculation
194
+ * const route = await calculateRoute({
195
+ * key: 'your-api-key',
196
+ * locations: [
197
+ * [4.9, 52.3], // Hard waypoint (exact location)
198
+ * asSoftWaypoint([5.1, 52.5], 1000), // Soft waypoint (within 1km)
199
+ * [5.3, 52.7] // Hard waypoint (exact location)
200
+ * ]
201
+ * });
202
+ *
203
+ * // Create soft waypoint from a Place Feature
204
+ * const place = await geocode({ key: 'your-api-key', query: 'Amsterdam' });
205
+ * const softPlace = asSoftWaypoint(place, 2000);
206
+ * // Route will pass within 2km of Amsterdam center
207
+ * ```
208
+ *
209
+ * @see [Waypoints Guide](https://docs.tomtom.com/maps-sdk-js/guides/services/routing/waypoints-and-custom-routes)
210
+ *
211
+ * @group Route
212
+ */
213
+ export declare const asSoftWaypoint: (hasLngLat: HasLngLat, radiusMeters: number) => Waypoint;
214
+
215
+ /**
216
+ * Route features that the routing engine will attempt to avoid when calculating routes.
217
+ *
218
+ * Use these options to customize routes based on vehicle capabilities, user preferences,
219
+ * or regulatory requirements. Note that avoidance is not guaranteed if no alternative route exists.
220
+ *
221
+ * @remarks
222
+ * Available avoidance options:
223
+ * - `tollRoads`: Avoids roads requiring toll payments
224
+ * - `motorways`: Avoids high-speed limited-access highways (useful for scenic routes or vehicle restrictions)
225
+ * - `ferries`: Avoids water crossings requiring ferry transport
226
+ * - `unpavedRoads`: Avoids unpaved/dirt roads (recommended for standard vehicles)
227
+ * - `carpools`: Avoids carpool/HOV (High Occupancy Vehicle) lanes
228
+ * - `alreadyUsedRoads`: Prevents using the same road segment multiple times (useful for delivery routes)
229
+ * - `borderCrossings`: Avoids crossing international borders (useful for customs/visa considerations)
230
+ * - `tunnels`: Avoids underground tunnels (useful for vehicles carrying hazardous materials)
231
+ * - `carTrains`: Avoids car train transport segments
232
+ * - `lowEmissionZones`: Avoids zones with vehicle emission restrictions
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * // Avoid tolls and motorways for a scenic route
237
+ * const avoid: Avoidable[] = ['tollRoads', 'motorways'];
238
+ *
239
+ * // Avoid unpaved roads for a standard car
240
+ * const avoid: Avoidable[] = ['unpavedRoads'];
241
+ * ```
242
+ *
243
+ * @group Route
244
+ */
245
+ export declare type Avoidable = (typeof avoidableTypes)[number];
246
+
247
+ /**
248
+ * Array of all available route avoidance options.
249
+ *
250
+ * This constant defines the complete set of road/route features that can be avoided
251
+ * during route calculation. Use this to derive the {@link Avoidable} type or to validate
252
+ * user input against supported avoidance options.
253
+ *
254
+ * @remarks
255
+ * This is a readonly tuple used as the source of truth for valid avoidance types.
256
+ * The {@link Avoidable} type is derived from this array to ensure type safety.
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * // Check if a string is a valid avoidance type
261
+ * const userInput = 'tollRoads';
262
+ * if (avoidableTypes.includes(userInput as Avoidable)) {
263
+ * // userInput is valid
264
+ * }
265
+ *
266
+ * // Iterate over all available options
267
+ * avoidableTypes.forEach(type => {
268
+ * console.log(`Available option: ${type}`);
269
+ * });
270
+ * ```
271
+ *
272
+ * @group Route
273
+ */
274
+ export declare const avoidableTypes: readonly ["tollRoads", "motorways", "ferries", "unpavedRoads", "carpools", "alreadyUsedRoads", "borderCrossings", "tunnels", "carTrains", "lowEmissionZones"];
275
+
276
+ /**
277
+ * Calculate the center of bbox
278
+ * @ignore
279
+ * @param bbox
280
+ * */
281
+ export declare const bboxCenter: (bbox: BBox) => Position;
282
+
283
+ /**
284
+ * @ignore
285
+ * @param bboxToContain
286
+ * @param bboxToExpand
287
+ */
288
+ export declare const bboxExpandedWithBBox: (bboxToContain: OptionalBBox, bboxToExpand?: BBox) => OptionalBBox;
289
+
290
+ /**
291
+ * Expands the given bounding box with the given GeoJSON.
292
+ * * If the feature has also a bounding box, the latter is considered instead.
293
+ * * If the given bounding box is undefined, the given point is considered alone.
294
+ * This results in a zero-sized bounding box or the point bbox if it exists.
295
+ * @ignore
296
+ * @param geoJson
297
+ * @param bboxToExpand
298
+ */
299
+ export declare const bboxExpandedWithGeoJSON: (geoJson: GeoJsonObject, bboxToExpand?: BBox) => OptionalBBox;
300
+
301
+ /**
302
+ * Expands the given bounding box with the given position.
303
+ * * If the given bounding box is undefined, the given position is considered alone.
304
+ * This results in a zero-sized bounding box.
305
+ * @ignore
306
+ * @param positionToContain
307
+ * @param bboxToExpand
308
+ */
309
+ export declare const bboxExpandedWithPosition: (positionToContain: Position, bboxToExpand?: BBox) => OptionalBBox;
310
+
311
+ /**
312
+ * Calculates the bounding box which contains all the given bounding boxes.
313
+ * @ignore
314
+ * @param bboxes
315
+ */
316
+ export declare const bboxFromBBoxes: (bboxes: OptionalBBox[]) => OptionalBBox;
317
+
318
+ /**
319
+ * Calculates a bounding box from an array of coordinates.
320
+ * * If the array is beyond a certain size, it doesn't scan it fully,
321
+ * for performance, but still ensures a decent accuracy.
322
+ *
323
+ * @ignore
324
+ * @param coordinates Should always be passed, but undefined is also supported, resulting in undefined bbox.
325
+ */
326
+ export declare const bboxFromCoordsArray: (coordinates: Position[] | undefined) => OptionalBBox;
327
+
328
+ /**
329
+ * Extracts or calculates a bounding box from GeoJSON objects.
330
+ *
331
+ * This utility function handles various GeoJSON types and automatically determines
332
+ * the best approach to obtain a bounding box:
333
+ * - Uses existing `bbox` properties when available (fastest)
334
+ * - Calculates from geometry coordinates when needed
335
+ * - Aggregates bounding boxes from collections
336
+ * - Optimizes large geometries by sampling points for performance
337
+ *
338
+ * The function prioritizes existing bbox fields over geometry calculations, which is
339
+ * important for Point features from TomTom services that may have bbox representing
340
+ * a broader area than just the point location.
341
+ *
342
+ * @param hasBBox A GeoJSON object (Feature, FeatureCollection, Geometry, etc.) or array of such objects
343
+ * @returns The bounding box as `[minLng, minLat, maxLng, maxLat]`, or `undefined` if input is invalid
344
+ *
345
+ * @example
346
+ * ```typescript
347
+ * // From a Feature with existing bbox
348
+ * const place = await geocode({ key: 'key', query: 'Amsterdam' });
349
+ * const bbox = bboxFromGeoJSON(place);
350
+ * // Returns the bbox that came with the place
351
+ *
352
+ * // From a Polygon geometry (calculates bbox)
353
+ * const polygon = {
354
+ * type: 'Polygon',
355
+ * coordinates: [[
356
+ * [4.88, 52.36],
357
+ * [4.90, 52.36],
358
+ * [4.90, 52.38],
359
+ * [4.88, 52.38],
360
+ * [4.88, 52.36]
361
+ * ]]
362
+ * };
363
+ * const polyBbox = bboxFromGeoJSON(polygon);
364
+ * // Returns: [4.88, 52.36, 4.90, 52.38]
365
+ *
366
+ * // From a FeatureCollection (aggregates all features)
367
+ * const places = await search({ key: 'key', query: 'coffee' });
368
+ * const collectionBbox = bboxFromGeoJSON(places);
369
+ * // Returns bbox encompassing all search results
370
+ *
371
+ * // From a LineString (calculates from coordinates)
372
+ * const route = await calculateRoute({
373
+ * key: 'key',
374
+ * locations: [[4.9, 52.3], [4.5, 51.9]]
375
+ * });
376
+ * const routeBbox = bboxFromGeoJSON(route.routes[0].geometry);
377
+ * // Returns bbox containing the entire route
378
+ *
379
+ * // From an array of GeoJSON objects
380
+ * const multiBbox = bboxFromGeoJSON([place1, place2, place3]);
381
+ * // Returns bbox encompassing all three places
382
+ * ```
383
+ *
384
+ * @group Shared
385
+ */
386
+ export declare const bboxFromGeoJSON: (hasBBox: HasBBox) => OptionalBBox;
387
+
388
+ /**
389
+ * Returns the given bbox if it has area, or undefined otherwise.
390
+ * @ignore
391
+ * @param bbox The BBox to verify. If undefined, undefined is returned.
392
+ */
393
+ export declare const bboxOnlyIfWithArea: (bbox: OptionalBBox) => OptionalBBox;
394
+
395
+ /**
396
+ * Brand information for a POI.
397
+ *
398
+ * Identifies the commercial brand or chain associated with a location.
399
+ * Useful for finding specific franchise locations or filtering by brand.
400
+ *
401
+ * @example
402
+ * ```typescript
403
+ * const brand: Brand = {
404
+ * name: 'Starbucks'
405
+ * };
406
+ * ```
407
+ *
408
+ * @group Place
409
+ */
410
+ export declare type Brand = {
411
+ /**
412
+ * Brand name.
413
+ *
414
+ * The commercial or franchise name (e.g., 'McDonald\'s', 'Shell', 'Hilton').
415
+ */
416
+ name: string;
417
+ };
418
+
419
+ /**
420
+ * Traffic incident cause based on TPEG2-TEC standard.
421
+ *
422
+ * TPEG (Transport Protocol Experts Group) codes provide standardized
423
+ * classification of traffic incident causes.
424
+ *
425
+ * @see [TPEG2-TEC Standard](https://www.iso.org/standard/59231.html)
426
+ *
427
+ * @group Route
428
+ */
429
+ export declare type CauseTEC = {
430
+ /**
431
+ * Main cause code from TPEG2-TEC standard.
432
+ *
433
+ * Primary classification of what caused the incident.
434
+ */
435
+ mainCauseCode: number;
436
+ /**
437
+ * Optional sub-cause code from TPEG2-TEC standard.
438
+ *
439
+ * More specific classification under the main cause.
440
+ */
441
+ subCauseCode?: number;
442
+ };
443
+
444
+ /**
445
+ * Data source reference for EV charging availability.
446
+ *
447
+ * @example
448
+ * ```typescript
449
+ * // Use this ID with the EV Charging Stations Availability service
450
+ * const dataSource: ChargingAvailabilityDataSource = {
451
+ * id: 'charging-park-123'
452
+ * };
453
+ * ```
454
+ *
455
+ * @group Place
456
+ */
457
+ export declare type ChargingAvailabilityDataSource = {
458
+ /**
459
+ * Charging availability ID for the EV Charging Stations Availability service.
460
+ *
461
+ * Pass this value as the chargingAvailability parameter to fetch
462
+ * real-time status of charging points and connectors.
463
+ */
464
+ id?: string;
465
+ };
466
+
467
+ /**
468
+ * Information about a specific charging connection at a charging point.
469
+ *
470
+ * Describes the technical specifications of a charging connector including
471
+ * plug type, voltage, current, and power ratings.
472
+ *
473
+ * @group Route
474
+ */
475
+ export declare type ChargingConnectionInfo = {
476
+ /**
477
+ * The plug type for this charging connection.
478
+ *
479
+ * Must be compatible with the vehicle's charging port.
480
+ */
481
+ plugType: PlugType;
482
+ /**
483
+ * The rated voltage in volts (V) of the charging process.
484
+ *
485
+ * Common values: 120V, 240V (AC), 400V, 800V (DC)
486
+ */
487
+ voltageInV?: number;
488
+ /**
489
+ * The rated current in amperes (A) of the charging process.
490
+ *
491
+ * Determines the charging speed along with voltage.
492
+ */
493
+ currentInA?: number;
494
+ /**
495
+ * The current type (AC/DC) for this charging connection.
496
+ *
497
+ * - AC: Alternating current (slower charging, 1-phase or 3-phase)
498
+ * - DC: Direct current (fast charging)
499
+ */
500
+ currentType?: CurrentType;
501
+ /**
502
+ * The rated maximum power in kilowatts (kW) of the charging connection.
503
+ *
504
+ * Indicates the maximum charging speed. Common values:
505
+ * - 3-7 kW: Level 1/2 AC charging
506
+ * - 7-22 kW: Level 2 AC charging
507
+ * - 50-350 kW: DC fast charging
508
+ */
509
+ chargingPowerInkW?: number;
510
+ /**
511
+ * The charging speed classification of this charging connection.
512
+ *
513
+ * @remarks
514
+ * - `slow`: Typically up to 12 kW (Level 1 AC charging)
515
+ * - `regular`: Typically between 12 kW and 50 kW (Level 2 AC charging)
516
+ * - `fast`: Typically between 50 kW and 150 kW (DC fast charging)
517
+ * - `ultra-fast`: Typically above 150 kW (High-power DC fast charging)
518
+ */
519
+ chargingSpeed?: ChargingSpeed;
520
+ };
521
+
522
+ /**
523
+ * Information about an EV charging park.
524
+ *
525
+ * Describes the charging infrastructure at a location, including available
526
+ * connector types and counts. This is static information about the facility.
527
+ *
528
+ * @example
529
+ * ```typescript
530
+ * const chargingPark: ChargingPark = {
531
+ * connectors: [
532
+ * { id: 'c1', type: 'IEC62196Type2CCS', ratedPowerKW: 150, ... },
533
+ * { id: 'c2', type: 'Chademo', ratedPowerKW: 50, ... }
534
+ * ],
535
+ * connectorCounts: [
536
+ * { connector: {...}, count: 4, statusCounts: {} },
537
+ * { connector: {...}, count: 2, statusCounts: {} }
538
+ * ]
539
+ * };
540
+ * ```
541
+ *
542
+ * @group Place
543
+ */
544
+ export declare type ChargingPark = {
545
+ /**
546
+ * Array of all unique connector types offered at this charging park.
547
+ *
548
+ * Each connector represents a different charging standard available.
549
+ * Use this to determine compatibility with your vehicle.
550
+ */
551
+ connectors: Connector[];
552
+ /**
553
+ * Count of connectors grouped by type and power level.
554
+ *
555
+ * Provides aggregate counts without real-time availability status.
556
+ * This is static infrastructure information about how many of each
557
+ * connector type exist at the location.
558
+ *
559
+ * @remarks
560
+ * For real-time availability, use the availability property instead.
561
+ * This field shows total counts regardless of current operational status.
562
+ */
563
+ connectorCounts: Omit<ConnectorAvailability, 'statusCounts'>[];
564
+ };
565
+
566
+ /**
567
+ * Charging park with optional real-time availability data.
568
+ *
569
+ * Combines static infrastructure information with dynamic availability status
570
+ * when available from the EV Charging Station Availability service.
571
+ *
572
+ * @example
573
+ * ```typescript
574
+ * const parkWithAvailability: ChargingParkWithAvailability = {
575
+ * connectors: [...],
576
+ * connectorCounts: [...],
577
+ * availability: {
578
+ * id: 'park-123',
579
+ * chargingStations: [...],
580
+ * chargingPointAvailability: { count: 10, statusCounts: {...} },
581
+ * // ... real-time status data
582
+ * }
583
+ * };
584
+ * ```
585
+ *
586
+ * @group Place
587
+ */
588
+ export declare type ChargingParkWithAvailability = ChargingPark & {
589
+ /**
590
+ * Real-time availability information for this charging park.
591
+ *
592
+ * Present only if availability data has been fetched from the
593
+ * EV Charging Station Availability service. Contains current
594
+ * operational status for all charging points and connectors.
595
+ *
596
+ * @remarks
597
+ * To get availability data:
598
+ * 1. Extract the chargingAvailability ID from place.dataSources
599
+ * 2. Call the EV Charging Stations Availability service
600
+ * 3. Merge the result into this property
601
+ */
602
+ availability?: ChargingStationsAvailability;
603
+ };
604
+
605
+ /**
606
+ * Payment option configuration for a charging station.
607
+ *
608
+ * Describes a specific payment method and associated payment brands/networks
609
+ * accepted at a charging location.
610
+ *
611
+ * @remarks
612
+ * The `brands` array may include specific payment network names or provider brands
613
+ * that are accepted when using the specified payment method.
614
+ *
615
+ * @example
616
+ * ```typescript
617
+ * // Credit card payment with specific brands
618
+ * const paymentOption: ChargingPaymentOption = {
619
+ * method: 'Direct',
620
+ * brands: ['Visa', 'Mastercard', 'American Express']
621
+ * };
622
+ *
623
+ * // Subscription-based payment
624
+ * const subscriptionOption: ChargingPaymentOption = {
625
+ * method: 'Subscription',
626
+ * brands: ['ChargePoint', 'EVgo']
627
+ * };
628
+ * ```
629
+ *
630
+ * @group Route
631
+ */
632
+ export declare type ChargingPaymentOption = {
633
+ /**
634
+ * The payment method type accepted at this charging station.
635
+ */
636
+ method: PaymentMethod;
637
+ /**
638
+ * Optional list of specific payment brands or networks accepted.
639
+ *
640
+ * Examples: credit card brands (Visa, Mastercard), charging networks
641
+ * (ChargePoint, EVgo), or payment apps (Apple Pay, Google Pay).
642
+ */
643
+ brands?: string[];
644
+ };
645
+
646
+ /**
647
+ * Individual charging point (EVSE - Electric Vehicle Supply Equipment).
648
+ *
649
+ * Represents a single charging unit with one or more connectors.
650
+ *
651
+ * @remarks
652
+ * A charging station typically contains multiple charging points.
653
+ * Each charging point can have multiple connectors of different types.
654
+ *
655
+ * @example
656
+ * ```typescript
657
+ * const chargingPoint: ChargingPoint = {
658
+ * evseId: 'EVSE-001',
659
+ * status: 'Available',
660
+ * capabilities: ['CreditCardPayable', 'RemoteStartStopCapable', 'PlugAndCharge'],
661
+ * restrictions: ['EvOnly'],
662
+ * connectors: [
663
+ * { id: 'conn-1', type: 'IEC62196Type2CCS', ratedPowerKW: 150, ... }
664
+ * ]
665
+ * };
666
+ * ```
667
+ *
668
+ * @group Place
669
+ */
670
+ export declare type ChargingPoint = {
671
+ /**
672
+ * Unique identifier for this charging point (EVSE ID).
673
+ *
674
+ * Often follows international standards like ISO 15118.
675
+ */
676
+ evseId: string;
677
+ /**
678
+ * Capabilities and features of this charging point.
679
+ *
680
+ * Indicates payment options, remote control, and advanced features.
681
+ */
682
+ capabilities: ChargingPointCapability[];
683
+ /**
684
+ * Usage or parking restrictions for this charging point.
685
+ *
686
+ * Specifies who can use the charger or special parking rules.
687
+ */
688
+ restrictions: ChargingPointRestriction[];
689
+ /**
690
+ * Real-time operational status of this charging point.
691
+ *
692
+ * Indicates if the charger is available, occupied, or out of service.
693
+ */
694
+ status: ChargingPointStatus;
695
+ /**
696
+ * Physical connectors available at this charging point.
697
+ *
698
+ * Each connector represents a different plug type and charging capability.
699
+ */
700
+ connectors?: Connector[];
701
+ };
702
+
703
+ /**
704
+ * Aggregated availability count for charging points or connectors.
705
+ *
706
+ * Provides a summary of how many units are in each operational status.
707
+ *
708
+ * @example
709
+ * ```typescript
710
+ * const availability: ChargingPointAvailability = {
711
+ * count: 10, // Total of 10 charging points
712
+ * statusCounts: {
713
+ * Available: 6,
714
+ * Occupied: 3,
715
+ * OutOfService: 1
716
+ * }
717
+ * };
718
+ * ```
719
+ *
720
+ * @group Place
721
+ */
722
+ export declare type ChargingPointAvailability = {
723
+ /**
724
+ * Total number of charging points or connectors.
725
+ *
726
+ * Depends on context:
727
+ * - For ChargingPointAvailability: total number of charging points
728
+ * - For ConnectorAvailability: total number of connectors of this type
729
+ */
730
+ count: number;
731
+ /**
732
+ * Breakdown of units by operational status.
733
+ *
734
+ * Maps each status to the number of units in that status.
735
+ * Only includes statuses that have at least one unit.
736
+ *
737
+ * @example
738
+ * ```typescript
739
+ * statusCounts: {
740
+ * Available: 5,
741
+ * Occupied: 2,
742
+ * OutOfService: 1
743
+ * }
744
+ * ```
745
+ */
746
+ statusCounts: Partial<Record<ChargingPointStatus, number>>;
747
+ };
748
+
749
+ /**
750
+ * Possible capabilities for a charging point.
751
+ * @group Place
752
+ */
753
+ export declare const chargingPointCapabilities: readonly ["ChargingProfileCapable", "ChargingPreferencesCapable", "ChipCardSupport", "ContactlessCardSupport", "CreditCardPayable", "DebitCardPayable", "PedTerminal", "RemoteStartStopCapable", "Reservable", "RfidReader", "StartSessionConnectorRequired", "TokenGroupCapable", "UnlockCapable", "PlugAndCharge", "Unknown"];
754
+
755
+ /**
756
+ * Capability of a charging point.
757
+ *
758
+ * Describes features and payment options available at the charging point.
759
+ *
760
+ * @remarks
761
+ * - `ChargingProfileCapable`: Supports custom charging profiles
762
+ * - `ChargingPreferencesCapable`: Supports charging preferences
763
+ * - `ChipCardSupport`: Payment terminal accepts chip cards
764
+ * - `ContactlessCardSupport`: Payment terminal accepts contactless cards
765
+ * - `CreditCardPayable`: Accepts credit card payments
766
+ * - `DebitCardPayable`: Accepts debit card payments
767
+ * - `PedTerminal`: Has PIN entry device for payments
768
+ * - `RemoteStartStopCapable`: Can be started/stopped remotely
769
+ * - `Reservable`: Supports reservations
770
+ * - `RfidReader`: Supports RFID token authorization
771
+ * - `StartSessionConnectorRequired`: Requires connector ID to start session
772
+ * - `TokenGroupCapable`: Supports token groups for start/stop with different tokens
773
+ * - `UnlockCapable`: Connector can be remotely unlocked
774
+ * - `PlugAndCharge`: Supports ISO 15118 Plug & Charge (automatic authentication)
775
+ * - `Unknown`: Capability not specified
776
+ *
777
+ * @example
778
+ * ```typescript
779
+ * // Check for specific capabilities
780
+ * const capabilities: ChargingPointCapability[] = [
781
+ * 'CreditCardPayable',
782
+ * 'Reservable',
783
+ * 'RemoteStartStopCapable'
784
+ * ];
785
+ * ```
786
+ *
787
+ * @group Place
788
+ */
789
+ export declare type ChargingPointCapability = (typeof chargingPointCapabilities)[number];
790
+
791
+ /**
792
+ * Parking or usage restrictions for a charging point.
793
+ *
794
+ * Indicates special requirements or limitations for using the charging location.
795
+ *
796
+ * @remarks
797
+ * - `EvOnly`: Reserved parking spot for electric vehicles only
798
+ * - `Plugged`: Parking allowed only while actively charging
799
+ * - `Disabled`: Reserved for disabled persons with valid identification
800
+ * - `Customers`: For customers/guests only (e.g., hotel, shop)
801
+ * - `Motorcycles`: Suitable only for electric motorcycles or scooters
802
+ *
803
+ * @example
804
+ * ```typescript
805
+ * const restrictions: ChargingPointRestriction[] = ['EvOnly', 'Customers'];
806
+ * ```
807
+ *
808
+ * @group Place
809
+ */
810
+ export declare type ChargingPointRestriction = (typeof chargingPointRestrictions)[number];
811
+
812
+ /**
813
+ * @group Place
814
+ */
815
+ export declare const chargingPointRestrictions: readonly ["EvOnly", "Plugged", "Disabled", "Customers", "Motorcycles"];
816
+
817
+ /**
818
+ * Real-time operational status of a charging point.
819
+ *
820
+ * @remarks
821
+ * - `Available`: Ready for use, not currently occupied
822
+ * - `Reserved`: Reserved by another user
823
+ * - `Occupied`: Currently in use
824
+ * - `OutOfService`: Not operational (maintenance or malfunction)
825
+ * - `Unknown`: Status information unavailable
826
+ *
827
+ * @example
828
+ * ```typescript
829
+ * const status: ChargingPointStatus = 'Available';
830
+ * ```
831
+ *
832
+ * @group Place
833
+ */
834
+ export declare type ChargingPointStatus = (typeof chargingPointStatus)[number];
835
+
836
+ /**
837
+ * @group Place
838
+ */
839
+ export declare const chargingPointStatus: readonly ["Available", "Reserved", "Occupied", "OutOfService", "Unknown"];
840
+
841
+ /**
842
+ * @group Route
843
+ */
844
+ export declare type ChargingSpeed = 'slow' | 'regular' | 'fast' | 'ultra-fast';
845
+
846
+ /**
847
+ * Electric vehicle charging station.
848
+ *
849
+ * Represents a complete charging station facility with one or more charging points.
850
+ * A station is typically at a single location but may have multiple charging units.
851
+ *
852
+ * @example
853
+ * ```typescript
854
+ * const station: ChargingStation = {
855
+ * id: 'station-123',
856
+ * chargingPoints: [
857
+ * { evseId: 'EVSE-001', status: 'Available', ... },
858
+ * { evseId: 'EVSE-002', status: 'Occupied', ... }
859
+ * ]
860
+ * };
861
+ * ```
862
+ *
863
+ * @group Place
864
+ */
865
+ export declare type ChargingStation = {
866
+ /**
867
+ * Unique identifier for the charging station.
868
+ */
869
+ id: string;
870
+ /**
871
+ * Array of charging points available at this station.
872
+ *
873
+ * Each charging point can serve one vehicle at a time.
874
+ */
875
+ chargingPoints: ChargingPoint[];
876
+ };
877
+
878
+ /**
879
+ * @group Place
880
+ */
881
+ export declare const chargingStationAccessTypes: readonly ["Public", "Authorized", "Restricted", "Private", "Unknown"];
882
+
883
+ /**
884
+ * Access type for EV charging stations.
885
+ *
886
+ * Indicates who can use the charging station.
887
+ *
888
+ * @remarks
889
+ * - `Public`: Open to all electric vehicle drivers
890
+ * - `Authorized`: Requires membership, subscription, or authorization
891
+ * - `Restricted`: Limited access (e.g., hotel guests, employees only)
892
+ * - `Private`: Private use only, not available to public
893
+ * - `Unknown`: Access type not specified
894
+ *
895
+ * @example
896
+ * ```typescript
897
+ * const accessType: ChargingStationsAccessType = 'Public';
898
+ * ```
899
+ *
900
+ * @group Place
901
+ */
902
+ export declare type ChargingStationsAccessType = (typeof chargingStationAccessTypes)[number];
903
+
904
+ /**
905
+ * Real-time availability information for EV charging stations.
906
+ *
907
+ * Provides comprehensive status information including individual charging points,
908
+ * aggregated availability by connector type, and access information.
909
+ *
910
+ * @remarks
911
+ * This data is typically retrieved from the EV Charging Stations Availability service
912
+ * and provides real-time operational status. Use this to:
913
+ * - Display available charging points on a map
914
+ * - Filter by connector type and status
915
+ * - Show aggregated availability statistics
916
+ * - Check if a station is accessible and open
917
+ *
918
+ * @example
919
+ * ```typescript
920
+ * const availability: ChargingStationsAvailability = {
921
+ * id: 'charging-park-123',
922
+ * chargingStations: [...], // Individual stations with detailed status
923
+ * chargingPointAvailability: {
924
+ * count: 10,
925
+ * statusCounts: { Available: 7, Occupied: 3 }
926
+ * },
927
+ * connectorAvailabilities: [
928
+ * { connector: { type: 'IEC62196Type2CCS', ratedPowerKW: 150, ... }, count: 4, ... },
929
+ * { connector: { type: 'Chademo', ratedPowerKW: 50, ... }, count: 2, ... }
930
+ * ],
931
+ * accessType: 'Public',
932
+ * openingHours: { mode: 'nextSevenDays', ... }
933
+ * };
934
+ * ```
935
+ *
936
+ * @group Place
937
+ */
938
+ export declare type ChargingStationsAvailability = {
939
+ /**
940
+ * Unique identifier for the charging park or facility.
941
+ *
942
+ * Matches the ID used to request availability information.
943
+ */
944
+ id: string;
945
+ /**
946
+ * Array of charging stations with detailed point-level status.
947
+ *
948
+ * Each station contains individual charging points with real-time status,
949
+ * capabilities, and connector information. Use this for detailed views
950
+ * showing the status of each charging point.
951
+ */
952
+ chargingStations: ChargingStation[];
953
+ /**
954
+ * Aggregated availability counts across all charging points.
955
+ *
956
+ * Provides a quick summary of total charging points and their statuses.
957
+ * Useful for displaying overall availability without iterating through
958
+ * individual stations and points.
959
+ *
960
+ * @example
961
+ * ```typescript
962
+ * // Display: "7 of 10 chargers available"
963
+ * const total = chargingPointAvailability.count;
964
+ * const available = chargingPointAvailability.statusCounts.Available || 0;
965
+ * ```
966
+ */
967
+ chargingPointAvailability: ChargingPointAvailability;
968
+ /**
969
+ * Availability grouped by connector type and power level.
970
+ *
971
+ * Useful for displaying connector-specific availability, allowing users
972
+ * to quickly see if their required connector type is available.
973
+ *
974
+ * @example
975
+ * ```typescript
976
+ * // Find availability for CCS Type 2 connectors
977
+ * const ccsAvailability = connectorAvailabilities.find(
978
+ * ca => ca.connector.type === 'IEC62196Type2CCS'
979
+ * );
980
+ * ```
981
+ */
982
+ connectorAvailabilities: ConnectorAvailability[];
983
+ /**
984
+ * Access level for these charging stations.
985
+ *
986
+ * Indicates if stations are public, require authorization, or have restrictions.
987
+ */
988
+ accessType: ChargingStationsAccessType;
989
+ /**
990
+ * Operating hours for the charging facility.
991
+ *
992
+ * Indicates when the charging park is accessible. Note that even if chargers
993
+ * are available 24/7, the facility itself may have restricted access hours.
994
+ */
995
+ openingHours?: OpeningHours;
996
+ };
997
+
998
+ /**
999
+ * Information about a battery charging stop along an electric vehicle route.
1000
+ *
1001
+ * A GeoJSON Feature representing a charging location where an EV needs to stop
1002
+ * and recharge during a long-distance journey (LDEVR - Long Distance EV Routing).
1003
+ *
1004
+ * @remarks
1005
+ * **Structure:**
1006
+ * - Extends {@link Place} (GeoJSON Feature with Point geometry)
1007
+ * - Includes all {@link CommonPlaceProps} (type, address, poi, chargingPark, etc.)
1008
+ * - Adds charging-specific properties from {@link ChargingStopProps}
1009
+ *
1010
+ * **When Provided:**
1011
+ * - For EV routes where charging is needed to reach the destination
1012
+ * - At the end of route legs where battery charge is insufficient for the next leg
1013
+ * - Contains both required and optional charging stop details
1014
+ *
1015
+ * **Key Properties:**
1016
+ * - `id`: Unique string identifier for this feature, corresponds to charging park ID.
1017
+ * - `type`: Always 'Feature' (GeoJSON)
1018
+ * - `geometry`: Point geometry with charging park coordinates [longitude, latitude]
1019
+ * - `properties`: Combined common place properties and charging-specific details
1020
+ * - Standard place info: `type`, `address`, `poi`, `chargingPark`
1021
+ * - Charging details: `chargingParkId`, `chargingParkUuid`, `chargingConnections`
1022
+ * - Route planning: `chargingTimeInSeconds`, `targetChargeInkWh`, `targetChargeInPCT`
1023
+ * - Metadata: `chargingParkName`, `chargingParkOperatorName`, `chargingParkPowerInkW`
1024
+ *
1025
+ * @example
1026
+ * ```typescript
1027
+ * const chargingStop: ChargingStop = {
1028
+ * id: 'charging-stop-1',
1029
+ * type: 'Feature',
1030
+ * geometry: {
1031
+ * type: 'Point',
1032
+ * coordinates: [4.8945, 52.3667]
1033
+ * },
1034
+ * properties: {
1035
+ * // CommonPlaceProps
1036
+ * type: 'POI',
1037
+ * address: {
1038
+ * freeformAddress: 'Amsterdam Central Station',
1039
+ * municipality: 'Amsterdam',
1040
+ * country: 'Netherlands'
1041
+ * },
1042
+ * // ChargingStopProps
1043
+ * chargingParkId: 'park123',
1044
+ * chargingParkUuid: 'uuid-123-456',
1045
+ * chargingParkName: 'Amsterdam Central Station - North Side',
1046
+ * chargingParkOperatorName: 'Ionity',
1047
+ * chargingConnections: [{
1048
+ * plugType: 'IEC_62196_Type_2_Connector_Cable_Attached',
1049
+ * chargingPowerInkW: 150,
1050
+ * currentType: 'DC'
1051
+ * }],
1052
+ * chargingTimeInSeconds: 1200,
1053
+ * chargingParkPowerInkW: 150,
1054
+ * chargingStopType: 'Auto_Generated',
1055
+ * targetChargeInkWh: 75,
1056
+ * targetChargeInPCT: 75
1057
+ * }
1058
+ * };
1059
+ * ```
1060
+ *
1061
+ * @group Route
1062
+ */
1063
+ export declare type ChargingStop = Place<ChargingStopProps>;
1064
+
1065
+ /**
1066
+ * Properties specific to charging stops in electric vehicle routes.
1067
+ *
1068
+ * These properties are combined with {@link CommonPlaceProps} to form
1069
+ * a complete {@link ChargingStop} object.
1070
+ *
1071
+ * @group Route
1072
+ */
1073
+ export declare type ChargingStopProps = CommonPlaceProps & {
1074
+ /**
1075
+ * Unique identifier for the charging park.
1076
+ */
1077
+ chargingParkId: string;
1078
+ /**
1079
+ * Array of available charging connections at this park.
1080
+ *
1081
+ * Each connection specifies plug type, power ratings, and current type.
1082
+ */
1083
+ chargingConnections: ChargingConnectionInfo[];
1084
+ /**
1085
+ * Estimated time in seconds required to charge the battery at this stop.
1086
+ *
1087
+ * Calculated based on:
1088
+ * - Current battery charge level
1089
+ * - Target charge level for next leg
1090
+ * - Charging power of the selected connector
1091
+ * - Battery charging curve characteristics
1092
+ */
1093
+ chargingTimeInSeconds: number;
1094
+ /**
1095
+ * The unique UUID identifier of this charging park.
1096
+ *
1097
+ * This universally unique identifier can be used to:
1098
+ * - Check real-time availability of charging stations
1099
+ * - Query detailed charging park information
1100
+ * - Track charging park status and updates
1101
+ * - Cross-reference with TomTom EV Charging Stations API
1102
+ *
1103
+ * @remarks
1104
+ * Use this UUID with the EV Charging Stations Availability API to get
1105
+ * real-time connector availability before arriving at the charging stop.
1106
+ *
1107
+ * @example
1108
+ * ```typescript
1109
+ * // Use UUID to check availability
1110
+ * const availability = await evChargingAvailability.get({
1111
+ * chargingAvailability: chargingStop.chargingParkUuid
1112
+ * });
1113
+ * ```
1114
+ */
1115
+ chargingParkUuid: string;
1116
+ /**
1117
+ * Detailed information about the recommended charging connection for this stop.
1118
+ *
1119
+ * Specifies which connector type, power level, and charging specifications
1120
+ * should be used at this charging park for optimal charging.
1121
+ *
1122
+ * @remarks
1123
+ * This is typically the best connector available that matches:
1124
+ * - Vehicle's charging capabilities
1125
+ * - Required charging speed for the journey
1126
+ * - Availability at the charging park
1127
+ */
1128
+ chargingConnectionInfo?: ChargingConnectionInfo;
1129
+ /**
1130
+ * The common name of this charging park.
1131
+ *
1132
+ * A human-readable name for the charging location, often including nearby
1133
+ * landmarks, business names, or descriptive identifiers.
1134
+ *
1135
+ * @example
1136
+ * ```typescript
1137
+ * chargingParkName: "Amsterdam Central Station - North Side"
1138
+ * chargingParkName: "Shell Recharge - Highway A2"
1139
+ * ```
1140
+ */
1141
+ chargingParkName?: string;
1142
+ /**
1143
+ * The charging network operator or provider name.
1144
+ *
1145
+ * Identifies the company or organization that operates this charging park.
1146
+ *
1147
+ * @remarks
1148
+ * Common operators include: Shell Recharge, Ionity, ChargePoint, EVgo,
1149
+ * Tesla Supercharger, Fastned, etc.
1150
+ *
1151
+ * @example
1152
+ * ```typescript
1153
+ * chargingParkOperatorName: "Ionity"
1154
+ * chargingParkOperatorName: "Shell Recharge"
1155
+ * ```
1156
+ */
1157
+ chargingParkOperatorName?: string;
1158
+ /**
1159
+ * Maximum available charging power at this charging park in kilowatts (kW).
1160
+ *
1161
+ * Represents the highest power output available across all charging connections
1162
+ * at this location. Actual charging power may be lower depending on:
1163
+ * - Vehicle capabilities
1164
+ * - Selected connector type
1165
+ * - Battery state of charge
1166
+ * - Grid conditions
1167
+ *
1168
+ * @remarks
1169
+ * This is typically the power of the fastest charger at the park.
1170
+ *
1171
+ * @example
1172
+ * ```typescript
1173
+ * // A charging park with multiple chargers
1174
+ * chargingParkPowerInkW: 150 // Has at least one 150kW charger
1175
+ * ```
1176
+ */
1177
+ chargingParkPowerInkW?: number;
1178
+ /**
1179
+ * The best charging speed classification of this charging park amongst its connectors.
1180
+ *
1181
+ * @remarks
1182
+ * - `slow`: Typically up to 12 kW (Level 1 AC charging)
1183
+ * - `regular`: Typically between 12 kW and 50 kW (Level 2 AC charging)
1184
+ * - `fast`: Typically between 50 kW and 150 kW (DC fast charging)
1185
+ * - `ultra-fast`: Typically above 150 kW (High-power DC fast charging)
1186
+ */
1187
+ chargingParkSpeed?: ChargingSpeed;
1188
+ /**
1189
+ * The source of the charging stop at the end of this leg.
1190
+ *
1191
+ * Indicates whether the charging stop was automatically calculated by the
1192
+ * routing engine or explicitly specified by the user.
1193
+ *
1194
+ * @remarks
1195
+ * - `Auto_Generated`: The routing engine selected this charging stop to optimize the route
1196
+ * - `User_Defined`: The user explicitly requested a charging stop at this location
1197
+ */
1198
+ chargingStopType?: 'Auto_Generated' | 'User_Defined';
1199
+ /**
1200
+ * Available payment options at this charging park.
1201
+ *
1202
+ * Lists the payment methods accepted at this charging location.
1203
+ * Multiple options may be available.
1204
+ */
1205
+ chargingParkPaymentOptions?: ChargingPaymentOption[];
1206
+ /**
1207
+ * Target battery charge level in kilowatt-hours (kWh) after charging.
1208
+ *
1209
+ * The routing engine determines the optimal charge level to minimize
1210
+ * total journey time while ensuring the vehicle can reach the next stop.
1211
+ */
1212
+ targetChargeInkWh: number;
1213
+ /**
1214
+ * Target battery charge level as a percentage of maximum capacity.
1215
+ *
1216
+ * Derived from targetChargeInkWh and the vehicle's maximum battery capacity.
1217
+ *
1218
+ * @example
1219
+ * ```typescript
1220
+ * // If maxChargeInkWh is 100 and targetChargeInkWh is 80
1221
+ * targetChargeInPCT // 80
1222
+ * ```
1223
+ */
1224
+ targetChargeInPCT?: number;
1225
+ };
1226
+
1227
+ /**
1228
+ * POI category classification with localized names.
1229
+ *
1230
+ * Provides both a standardized category code and human-readable names
1231
+ * in multiple languages for displaying POI types.
1232
+ *
1233
+ * @example
1234
+ * ```typescript
1235
+ * const classification: Classification = {
1236
+ * code: 'RESTAURANT',
1237
+ * names: [
1238
+ * { nameLocale: 'en-US', name: 'Restaurant' },
1239
+ * { nameLocale: 'fr-FR', name: 'Restaurant' },
1240
+ * { nameLocale: 'de-DE', name: 'Restaurant' }
1241
+ * ]
1242
+ * };
1243
+ * ```
1244
+ *
1245
+ * @group Place
1246
+ */
1247
+ export declare type Classification = {
1248
+ /**
1249
+ * Standardized category code.
1250
+ *
1251
+ * Use this for programmatic filtering and identification of POI types.
1252
+ * See {@link POICategory} for available codes.
1253
+ */
1254
+ code: POICategory;
1255
+ /**
1256
+ * Localized names for this category.
1257
+ *
1258
+ * Array of names in different languages/locales for internationalization support.
1259
+ */
1260
+ names: LocalizedName[];
1261
+ };
1262
+
1263
+ /**
1264
+ * Summary information for routes using combustion engine vehicles.
1265
+ *
1266
+ * Extends the base summary with fuel consumption estimates.
1267
+ *
1268
+ * @group Route
1269
+ */
1270
+ export declare type CombustionSummary = SummaryBase & {
1271
+ /**
1272
+ * Estimated fuel consumption in liters for the route or leg.
1273
+ *
1274
+ * Calculated using the Combustion Consumption Model based on:
1275
+ * - Vehicle speed-to-consumption rates
1276
+ * - Route characteristics (elevation, road types)
1277
+ * - Driving conditions
1278
+ *
1279
+ * @remarks
1280
+ * Included only if:
1281
+ * - Vehicle engine type is set to combustion
1282
+ * - Speed-to-consumption rates are specified in the request
1283
+ *
1284
+ * The value is always positive (no fuel recuperation).
1285
+ *
1286
+ * @example
1287
+ * ```typescript
1288
+ * // A 100km route might consume
1289
+ * fuelConsumptionInLiters: 7.5 // 7.5 liters
1290
+ * ```
1291
+ */
1292
+ fuelConsumptionInLiters?: number;
1293
+ };
1294
+
1295
+ /**
1296
+ * Common properties shared by all place types.
1297
+ *
1298
+ * Provides the base structure for place information including address,
1299
+ * entry points, POI details, and data source references.
1300
+ *
1301
+ * @group Place
1302
+ */
1303
+ export declare type CommonPlaceProps = {
1304
+ /**
1305
+ * Type classification of this place.
1306
+ */
1307
+ type: PlaceType;
1308
+ /**
1309
+ * Structured address components.
1310
+ */
1311
+ address: AddressProperties;
1312
+ /**
1313
+ * Geographic entity type(s).
1314
+ *
1315
+ * Present only when type === 'Geography'.
1316
+ * Array can contain multiple types for areas with multiple administrative roles.
1317
+ */
1318
+ geographyType?: GeographyType[];
1319
+ /**
1320
+ * Mapcode representations of this location.
1321
+ *
1322
+ * Alternative location codes that can be used instead of coordinates.
1323
+ */
1324
+ mapcodes?: Mapcode[];
1325
+ /**
1326
+ * Physical entry points (entrances) to the place.
1327
+ *
1328
+ * Useful for navigation to direct users to the correct entrance.
1329
+ */
1330
+ entryPoints?: EntryPoint[];
1331
+ /**
1332
+ * Address ranges along a street segment.
1333
+ *
1334
+ * Present only when type === 'Address Range'.
1335
+ */
1336
+ addressRanges?: AddressRanges;
1337
+ /**
1338
+ * Point of Interest information.
1339
+ *
1340
+ * Present only when type === 'POI'. Contains business details, categories, hours, etc.
1341
+ */
1342
+ poi?: POI;
1343
+ /**
1344
+ * Related Points of Interest.
1345
+ *
1346
+ * Parent or child POIs (e.g., stores within a mall, a mall containing stores).
1347
+ */
1348
+ relatedPois?: RelatedPOI[];
1349
+ /**
1350
+ * EV charging infrastructure information.
1351
+ *
1352
+ * Present only for Electric Vehicle charging station POIs.
1353
+ */
1354
+ chargingPark?: ChargingPark;
1355
+ /**
1356
+ * References to additional data sources.
1357
+ *
1358
+ * IDs for fetching more detailed information from other services
1359
+ * (geometry, availability, POI details).
1360
+ */
1361
+ dataSources?: PlaceDataSources;
1362
+ };
1363
+
1364
+ /**
1365
+ * Electric vehicle charging connector with specifications.
1366
+ *
1367
+ * Describes a specific charging connector available at a charging point,
1368
+ * including its technical specifications and capabilities.
1369
+ *
1370
+ * @example
1371
+ * ```typescript
1372
+ * const connector: Connector = {
1373
+ * id: 'connector-1',
1374
+ * type: 'IEC62196Type2CCS',
1375
+ * ratedPowerKW: 150,
1376
+ * voltageV: 400,
1377
+ * currentA: 375,
1378
+ * currentType: 'DC'
1379
+ * };
1380
+ * ```
1381
+ *
1382
+ * @group Place
1383
+ */
1384
+ export declare type Connector = {
1385
+ /**
1386
+ * Unique identifier for this connector.
1387
+ */
1388
+ id: string;
1389
+ /**
1390
+ * Physical connector type/standard.
1391
+ *
1392
+ * Must match the vehicle's charging port for compatibility.
1393
+ */
1394
+ type: ConnectorType;
1395
+ /**
1396
+ * Rated charging power in kilowatts (kW).
1397
+ *
1398
+ * Indicates the maximum charging speed. Common values:
1399
+ * - 3-7 kW: Level 1/2 AC charging
1400
+ * - 7-22 kW: Level 2 AC charging
1401
+ * - 50-150 kW: DC fast charging
1402
+ * - 150-350 kW: DC ultra-fast charging
1403
+ */
1404
+ ratedPowerKW: number;
1405
+ /**
1406
+ * Voltage in volts (V).
1407
+ *
1408
+ * Operating voltage for this connector.
1409
+ * Common values: 120V, 240V (AC), 400V, 800V (DC)
1410
+ */
1411
+ voltageV: number;
1412
+ /**
1413
+ * Current in amperes (A).
1414
+ *
1415
+ * Maximum current capacity for this connector.
1416
+ */
1417
+ currentA: number;
1418
+ /**
1419
+ * Type of electrical current (AC or DC).
1420
+ */
1421
+ currentType: CurrentType;
1422
+ };
1423
+
1424
+ /**
1425
+ * Availability information for a specific connector type.
1426
+ *
1427
+ * Extends ChargingPointAvailability with connector specifications,
1428
+ * useful for displaying available connectors grouped by type and power.
1429
+ *
1430
+ * @example
1431
+ * ```typescript
1432
+ * const connectorAvailability: ConnectorAvailability = {
1433
+ * connector: {
1434
+ * type: 'IEC62196Type2CCS',
1435
+ * ratedPowerKW: 150,
1436
+ * // ... other connector properties
1437
+ * },
1438
+ * count: 4,
1439
+ * statusCounts: {
1440
+ * Available: 3,
1441
+ * Occupied: 1
1442
+ * }
1443
+ * };
1444
+ * ```
1445
+ *
1446
+ * @group Place
1447
+ */
1448
+ export declare type ConnectorAvailability = ChargingPointAvailability & {
1449
+ /**
1450
+ * Connector specifications for this availability group.
1451
+ *
1452
+ * All connectors in this availability group share these specifications
1453
+ * (same type, power rating, voltage, etc.).
1454
+ */
1455
+ connector: Connector;
1456
+ };
1457
+
1458
+ /**
1459
+ * Electric vehicle charging connector type.
1460
+ *
1461
+ * Defines the physical connector standard used for EV charging.
1462
+ * Different regions and vehicle manufacturers use different connector types.
1463
+ *
1464
+ * @remarks
1465
+ * Common connector types:
1466
+ * - `IEC62196Type1`: SAE J1772 (North America, Japan)
1467
+ * - `IEC62196Type2CableAttached`: Mennekes/Type 2 (Europe)
1468
+ * - `IEC62196Type1CCS`: CCS Type 1 (Combined Charging System)
1469
+ * - `IEC62196Type2CCS`: CCS Type 2 (Combined Charging System)
1470
+ * - `Chademo`: CHAdeMO (Japan, DC fast charging)
1471
+ * - `Tesla`: Tesla proprietary connector
1472
+ * - `GBT20234Part2/3`: Chinese GB/T standard
1473
+ *
1474
+ * @example
1475
+ * ```typescript
1476
+ * const connectorType: ConnectorType = 'IEC62196Type2CCS';
1477
+ * ```
1478
+ *
1479
+ * @group Place
1480
+ */
1481
+ export declare type ConnectorType = (typeof connectorTypes)[number];
1482
+
1483
+ /**
1484
+ * @group Place
1485
+ */
1486
+ export declare const connectorTypes: readonly ["StandardHouseholdCountrySpecific", "IEC62196Type1", "IEC62196Type1CCS", "IEC62196Type2CableAttached", "IEC62196Type2Outlet", "IEC62196Type2CCS", "IEC62196Type3", "Chademo", "GBT20234Part2", "GBT20234Part3", "IEC60309AC3PhaseRed", "IEC60309AC1PhaseBlue", "IEC60309DCWhite", "Tesla"];
1487
+
1488
+ /**
1489
+ * Route section representing passage through a country.
1490
+ *
1491
+ * Used to identify which countries the route traverses, useful for:
1492
+ * - Border crossing planning
1493
+ * - International routing costs
1494
+ * - Regulatory requirements
1495
+ *
1496
+ * @example
1497
+ * ```typescript
1498
+ * const countrySection: CountrySectionProps = {
1499
+ * id: 'country-section-1',
1500
+ * startPointIndex: 0,
1501
+ * endPointIndex: 150,
1502
+ * countryCodeISO3: 'NLD', // Netherlands
1503
+ * lengthInMeters: 25000
1504
+ * };
1505
+ * ```
1506
+ *
1507
+ * @group Route
1508
+ */
1509
+ export declare type CountrySectionProps = SectionProps & {
1510
+ /**
1511
+ * Three-letter ISO 3166-1 alpha-3 country code.
1512
+ *
1513
+ * Examples: 'USA', 'GBR', 'NLD', 'DEU', 'FRA'
1514
+ *
1515
+ * @see [ISO 3166-1 alpha-3 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3)
1516
+ */
1517
+ countryCodeISO3: string;
1518
+ };
1519
+
1520
+ /**
1521
+ * Current type for electric vehicle charging.
1522
+ *
1523
+ * Specifies the type of electrical current used for charging.
1524
+ *
1525
+ * @remarks
1526
+ * - `AC1`: Alternating Current, single-phase (slower charging, typically 3-7 kW)
1527
+ * - `AC3`: Alternating Current, three-phase (faster AC charging, up to 22 kW)
1528
+ * - `DC`: Direct Current (DC fast charging, 50-350+ kW)
1529
+ *
1530
+ * @example
1531
+ * ```typescript
1532
+ * const currentType: CurrentType = 'DC'; // DC fast charging
1533
+ * ```
1534
+ *
1535
+ * @group Place
1536
+ */
1537
+ export declare type CurrentType = (typeof currentTypes)[number];
1538
+
1539
+ /**
1540
+ * @group Place
1541
+ */
1542
+ export declare const currentTypes: readonly ["AC1", "AC3", "DC"];
1543
+
1544
+ /**
1545
+ * Default global configuration values.
1546
+ *
1547
+ * Provides sensible defaults for the global configuration.
1548
+ * The API key must be set before using SDK features.
1549
+ *
1550
+ * @group Configuration
1551
+ */
1552
+ export declare const defaultConfig: GlobalConfig;
1553
+
1554
+ /**
1555
+ * Severity of the traffic delay.
1556
+ *
1557
+ * @remarks
1558
+ * - `unknown`: Delay magnitude cannot be determined
1559
+ * - `minor`: Small delay (few minutes)
1560
+ * - `moderate`: Noticeable delay (several minutes to ~15 minutes)
1561
+ * - `major`: Significant delay (15+ minutes)
1562
+ * - `indefinite`: Unknown or extremely long delay (e.g., road closure)
1563
+ *
1564
+ * @group Route
1565
+ */
1566
+ export declare type DelayMagnitude = 'unknown' | 'minor' | 'moderate' | 'major' | 'indefinite';
1567
+
1568
+ /**
1569
+ * Display unit configuration for time and distance.
1570
+ *
1571
+ * Used by formatting utilities and map information displays to present
1572
+ * durations and distances with custom labels.
1573
+ *
1574
+ * @group Configuration
1575
+ */
1576
+ export declare type DisplayUnits = {
1577
+ /**
1578
+ * Distance unit configuration.
1579
+ *
1580
+ * Controls how distances are displayed throughout the SDK.
1581
+ */
1582
+ distance?: DistanceDisplayUnits;
1583
+ /**
1584
+ * Time unit configuration.
1585
+ *
1586
+ * Controls how durations are displayed throughout the SDK.
1587
+ */
1588
+ time?: TimeDisplayUnits;
1589
+ };
1590
+
1591
+ /**
1592
+ * Configuration for displaying distance-based units.
1593
+ *
1594
+ * Allows customization of distance unit labels and the unit system
1595
+ * (metric or imperial) used throughout the SDK.
1596
+ *
1597
+ * @group Configuration
1598
+ */
1599
+ export declare type DistanceDisplayUnits = {
1600
+ /**
1601
+ * Type of distance unit system.
1602
+ *
1603
+ * Determines whether to use metric (meters, kilometers) or
1604
+ * imperial (feet, miles, yards) units.
1605
+ */
1606
+ type?: DistanceUnitsType;
1607
+ /**
1608
+ * Custom label for kilometer units.
1609
+ *
1610
+ * @default "km"
1611
+ */
1612
+ kilometers?: string;
1613
+ /**
1614
+ * Custom label for meter units.
1615
+ *
1616
+ * @default "m"
1617
+ */
1618
+ meters?: string;
1619
+ /**
1620
+ * Custom label for mile units.
1621
+ *
1622
+ * @default "mi"
1623
+ */
1624
+ miles?: string;
1625
+ /**
1626
+ * Custom label for feet units.
1627
+ *
1628
+ * @default "ft"
1629
+ */
1630
+ feet?: string;
1631
+ /**
1632
+ * Custom label for yard units.
1633
+ *
1634
+ * @default "yd"
1635
+ */
1636
+ yards?: string;
1637
+ };
1638
+
1639
+ /**
1640
+ * Distance unit system types supported by the SDK formatters.
1641
+ *
1642
+ * Defines which measurement system to use when formatting distances.
1643
+ * Each system uses region-appropriate units and conventions.
1644
+ *
1645
+ * @remarks
1646
+ * **Unit Systems:**
1647
+ *
1648
+ * - `metric`: International System (SI)
1649
+ * - Units: meters (m), kilometers (km)
1650
+ * - Used in: Most of the world (Europe, Asia, Africa, South America, Australia)
1651
+ * - Decimal-based, no fractions
1652
+ *
1653
+ * - `imperial_us`: United States customary units
1654
+ * - Units: feet (ft), miles (mi)
1655
+ * - Used in: United States
1656
+ * - Uses fractions for miles (¼, ½, ¾)
1657
+ * - Feet for short distances (< 0.125 mi)
1658
+ *
1659
+ * - `imperial_uk`: United Kingdom imperial units
1660
+ * - Units: yards (yd), miles (mi)
1661
+ * - Used in: United Kingdom
1662
+ * - Uses fractions for miles (¼, ½, ¾)
1663
+ * - Yards for short distances (< 0.125 mi)
1664
+ *
1665
+ * **Differences:**
1666
+ * - US uses feet for short distances
1667
+ * - UK uses yards for short distances
1668
+ * - Both use miles with fractions for medium/long distances
1669
+ *
1670
+ * @example
1671
+ * ```typescript
1672
+ * const system: DistanceUnitsType = 'metric'; // International
1673
+ * const usSystem: DistanceUnitsType = 'imperial_us'; // United States
1674
+ * const ukSystem: DistanceUnitsType = 'imperial_uk'; // United Kingdom
1675
+ * ```
1676
+ *
1677
+ * @group Shared
1678
+ */
1679
+ export declare type DistanceUnitsType = 'metric' | 'imperial_us' | 'imperial_uk';
1680
+
1681
+ /**
1682
+ * Indicates left-hand vs. right-hand side driving at the point of the maneuver.
1683
+ * @group Route
1684
+ */
1685
+ export declare type DrivingSide = 'LEFT' | 'RIGHT';
1686
+
1687
+ /**
1688
+ * Summary information for routes using electric vehicles.
1689
+ *
1690
+ * Extends the base summary with battery consumption and charge level estimates.
1691
+ *
1692
+ * @group Route
1693
+ */
1694
+ export declare type ElectricSummary = SummaryBase & {
1695
+ /**
1696
+ * Estimated electric energy consumption in kilowatt-hours (kWh).
1697
+ *
1698
+ * Calculated using the Electric Consumption Model based on:
1699
+ * - Vehicle speed-to-consumption rates
1700
+ * - Route characteristics (elevation changes)
1701
+ * - Recuperation (regenerative braking)
1702
+ *
1703
+ * @remarks
1704
+ * Included only if:
1705
+ * - Vehicle engine type is set to electric
1706
+ * - Speed-to-consumption rates are specified in the request
1707
+ *
1708
+ * This value includes recuperated energy and can be negative (indicating net energy gain),
1709
+ * such as when descending a long hill. If maxChargeInkWh is specified, recuperation is
1710
+ * capped to prevent exceeding maximum battery capacity.
1711
+ *
1712
+ * @example
1713
+ * ```typescript
1714
+ * batteryConsumptionInkWh: 15.5 // Consumed 15.5 kWh
1715
+ * batteryConsumptionInkWh: -2.3 // Gained 2.3 kWh (downhill with recuperation)
1716
+ * ```
1717
+ */
1718
+ batteryConsumptionInkWh?: number;
1719
+ /**
1720
+ * Estimated battery consumption as a percentage of maximum capacity.
1721
+ *
1722
+ * Only present if maxChargeInkWh was specified in the request and
1723
+ * batteryConsumptionInkWh is available.
1724
+ *
1725
+ * @example
1726
+ * ```typescript
1727
+ * // If maxChargeInkWh is 100 and batteryConsumptionInkWh is 15.5
1728
+ * batteryConsumptionInPCT: 15.5 // 15.5% of battery capacity
1729
+ * ```
1730
+ */
1731
+ batteryConsumptionInPCT?: number;
1732
+ /**
1733
+ * Estimated battery charge in kWh upon arrival at the destination.
1734
+ *
1735
+ * Available only for Long Distance EV Routing (LDEVR) with charging stops.
1736
+ * Calculated as: currentChargeInkWh - batteryConsumptionInkWh + chargingEnergy
1737
+ */
1738
+ remainingChargeAtArrivalInkWh?: number;
1739
+ /**
1740
+ * Estimated battery charge as percentage of capacity upon arrival.
1741
+ *
1742
+ * Available only for Long Distance EV Routing (LDEVR) with charging stops.
1743
+ * Derived from remainingChargeAtArrivalInkWh and maxChargeInkWh.
1744
+ */
1745
+ remainingChargeAtArrivalInPCT?: number;
1746
+ };
1747
+
1748
+ /**
1749
+ * Entry point (entrance) for a place.
1750
+ *
1751
+ * Represents a physical access point to a building or facility,
1752
+ * useful for routing to ensure users are directed to the correct entrance.
1753
+ *
1754
+ * @example
1755
+ * ```typescript
1756
+ * const entryPoint: EntryPoint = {
1757
+ * type: 'main',
1758
+ * functions: ['FrontDoor'],
1759
+ * position: [4.9041, 52.3676]
1760
+ * };
1761
+ * ```
1762
+ *
1763
+ * @group Place
1764
+ */
1765
+ export declare type EntryPoint = {
1766
+ /**
1767
+ * Type of entry point (main or minor).
1768
+ */
1769
+ type: EntryPointType;
1770
+ /**
1771
+ * Functional description of the entry point.
1772
+ *
1773
+ * Examples: 'FrontDoor', 'ServiceEntrance', 'ParkingGarage'
1774
+ */
1775
+ functions?: string[];
1776
+ /**
1777
+ * Geographic coordinates of the entry point [longitude, latitude].
1778
+ */
1779
+ position: Position;
1780
+ };
1781
+
1782
+ /**
1783
+ * Type of entry point for a place.
1784
+ *
1785
+ * @remarks
1786
+ * - `main`: Primary entrance (at most one per place)
1787
+ * - `minor`: Secondary or alternative entrance (can have multiple)
1788
+ *
1789
+ * @group Place
1790
+ */
1791
+ export declare type EntryPointType = 'main' | 'minor';
1792
+
1793
+ /**
1794
+ * Properties for an EV charging station place.
1795
+ *
1796
+ * Extends common place properties with EV-specific charging park information.
1797
+ * Use this type for places that are EV charging locations.
1798
+ *
1799
+ * @example
1800
+ * ```typescript
1801
+ * const evPlace: EVChargingStationPlaceProps = {
1802
+ * // Common place properties
1803
+ * id: 'place-123',
1804
+ * type: 'POI',
1805
+ * address: {...},
1806
+ * position: [4.9, 52.3],
1807
+ * // EV-specific properties
1808
+ * chargingPark: {
1809
+ * connectors: [...],
1810
+ * connectorCounts: [...],
1811
+ * availability: {...}
1812
+ * }
1813
+ * };
1814
+ * ```
1815
+ *
1816
+ * @group Place
1817
+ */
1818
+ export declare type EVChargingStationPlaceProps = Omit<CommonPlaceProps, 'chargingPark'> & {
1819
+ /**
1820
+ * Charging infrastructure and availability information.
1821
+ *
1822
+ * Contains details about available connectors, counts, and optionally
1823
+ * real-time availability status if fetched from the availability service.
1824
+ */
1825
+ chargingPark?: ChargingParkWithAvailability;
1826
+ };
1827
+
1828
+ /**
1829
+ * Extended GeoJSON FeatureCollection with additional properties at the collection level.
1830
+ *
1831
+ * This type extends the standard GeoJSON FeatureCollection by adding an optional `properties` field
1832
+ * at the collection level (in addition to properties on individual features).
1833
+ *
1834
+ * @typeParam G - The geometry type for features in the collection (defaults to Geometry)
1835
+ * @typeParam P - The type of properties for individual features (defaults to GeoJsonProperties)
1836
+ * @typeParam FeatureCollectionProps - The type of properties for the collection itself (defaults to unknown)
1837
+ *
1838
+ * @example
1839
+ * ```typescript
1840
+ * // Collection of routes with summary properties at the collection level
1841
+ * const routeCollection: FeatureCollectionWithProperties<LineString, RouteProps, { totalDistance: number }> = {
1842
+ * type: 'FeatureCollection',
1843
+ * features: [...],
1844
+ * properties: { totalDistance: 1000 }
1845
+ * };
1846
+ * ```
1847
+ *
1848
+ * @group Shared
1849
+ */
1850
+ export declare interface FeatureCollectionWithProperties<G extends Geometry | null = Geometry, P = GeoJsonProperties, FeatureCollectionProps = unknown> extends FeatureCollection<G, P> {
1851
+ /**
1852
+ * Optional properties for the entire feature collection.
1853
+ * This allows metadata to be attached at the collection level.
1854
+ */
1855
+ properties?: FeatureCollectionProps;
1856
+ }
1857
+
1858
+ /**
1859
+ * Formatting is based on the number of meters passed and unit type. Less meters more precision.
1860
+ * @example
1861
+ * ```ts
1862
+ * (null, METRIC) -> ""
1863
+ * (0, METRIC) -> "0 m"
1864
+ * (2, METRIC) -> "2 m"
1865
+ * (237, METRIC) -> "240 m"
1866
+ * (730, METRIC) -> "700 m"
1867
+ * (950, METRIC) -> "1 km"
1868
+ * (-999, METRIC) -> "-1 km"
1869
+ * (2850, METRIC) -> "2.9 km"
1870
+ * (283520, METRIC) -> "284 km"
1871
+ * (2, IMPERIAL_US) -> "7 ft"
1872
+ * (100, IMPERIAL_US) -> "330 ft"
1873
+ * (182.88, IMPERIAL_US) -> "600 ft"
1874
+ * (205.95, IMPERIAL_US) -> "¼ mi"
1875
+ * (1205.95, IMPERIAL_US) -> "¾ mi"
1876
+ * (5309.7, IMPERIAL_US) -> "3½ mi"
1877
+ * (-18181.7, IMPERIAL_US) -> "-11 mi"
1878
+ * (2, IMPERIAL_UK) -> "2 yd"
1879
+ * (150.88, IMPERIAL_UK) -> "170 yd"
1880
+ * (4344.3, IMPERIAL_UK) -> "2¾ mi"
1881
+ * (21753.68, IMPERIAL_UK) -> "14 mi"
1882
+ * ```
1883
+ * @param meters
1884
+ * @param options Options for the display units, including their type and custom ways to display them.
1885
+ * @group Shared
1886
+ */
1887
+ export declare const formatDistance: (meters: number, options?: DistanceDisplayUnits) => string;
1888
+
1889
+ /**
1890
+ * Formats a duration in seconds into a human-readable time string.
1891
+ *
1892
+ * Converts raw seconds into a display-friendly format using hours and minutes,
1893
+ * with intelligent rounding and formatting based on the duration length.
1894
+ *
1895
+ * @param seconds The duration to format, given in seconds. Returns `undefined` for values < 30 seconds.
1896
+ * @param options Optional custom display units for hours and minutes text.
1897
+ *
1898
+ * @returns Formatted time string (e.g., "1 hr 30 min", "45 min"), or `undefined` if duration is too short.
1899
+ *
1900
+ * @remarks
1901
+ * **Rounding Behavior:**
1902
+ * - Durations under 30 seconds return `undefined`
1903
+ * - 30-59 seconds round to "1 min"
1904
+ * - Minutes are rounded to nearest minute
1905
+ * - Hours are displayed when duration ≥ 1 hour
1906
+ *
1907
+ * **Format Patterns:**
1908
+ * - Short duration: "15 min"
1909
+ * - Long duration: "2 hr 30 min"
1910
+ * - Exact hours: "3 hr 00 min"
1911
+ *
1912
+ * **Customization:**
1913
+ * Override default units via `options` or global {@link TomTomConfig}
1914
+ *
1915
+ * @example
1916
+ * ```typescript
1917
+ * // Basic usage
1918
+ * formatDuration(0); // undefined (too short)
1919
+ * formatDuration(20); // undefined (too short)
1920
+ * formatDuration(30); // "1 min"
1921
+ * formatDuration(60); // "1 min"
1922
+ * formatDuration(100); // "2 min"
1923
+ * formatDuration(1800); // "30 min"
1924
+ * formatDuration(3599); // "1 hr 00 min"
1925
+ * formatDuration(3660); // "1 hr 01 min"
1926
+ * formatDuration(7200); // "2 hr 00 min"
1927
+ * formatDuration(36120); // "10 hr 02 min"
1928
+ *
1929
+ * // Custom units
1930
+ * formatDuration(3660, { hours: 'h', minutes: 'm' });
1931
+ * // Returns: "1 h 01 m"
1932
+ *
1933
+ * // Route travel time
1934
+ * const route = await calculateRoute({ ... });
1935
+ * const travelTime = formatDuration(route.routes[0].summary.travelTimeInSeconds);
1936
+ * console.log(`Estimated time: ${travelTime}`);
1937
+ * // Output: "Estimated time: 2 hr 15 min"
1938
+ * ```
1939
+ *
1940
+ * @group Shared
1941
+ */
1942
+ export declare const formatDuration: (seconds: number | undefined, options?: TimeDisplayUnits) => string | undefined;
1943
+
1944
+ /**
1945
+ * Fuel types available at gas stations and refueling points.
1946
+ *
1947
+ * Identifies the types of fuel offered at a location. Use this to find
1948
+ * stations with specific fuel types or filter search results.
1949
+ *
1950
+ * @remarks
1951
+ * Common fuel types:
1952
+ * - `Petrol` / `Diesel`: Traditional fossil fuels
1953
+ * - `E85`: 85% ethanol blend
1954
+ * - `LPG`: Liquefied petroleum gas (propane)
1955
+ * - `CNG`: Compressed natural gas
1956
+ * - `LNG`: Liquefied natural gas
1957
+ * - `Hydrogen`: Fuel cell hydrogen
1958
+ * - `Biodiesel`: Renewable diesel
1959
+ * - `AdBlue`: Diesel exhaust fluid (DEF)
1960
+ *
1961
+ * @example
1962
+ * ```typescript
1963
+ * // Station with multiple fuel types
1964
+ * const fuels: Fuel[] = ['Petrol', 'Diesel', 'LPG'];
1965
+ *
1966
+ * // Hydrogen fuel cell station
1967
+ * const fuels: Fuel[] = ['Hydrogen'];
1968
+ * ```
1969
+ *
1970
+ * @group Place
1971
+ */
1972
+ export declare type Fuel = 'Petrol' | 'LPG' | 'Diesel' | 'Biodiesel' | 'DieselForCommercialVehicles' | 'E85' | 'LNG' | 'CNG' | 'Hydrogen' | 'AdBlue';
1973
+
1974
+ /**
1975
+ * Generate random id for layers
1976
+ * @ignore
1977
+ */
1978
+ export declare const generateId: () => string;
1979
+
1980
+ /**
1981
+ * Generates an object with TomTom custom header values for the given common parameters.
1982
+ *
1983
+ * @ignore
1984
+ * @param params Global SDK configuration
1985
+ */
1986
+ export declare const generateTomTomHeaders: (params: Partial<GlobalConfig>) => TomTomHeaders;
1987
+
1988
+ /**
1989
+ * Type of geographic administrative entity.
1990
+ *
1991
+ * Defines the hierarchical level of an administrative area or postal region.
1992
+ *
1993
+ * @remarks
1994
+ * Geographic hierarchy from largest to smallest:
1995
+ * - `Country`: Sovereign nation
1996
+ * - `CountrySubdivision`: State, province, or first-level admin division
1997
+ * - `CountrySecondarySubdivision`: County or second-level admin division
1998
+ * - `CountryTertiarySubdivision`: Third-level admin division
1999
+ * - `Municipality`: City or town
2000
+ * - `MunicipalitySubdivision`: District within a city
2001
+ * - `Neighbourhood`: Named neighborhood or area within a city
2002
+ * - `PostalCodeArea`: Area defined by postal/ZIP code
2003
+ *
2004
+ * @example
2005
+ * ```typescript
2006
+ * const geographyType: GeographyType = 'Municipality'; // City level
2007
+ * ```
2008
+ *
2009
+ * @group Place
2010
+ */
2011
+ export declare type GeographyType = (typeof geographyTypes)[number];
2012
+
2013
+ /**
2014
+ * @group Place
2015
+ */
2016
+ export declare const geographyTypes: readonly ["Country", "CountrySubdivision", "CountrySecondarySubdivision", "CountryTertiarySubdivision", "Municipality", "MunicipalitySubdivision", "Neighbourhood", "PostalCodeArea"];
2017
+
2018
+ /**
2019
+ * Data source reference for geometric shape data.
2020
+ *
2021
+ * @example
2022
+ * ```typescript
2023
+ * // Use this ID with the Geometry Data service
2024
+ * const dataSource: GeometryDataSource = {
2025
+ * id: 'geom-abc123'
2026
+ * };
2027
+ * ```
2028
+ *
2029
+ * @group Place
2030
+ */
2031
+ export declare type GeometryDataSource = {
2032
+ /**
2033
+ * Geometry ID for the Geometry Data service.
2034
+ *
2035
+ * Pass this value to fetch the geometric boundary (polygon or multipolygon)
2036
+ * representing the place's shape on the map.
2037
+ */
2038
+ id: string;
2039
+ };
2040
+
2041
+ /**
2042
+ * Extracts the lng-lat position from various input formats.
2043
+ *
2044
+ * This utility function accepts multiple formats and normalizes them to a standard
2045
+ * GeoJSON Position (lng-lat coordinate array). It handles:
2046
+ * - Raw coordinate arrays `[lng, lat]`
2047
+ * - GeoJSON Point geometries
2048
+ * - GeoJSON Point Features (including Places with entry points)
2049
+ *
2050
+ * @param hasLngLat An object which either is or contains a lng-lat position.
2051
+ * @param options Additional options to control how we extract the position.
2052
+ * @returns The extracted position as `[longitude, latitude]`, or `null` if the input is invalid.
2053
+ *
2054
+ * @example
2055
+ * ```typescript
2056
+ * // From coordinate array
2057
+ * getPosition([4.9, 52.3]); // Returns: [4.9, 52.3]
2058
+ *
2059
+ * // From Point geometry
2060
+ * getPosition({
2061
+ * type: 'Point',
2062
+ * coordinates: [4.9, 52.3]
2063
+ * }); // Returns: [4.9, 52.3]
2064
+ *
2065
+ * // From Point Feature
2066
+ * getPosition({
2067
+ * type: 'Feature',
2068
+ * geometry: { type: 'Point', coordinates: [4.9, 52.3] },
2069
+ * properties: {}
2070
+ * }); // Returns: [4.9, 52.3]
2071
+ *
2072
+ * // From Place with entry point
2073
+ * const place = {
2074
+ * type: 'Feature',
2075
+ * geometry: { type: 'Point', coordinates: [4.9, 52.3] },
2076
+ * properties: {
2077
+ * entryPoints: [
2078
+ * { type: 'main', position: [4.901, 52.301] }
2079
+ * ]
2080
+ * }
2081
+ * };
2082
+ * getPosition(place, { useEntryPoint: 'main-when-available' });
2083
+ * // Returns: [4.901, 52.301] (entry point instead of geometry)
2084
+ *
2085
+ * // Invalid input
2086
+ * getPosition(undefined); // Returns: null
2087
+ * ```
2088
+ *
2089
+ * @group Shared
2090
+ */
2091
+ export declare const getPosition: (hasLngLat: HasLngLat | undefined, options?: GetPositionOptions) => Position | null;
2092
+
2093
+ /**
2094
+ * Specifies how to handle entry points when extracting a position from a place.
2095
+ *
2096
+ * Entry points represent specific access locations for a place (e.g., building entrances, parking lot entries).
2097
+ *
2098
+ * @remarks
2099
+ * - `main-when-available`: Returns the main entry point position if available, otherwise falls back to the default place position.
2100
+ * This is useful for routing to ensure vehicles are directed to the correct entrance.
2101
+ * - `ignore`: Always returns the default position of the place (typically the center point).
2102
+ *
2103
+ * @example
2104
+ * ```typescript
2105
+ * // Get position preferring entry point for routing
2106
+ * const position = getPosition(place, { useEntryPoint: 'main-when-available' });
2107
+ *
2108
+ * // Get center position ignoring entry points
2109
+ * const centerPos = getPosition(place, { useEntryPoint: 'ignore' });
2110
+ * ```
2111
+ *
2112
+ * @group Shared
2113
+ */
2114
+ export declare type GetPositionEntryPointOption = 'main-when-available' | 'ignore';
2115
+
2116
+ /**
2117
+ * Configuration options for extracting position coordinates from a place.
2118
+ *
2119
+ * @group Shared
2120
+ */
2121
+ export declare type GetPositionOptions = {
2122
+ /**
2123
+ * Controls whether to use entry point positions when available.
2124
+ *
2125
+ * When set to `'main-when-available'`, the main entry point coordinates will be returned
2126
+ * if they exist, otherwise the default place position is used. This is particularly useful
2127
+ * for routing applications where you want to direct users to the correct entrance.
2128
+ *
2129
+ * @default 'ignore'
2130
+ *
2131
+ * @example
2132
+ * ```typescript
2133
+ * // For routing to a specific entrance
2134
+ * { useEntryPoint: 'main-when-available' }
2135
+ *
2136
+ * // For displaying place center on map
2137
+ * { useEntryPoint: 'ignore' }
2138
+ * ```
2139
+ */
2140
+ useEntryPoint?: GetPositionEntryPointOption;
2141
+ };
2142
+
2143
+ /**
2144
+ * Extracts the lng-lat position from various input formats (strict version).
2145
+ *
2146
+ * Similar to {@link getPosition}, but throws an error if the input doesn't contain
2147
+ * a valid position. Use this when you expect the input to always be valid and want
2148
+ * to fail fast on invalid data.
2149
+ *
2150
+ * @param hasLngLat An object which either is or contains a lng-lat position.
2151
+ * @param options Additional options to control how we extract the position.
2152
+ * @returns The extracted position as `[longitude, latitude]`.
2153
+ * @throws Error if the input object is undefined or does not contain a lng-lat position.
2154
+ *
2155
+ * @example
2156
+ * ```typescript
2157
+ * // Valid input
2158
+ * getPositionStrict([4.9, 52.3]); // Returns: [4.9, 52.3]
2159
+ *
2160
+ * // Invalid input throws error
2161
+ * try {
2162
+ * getPositionStrict(undefined);
2163
+ * } catch (error) {
2164
+ * console.error(error);
2165
+ * // Error: The received object does not have lng-lat coordinates: undefined
2166
+ * }
2167
+ *
2168
+ * // Invalid object throws error
2169
+ * try {
2170
+ * getPositionStrict({ invalid: 'object' });
2171
+ * } catch (error) {
2172
+ * console.error(error);
2173
+ * // Error: The received object does not have lng-lat coordinates: {"invalid":"object"}
2174
+ * }
2175
+ * ```
2176
+ *
2177
+ * @group Shared
2178
+ */
2179
+ export declare const getPositionStrict: (hasLngLat: HasLngLat, options?: GetPositionOptions) => Position;
2180
+
2181
+ /**
2182
+ * Determines the type of geographic input (waypoint or path).
2183
+ *
2184
+ * This function inspects the structure of a RoutePlanningLocation to classify it as either:
2185
+ * - **waypoint**: A single point location (coordinate pair, Point geometry, or Point Feature)
2186
+ * - **path**: A line or route (array of coordinates, LineString geometry, or LineString Feature)
2187
+ *
2188
+ * @param routePlanningLocation The geographic input to classify. Can be coordinates, GeoJSON geometry, or GeoJSON Feature.
2189
+ * @returns The type of the input: 'waypoint' for point locations or 'path' for line geometries.
2190
+ *
2191
+ * @example
2192
+ * ```typescript
2193
+ * // Waypoint as coordinate array
2194
+ * getRoutePlanningLocationType([4.9, 52.3]); // Returns: 'waypoint'
2195
+ *
2196
+ * // Path as array of coordinates
2197
+ * getRoutePlanningLocationType([[4.9, 52.3], [4.5, 51.9]]); // Returns: 'path'
2198
+ *
2199
+ * // Waypoint as Point Feature
2200
+ * getRoutePlanningLocationType({
2201
+ * type: 'Feature',
2202
+ * geometry: { type: 'Point', coordinates: [4.9, 52.3] },
2203
+ * properties: {}
2204
+ * }); // Returns: 'waypoint'
2205
+ *
2206
+ * // Path as LineString Feature
2207
+ * getRoutePlanningLocationType({
2208
+ * type: 'Feature',
2209
+ * geometry: { type: 'LineString', coordinates: [[4.9, 52.3], [4.5, 51.9]] },
2210
+ * properties: {}
2211
+ * }); // Returns: 'path'
2212
+ * ```
2213
+ *
2214
+ * @group Route
2215
+ */
2216
+ export declare const getRoutePlanningLocationType: (routePlanningLocation: RoutePlanningLocation) => RoutePlanningLocationType;
2217
+
2218
+ /**
2219
+ * Global configuration for the TomTom Maps SDK.
2220
+ *
2221
+ * Contains essential parameters like API keys, language settings, and display preferences
2222
+ * that apply across all SDK services and map functionality.
2223
+ *
2224
+ * @remarks
2225
+ * This configuration can be set globally using {@link TomTomConfig} and will be merged
2226
+ * with service-specific configurations, with service configs taking precedence.
2227
+ *
2228
+ * @example
2229
+ * ```typescript
2230
+ * const config: GlobalConfig = {
2231
+ * apiKey: 'your-api-key',
2232
+ * apiVersion: 1,
2233
+ * commonBaseURL: 'https://api.tomtom.com',
2234
+ * language: 'en-US',
2235
+ * displayUnits: {
2236
+ * distance: { type: 'metric' },
2237
+ * time: { hours: 'hrs', minutes: 'mins' }
2238
+ * }
2239
+ * };
2240
+ * ```
2241
+ *
2242
+ * @group Configuration
2243
+ */
2244
+ export declare type GlobalConfig = {
2245
+ /**
2246
+ * TomTom API key for authentication.
2247
+ *
2248
+ * Required for all SDK features. Obtain an API key from the
2249
+ * [TomTom Developer Portal](https://developer.tomtom.com/).
2250
+ *
2251
+ * @default None (required)
2252
+ */
2253
+ apiKey: string;
2254
+ /**
2255
+ * An experimental alternative to the API Key which enables oauth2 access to APIs.
2256
+ * * If provided, then the API key parameter will be ignored.
2257
+ * @experimental
2258
+ */
2259
+ /**
2260
+ * API version number for service endpoints.
2261
+ *
2262
+ * Each service may have its own default version. Consult the specific
2263
+ * service documentation for available versions.
2264
+ *
2265
+ * @default 1 (but each service can override)
2266
+ */
2267
+ apiVersion: number;
2268
+ /**
2269
+ * Request identifier for tracing and support.
2270
+ *
2271
+ * Must match the pattern: `^[a-zA-Z0-9-]{1,100}$`
2272
+ *
2273
+ * Recommended format is UUID (e.g., `9ac68072-c7a4-11e8-a8d5-f2801f1b9fd1`).
2274
+ * When specified, it's included in the `Tracking-ID` response header.
2275
+ * This is solely for support purposes and does not involve user tracking.
2276
+ *
2277
+ * @see {@link https://docs.tomtom.com/search-api/documentation/search-service/fuzzy-search#trackingid-response | Tracking-ID documentation}
2278
+ */
2279
+ trackingId?: string;
2280
+ /**
2281
+ * Include TomTom-User-Agent header in requests.
2282
+ *
2283
+ * When enabled, adds a header containing the SDK name and version.
2284
+ * Note that enabling this may trigger CORS preflight requests.
2285
+ *
2286
+ * @default false
2287
+ */
2288
+ tomtomUserAgent?: boolean;
2289
+ /**
2290
+ * Language code for SDK services and map content.
2291
+ *
2292
+ * Accepts IETF language codes (case-insensitive). Affects search results,
2293
+ * routing instructions, and map labels.
2294
+ *
2295
+ * @default "NGT" (Neutral Ground Truth - uses local language for each location)
2296
+ *
2297
+ * @see {@link https://docs.tomtom.com/search-api/documentation/product-information/supported-languages | Search supported languages}
2298
+ * @see {@link https://docs.tomtom.com/routing-api/documentation/product-information/supported-languages | Routing supported languages}
2299
+ */
2300
+ language?: Language;
2301
+ /**
2302
+ * Base URL for all TomTom API services.
2303
+ *
2304
+ * Individual services can override this with their own base URLs.
2305
+ * Typically only changed for testing or enterprise deployments.
2306
+ *
2307
+ * @default "https://api.tomtom.com"
2308
+ */
2309
+ commonBaseURL: string;
2310
+ /**
2311
+ * Custom display units for time and distance.
2312
+ *
2313
+ * Applied to {@link formatDistance} and {@link formatDuration} utilities,
2314
+ * which are used throughout the SDK for displaying map information.
2315
+ * If not provided, default unit labels are used.
2316
+ */
2317
+ displayUnits?: DisplayUnits;
2318
+ };
2319
+
2320
+ /**
2321
+ * Contains guidance related elements. This field is present only when guidance was requested and is available.
2322
+ * @group Route
2323
+ */
2324
+ export declare type Guidance = {
2325
+ /**
2326
+ * Main ordered list of instructions to follow.
2327
+ */
2328
+ instructions: Instruction[];
2329
+ };
2330
+
2331
+ /**
2332
+ * Input type representing a geographic bounding box or an object from which a bounding box can be derived.
2333
+ *
2334
+ * Accepts various formats:
2335
+ * - `BBox`: Direct GeoJSON bounding box array `[west, south, east, north]`
2336
+ * - `GeoJsonObject`: Any GeoJSON object with a `bbox` property or from which bounds can be calculated
2337
+ * - `GeoJsonObject[]`: Array of GeoJSON objects (convenience extension to standard GeoJSON)
2338
+ *
2339
+ * @remarks
2340
+ * Bounding boxes follow the format: `[minLon, minLat, maxLon, maxLat]` or `[west, south, east, north]`
2341
+ *
2342
+ * @example
2343
+ * ```typescript
2344
+ * // Direct BBox array
2345
+ * const bbox1: HasBBox = [4.8, 52.3, 5.0, 52.4];
2346
+ *
2347
+ * // Feature with bbox property
2348
+ * const bbox2: HasBBox = {
2349
+ * type: 'Feature',
2350
+ * bbox: [4.8, 52.3, 5.0, 52.4],
2351
+ * geometry: { type: 'Polygon', coordinates: [...] },
2352
+ * properties: {}
2353
+ * };
2354
+ *
2355
+ * // Array of features to derive bounds from
2356
+ * const bbox3: HasBBox = [feature1, feature2, feature3];
2357
+ * ```
2358
+ *
2359
+ * @group Shared
2360
+ */
2361
+ export declare type HasBBox = BBox | GeoJsonObject | GeoJsonObject[];
2362
+
2363
+ /**
2364
+ * Input type representing a geographic point location.
2365
+ *
2366
+ * Accepts various formats for specifying a point location:
2367
+ * - `Position`: Raw coordinate array `[longitude, latitude]`
2368
+ * - `Point`: GeoJSON Point geometry
2369
+ * - `Feature<Point>`: GeoJSON Feature containing a Point geometry
2370
+ *
2371
+ * @remarks
2372
+ * Note: Coordinates follow GeoJSON standard with longitude first, then latitude: `[lng, lat]`
2373
+ *
2374
+ * @example
2375
+ * ```typescript
2376
+ * // As Position array
2377
+ * const pos1: HasLngLat = [4.9041, 52.3676];
2378
+ *
2379
+ * // As Point geometry
2380
+ * const pos2: HasLngLat = { type: 'Point', coordinates: [4.9041, 52.3676] };
2381
+ *
2382
+ * // As Feature
2383
+ * const pos3: HasLngLat = {
2384
+ * type: 'Feature',
2385
+ * geometry: { type: 'Point', coordinates: [4.9041, 52.3676] },
2386
+ * properties: {}
2387
+ * };
2388
+ * ```
2389
+ *
2390
+ * @group Shared
2391
+ */
2392
+ export declare type HasLngLat = Position | Point | Feature<Point>;
2393
+
2394
+ /**
2395
+ * Sections with important stretches of road information.
2396
+ *
2397
+ * * It provides a set of street names and/or a set of road numbers that allow the driver to identify and distinguish the course of the route (from other potential routes).
2398
+ *
2399
+ * @group Route
2400
+ */
2401
+ export declare type ImportantRoadStretchProps = SectionProps & {
2402
+ /**
2403
+ * The integer value of importance. The index starts from 0, and a lower value means higher importance. The index is needed for two reasons:
2404
+ * * To understand which stretch is the most important (for example, if it is necessary to display a smaller number of stretches).
2405
+ * * To group different sections that belong to the same stretch (since there may be gaps in one stretch for various reasons).
2406
+ */
2407
+ index: number;
2408
+ /**
2409
+ * The street name of the important road stretch.
2410
+ */
2411
+ streetName?: string;
2412
+ /**
2413
+ * A set of road numbers that identify the important road stretch.
2414
+ *
2415
+ * @remarks
2416
+ * The road numbers are sorted in descending order of display priority.
2417
+ */
2418
+ roadNumbers?: string[];
2419
+ };
2420
+
2421
+ /**
2422
+ * @ignore
2423
+ */
2424
+ export declare const indexedMagnitudes: DelayMagnitude[];
2425
+
2426
+ /**
2427
+ * Route calculation request section types so they can be included in response.
2428
+ * @group Route
2429
+ */
2430
+ export declare const inputSectionTypes: SectionType[];
2431
+
2432
+ /**
2433
+ * Route calculation request section types, including guidance-related ones, so they can be included in response.
2434
+ * @group Route
2435
+ */
2436
+ export declare const inputSectionTypesWithGuidance: SectionType[];
2437
+
2438
+ /**
2439
+ * A set of attributes describing a maneuver, e.g., "Turn right", "Keep left", "Take the ferry", "Take the motorway", "Arrive".
2440
+ * @group Route
2441
+ */
2442
+ export declare type Instruction = {
2443
+ /**
2444
+ * The index of the point on the route path where the maneuver takes place.
2445
+ * * maneuverPoint is expected to be equal to the path point at this index.
2446
+ */
2447
+ pathPointIndex: number;
2448
+ /**
2449
+ * Location of the maneuver.
2450
+ */
2451
+ maneuverPoint: Position;
2452
+ /**
2453
+ * The distance from the start of the route to the point of the instruction.
2454
+ */
2455
+ routeOffsetInMeters: number;
2456
+ /**
2457
+ * A code identifying the maneuver (e.g., "Turn right").
2458
+ */
2459
+ maneuver: Maneuver;
2460
+ /**
2461
+ * A maneuver can occupy more than one point. For such a maneuver, this field will contain a sequence of all the points it occupies on the map.
2462
+ * For maneuvers that only occupy a single point, this field will contain a single array item, with a point value equal to maneuverPoint.
2463
+ */
2464
+ routePath: RoutePathPoint[];
2465
+ /**
2466
+ * Provides information about the road in the link before the maneuver.
2467
+ */
2468
+ previousRoadInfo: RoadInformation;
2469
+ /**
2470
+ * Provides information about the road we are heading to (past the maneuver).
2471
+ * The source of this information is either the road past the maneuver or the signpost at the maneuver if such exists.
2472
+ */
2473
+ nextRoadInfo: RoadInformation;
2474
+ /**
2475
+ * Included if a signpost is available for this maneuver.
2476
+ * Provides the information displayed in the signpost indicating the direction on route.
2477
+ */
2478
+ signpost?: Signpost;
2479
+ /**
2480
+ * Name of the intersection at which the maneuver must be performed.
2481
+ * Included if intersection name is available for this maneuver.
2482
+ */
2483
+ intersectionName?: TextWithPhonetics;
2484
+ /**
2485
+ * Indicates left-hand vs. right-hand side driving at the point of the maneuver.
2486
+ */
2487
+ drivingSide?: DrivingSide;
2488
+ /**
2489
+ * Included if instruction has a landmark.
2490
+ */
2491
+ landmark?: Landmark;
2492
+ /**
2493
+ * Included if the landmark is AT_TRAFFIC_LIGHT, and a maneuver takes place at the second traffic light (out of two consequent traffic lights).
2494
+ * In such case this attribute represents the distance on the route (in meters) between those traffic lights.
2495
+ */
2496
+ trafficLightOffsetInMeters?: number;
2497
+ /**
2498
+ * List of roads connected to the route but not part of it, right before the maneuver.
2499
+ * These are roads which the driver can accidentally take based on the instruction without considering the dynamic restriction of the route like time or vehicle profile dependent restriction.
2500
+ * Dual-carriageway roads might be represented as a single or several side roads, depending on how the driver might perceive them.
2501
+ * The list will be empty if no road is crossing the route before the maneuver.
2502
+ * This information can be used to allow a richer graphical presentation of the maneuver and visualize connected roads preceding it in proximity.
2503
+ * The list is ordered in ascending order of offset on route.
2504
+ * Included if there are side roads within a reasonable distance before the maneuver.
2505
+ */
2506
+ sideRoads?: SideRoad[];
2507
+ /**
2508
+ * The base URL of the Road Shields service to fetch the road shield atlas and metadata resources.
2509
+ * Currently available resources are:
2510
+ * sprite.png
2511
+ * sprite.json
2512
+ * We recommend to cache the sprite atlas (sprite.png) and metadata (sprite.json) as it changes infrequently and is large compared to a typical road shield description.
2513
+ */
2514
+ roadShieldAtlasReference?: string;
2515
+ /**
2516
+ * List of road shield references to be shown for the instruction.
2517
+ */
2518
+ roadShieldReferences?: RoadShieldReference[];
2519
+ /**
2520
+ * List of road shield references to be shown for the signpost.
2521
+ */
2522
+ signpostRoadShieldReferences?: RoadShieldReference[];
2523
+ /**
2524
+ * Marks this maneuver as obligatory. For example, when a driver reaches a T-junction, where one option is drivable, while the other is not.
2525
+ * Included if the maneuver is a turn maneuver, i.e., maneuver is one of the following:
2526
+ * SLIGHT_RIGHT
2527
+ * TURN_RIGHT
2528
+ * SHARP_RIGHT
2529
+ * SLIGHT_LEFT
2530
+ * TURN_LEFT
2531
+ * SHARP_LEFT
2532
+ * MAKE_UTURN
2533
+ */
2534
+ isManeuverObligatory?: boolean;
2535
+ /**
2536
+ * Gives the total change of angle (in degrees) from the entry until the exit of the maneuver, in the range [-180,180). For example, -90 means "forks off to the left in a perpendicular angle".
2537
+ * At complex junctions, the angle is relative to the entry road.
2538
+ * Included if the maneuver is a turn or roundabout maneuver, i.e., maneuver is one of the following:
2539
+ * STRAIGHT
2540
+ * SLIGHT_RIGHT
2541
+ * TURN_RIGHT
2542
+ * SHARP_RIGHT
2543
+ * SLIGHT_LEFT
2544
+ * TURN_LEFT
2545
+ * SHARP_LEFT
2546
+ * MAKE_UTURN
2547
+ * ROUNDABOUT_STRAIGHT
2548
+ * ROUNDABOUT_SLIGHT_RIGHT
2549
+ * ROUNDABOUT_RIGHT
2550
+ * ROUNDABOUT_SHARP_RIGHT
2551
+ * ROUNDABOUT_SLIGHT_LEFT
2552
+ * ROUNDABOUT_LEFT
2553
+ * ROUNDABOUT_SHARP_LEFT
2554
+ * ROUNDABOUT_BACK
2555
+ */
2556
+ changeOfAngleInDegrees?: number;
2557
+ /**
2558
+ * Included if current maneuver is an exit, and there is another exit before the current maneuver within reasonable distance, which may cause ambiguity.
2559
+ * In such case there might be a need to resolve the ambiguity on client side, and compose an instruction like "Take the 2nd exit".
2560
+ * Represents the offset (on route) of the ambiguous exit from the maneuver point (represented by maneuverPoint), in meters.
2561
+ * The offset is absolute, i.e., it is a positive integer despite the ambiguous exit being located before the maneuver on the route.
2562
+ * Applicable for maneuvers where maneuver is one of the following values:
2563
+ * EXIT_ROUNDABOUT
2564
+ * EXIT_MOTORWAY_LEFT
2565
+ * EXIT_MOTORWAY_RIGHT
2566
+ * SWITCH_MOTORWAY_LEFT
2567
+ * SWITCH_MOTORWAY_RIGHT
2568
+ */
2569
+ offsetOfAmbiguousExitFromManeuverInMeters?: number;
2570
+ /**
2571
+ * The ordinal number of the exit to take at a roundabout, e.g., "take the first/second exit".
2572
+ * Included if the maneuver is a roundabout maneuver, i.e., maneuver is one of the following:
2573
+ * ROUNDABOUT_STRAIGHT
2574
+ * ROUNDABOUT_SLIGHT_RIGHT
2575
+ * ROUNDABOUT_RIGHT
2576
+ * ROUNDABOUT_SHARP_RIGHT
2577
+ * ROUNDABOUT_SLIGHT_LEFT
2578
+ * ROUNDABOUT_LEFT
2579
+ * ROUNDABOUT_SHARP_LEFT
2580
+ * ROUNDABOUT_BACK
2581
+ */
2582
+ roundaboutExitNumber?: number;
2583
+ /**
2584
+ * The name of the tollgate, if available.
2585
+ * Included if the maneuver is a tollgate maneuver, i.e., maneuver is TOLLGATE.
2586
+ */
2587
+ tollgateName?: TextWithPhonetics;
2588
+ /**
2589
+ * Included if the maneuver is a tollgate maneuver, i.e., maneuver is TOLLGATE.
2590
+ * Array containing one or more available toll payment options for this tollgate.
2591
+ */
2592
+ tollPaymentTypes?: TollPaymentType[];
2593
+ /**
2594
+ * The name of the country the border crossing occurs from.
2595
+ * Included if the maneuver is a border crossing maneuver, or leads to a border crossing, i.e., maneuver is one of:
2596
+ * CROSS_BORDER
2597
+ * TAKE_SHIP_FERRY
2598
+ * TAKE_CAR_TRAIN
2599
+ * LEAVE_SHIP_FERRY
2600
+ * LEAVE_CAR_TRAIN
2601
+ */
2602
+ countryCrossingFromName?: TextWithPhonetics;
2603
+ /**
2604
+ * The code (ISO 3166-1 alpha-3) of the country the border crossing occurs from.
2605
+ * Included if the maneuver is a border crossing maneuver, i.e., maneuver is one of:
2606
+ * CROSS_BORDER
2607
+ * TAKE_SHIP_FERRY
2608
+ * TAKE_CAR_TRAIN
2609
+ * LEAVE_SHIP_FERRY
2610
+ * LEAVE_CAR_TRAIN
2611
+ */
2612
+ countryCrossingFromCode?: string;
2613
+ /**
2614
+ * The name of the country the border crossing occurs to.
2615
+ * Included if the maneuver is a border crossing maneuver, or leads to a border crossing, i.e., maneuver is one of:
2616
+ * CROSS_BORDER
2617
+ * TAKE_SHIP_FERRY
2618
+ * TAKE_CAR_TRAIN
2619
+ * LEAVE_SHIP_FERRY
2620
+ * LEAVE_CAR_TRAIN
2621
+ */
2622
+ countryCrossingToName?: TextWithPhonetics;
2623
+ /**
2624
+ * The code (ISO 3166-1 alpha-3) of the country the border crossing occurs to.
2625
+ * Included if the maneuver is a border crossing maneuver, i.e., maneuver is one of:
2626
+ * CROSS_BORDER
2627
+ * TAKE_SHIP_FERRY
2628
+ * TAKE_CAR_TRAIN
2629
+ * LEAVE_SHIP_FERRY
2630
+ * LEAVE_CAR_TRAIN
2631
+ */
2632
+ countryCrossingToCode?: string;
2633
+ };
2634
+
2635
+ /**
2636
+ * Calculates whether the given bbox has area (width and height).
2637
+ * @ignore
2638
+ * @param bbox The BBox to verify. If undefined, false is returned.
2639
+ */
2640
+ export declare const isBBoxWithArea: (bbox: OptionalBBox) => boolean;
2641
+
2642
+ /**
2643
+ * Type of landmarks that can be used in instructions.
2644
+ * @group Route
2645
+ */
2646
+ export declare type Landmark = 'END_OF_ROAD' | 'AT_TRAFFIC_LIGHT' | 'ON_TO_BRIDGE' | 'ON_BRIDGE' | 'AFTER_BRIDGE' | 'INTO_TUNNEL' | 'INSIDE_TUNNEL' | 'AFTER_TUNNEL';
2647
+
2648
+ /**
2649
+ * Lane guidance information.
2650
+ *
2651
+ * Describes possible directions for a lane and which direction to follow.
2652
+ * Used for lane-level navigation guidance.
2653
+ *
2654
+ * @example
2655
+ * ```typescript
2656
+ * // Left lane allows left turn or straight
2657
+ * const laneDirection: LaneDirection = {
2658
+ * directions: ['LEFT', 'STRAIGHT'],
2659
+ * follow: 'LEFT' // Follow the left turn
2660
+ * };
2661
+ * ```
2662
+ *
2663
+ * @group Route
2664
+ */
2665
+ export declare type LaneDirection = {
2666
+ /**
2667
+ * All possible directions this lane leads to.
2668
+ *
2669
+ * A lane may allow multiple directions (e.g., straight and turn).
2670
+ */
2671
+ directions: PossibleLaneDirection[];
2672
+ /**
2673
+ * The direction to follow in this lane for the route.
2674
+ *
2675
+ * Present when guidance indicates which direction to take.
2676
+ */
2677
+ follow?: PossibleLaneDirection;
2678
+ };
2679
+
2680
+ /**
2681
+ * Section representing a lane configuration.
2682
+ * @group Route
2683
+ */
2684
+ export declare type LaneSectionProps = SectionProps & {
2685
+ /**
2686
+ * The lane directions for this lane section.
2687
+ */
2688
+ lanes: LaneDirection[];
2689
+ /**
2690
+ * The lane separators for this lane section.
2691
+ */
2692
+ laneSeparators: PossibleLaneSeparator[];
2693
+ /**
2694
+ * Properties of the lane section, as a possible combination of several values. This field is optional.
2695
+ * Possible values:
2696
+ * IS_MANEUVER: whether the lane section contains a maneuver point, that is, there exists a guidance instruction
2697
+ * with a maneuverPoint that falls into this section. The section describes the lane configuration for that
2698
+ * particular instruction.
2699
+ * It is possible that more values will be added to the API in the future.
2700
+ */
2701
+ properties?: string[];
2702
+ };
2703
+
2704
+ /**
2705
+ * Language code for map display and service responses.
2706
+ *
2707
+ * Determines the language used for:
2708
+ * - Map labels and text on vector tiles
2709
+ * - Place names, addresses, and other textual content in service responses
2710
+ *
2711
+ * Supports various locales with region-specific variants (e.g., `en-US`, `en-GB`).
2712
+ * Special codes like `ngt` (Neutral Ground Truth) and `ngt-Latn` provide language-neutral
2713
+ * or Latin script alternatives.
2714
+ *
2715
+ * @see [Supported languages documentation](https://docs.tomtom.com/map-display-api/documentation/vector/content-v2#list-of-supported-languages)
2716
+ *
2717
+ * @example
2718
+ * ```typescript
2719
+ * // Use US English
2720
+ * const language: Language = 'en-US';
2721
+ *
2722
+ * // Use simplified Chinese
2723
+ * const language: Language = 'zh-Hans';
2724
+ *
2725
+ * // Use neutral ground truth (no translation)
2726
+ * const language: Language = 'ngt';
2727
+ * ```
2728
+ *
2729
+ * @group Shared
2730
+ */
2731
+ export declare type Language = (typeof languages)[number];
2732
+
2733
+ /**
2734
+ * Array of all supported language codes for map display and service responses.
2735
+ *
2736
+ * This constant array contains all valid language codes that can be used to configure
2737
+ * the language for map labels, place names, addresses, and other textual content.
2738
+ *
2739
+ * The array includes:
2740
+ * - Region-specific language variants (e.g., `en-US`, `en-GB`, `pt-BR`, `pt-PT`)
2741
+ * - Script-specific variants (e.g., `zh-Hans` for Simplified Chinese, `zh-Hant` for Traditional Chinese)
2742
+ * - Special codes like `ngt` (Neutral Ground Truth) for language-neutral content
2743
+ * - Latin script alternatives (e.g., `ngt-Latn`, `ko-Latn-KR`, `ru-Latn-RU`)
2744
+ * - Cyrillic script variants (e.g., `ru-Cyrl-RU`)
2745
+ *
2746
+ * Use this array to:
2747
+ * - Validate user-provided language codes
2748
+ * - Generate language selection UI components
2749
+ * - Iterate over all available language options
2750
+ * - Check if a language code is supported
2751
+ *
2752
+ * @see {@link Language} - The type derived from this array
2753
+ * @see [Supported languages documentation](https://docs.tomtom.com/map-display-api/documentation/vector/content-v2#list-of-supported-languages)
2754
+ *
2755
+ * @example
2756
+ * ```typescript
2757
+ * // Validate a language code
2758
+ * const userLanguage = 'en-US';
2759
+ * if (languages.includes(userLanguage)) {
2760
+ * console.log('Language is supported');
2761
+ * }
2762
+ *
2763
+ * // Create a language selector
2764
+ * languages.forEach(lang => {
2765
+ * console.log(`Available language: ${lang}`);
2766
+ * });
2767
+ *
2768
+ * // Check total number of supported languages
2769
+ * console.log(`Total languages: ${languages.length}`);
2770
+ * ```
2771
+ *
2772
+ * @group Shared
2773
+ */
2774
+ export declare const languages: readonly ["ngt", "ngt-Latn", "ar", "bg-BG", "zh-Hant", "zh-Hans", "cs-CZ", "da-DK", "nl-NL", "en-AU", "en-CA", "en-GB", "en-NZ", "en-US", "fi-FI", "fr-FR", "de-DE", "el-GR", "hu-HU", "id-ID", "it-IT", "ko-KR", "ko-Latn-KR", "lt-LT", "ms-MY", "nb-NO", "pl-PL", "pt-BR", "pt-PT", "ru-RU", "ru-Latn-RU", "ru-Cyrl-RU", "sk-SK", "sl-SI", "es-ES", "es-MX", "sv-SE", "th-TH", "tr-TR"];
2775
+
2776
+ /**
2777
+ * Route section representing a leg between waypoints.
2778
+ *
2779
+ * A leg is the portion of route between two consecutive non-circle waypoints.
2780
+ * This is a top-level section that encompasses the entire journey segment.
2781
+ *
2782
+ * @remarks
2783
+ * Leg examples:
2784
+ * - A→B route: 1 leg (A to B)
2785
+ * - A→B→C route: 2 legs (A to B, then B to C)
2786
+ * - A→B→(circle)→C route: 2 legs (A to B, then B to C) - circle waypoint doesn't create a leg
2787
+ *
2788
+ * @example
2789
+ * ```typescript
2790
+ * const leg: LegSectionProps = {
2791
+ * id: 'leg-1',
2792
+ * summary: {
2793
+ * departureTime: new Date(),
2794
+ * arrivalTime: new Date(),
2795
+ * lengthInMeters: 50000,
2796
+ * travelTimeInSeconds: 3600,
2797
+ * // ... other summary fields
2798
+ * },
2799
+ * startPointIndex: 0,
2800
+ * endPointIndex: 250
2801
+ * };
2802
+ * ```
2803
+ *
2804
+ * @group Route
2805
+ */
2806
+ export declare type LegSectionProps = Omit<SectionProps, 'startPointIndex' | 'endPointIndex'> & {
2807
+ /**
2808
+ * Index where this leg starts in the route coordinates.
2809
+ *
2810
+ * Only present if the route polyline geometry is available.
2811
+ */
2812
+ startPointIndex?: number;
2813
+ /**
2814
+ * Index where this leg ends in the route coordinates.
2815
+ *
2816
+ * Only present if the route polyline geometry is available.
2817
+ */
2818
+ endPointIndex?: number;
2819
+ /**
2820
+ * Summary statistics for this leg.
2821
+ *
2822
+ * Contains departure/arrival times, distances, durations, and consumption
2823
+ * estimates specifically for this leg of the journey.
2824
+ */
2825
+ summary: LegSummary;
2826
+ };
2827
+
2828
+ /**
2829
+ * Summary information for a single route leg.
2830
+ *
2831
+ * A leg is the portion of the route between two consecutive waypoints.
2832
+ *
2833
+ * @remarks
2834
+ * - An A→B route has 1 leg
2835
+ * - An A→B→C route has 2 legs (A→B, B→C)
2836
+ * - Circle waypoints don't create new legs
2837
+ *
2838
+ * @group Route
2839
+ */
2840
+ export declare type LegSummary = SummaryWithConsumption & {
2841
+ /**
2842
+ * Charging information at the end of this leg.
2843
+ *
2844
+ * Present only if this leg ends at a charging stop, indicating the vehicle
2845
+ * will charge at this waypoint before continuing to the next leg.
2846
+ *
2847
+ * @remarks
2848
+ * Contains details about:
2849
+ * - Charging park location and facilities
2850
+ * - Required charging time
2851
+ * - Target charge level after charging
2852
+ *
2853
+ * @example
2854
+ * ```typescript
2855
+ * chargingInformationAtEndOfLeg: {
2856
+ * chargingParkId: 'park-123',
2857
+ * chargingTimeInSeconds: 1200, // 20 minutes
2858
+ * targetChargeInkWh: 80,
2859
+ * targetChargeInPCT: 80
2860
+ * }
2861
+ * ```
2862
+ */
2863
+ chargingInformationAtEndOfLeg?: ChargingStop;
2864
+ };
2865
+
2866
+ /**
2867
+ * Localized name for a POI category.
2868
+ *
2869
+ * Provides the category name in a specific language/locale.
2870
+ *
2871
+ * @example
2872
+ * ```typescript
2873
+ * const localizedName: LocalizedName = {
2874
+ * nameLocale: 'en-US',
2875
+ * name: 'Restaurant'
2876
+ * };
2877
+ * ```
2878
+ *
2879
+ * @group Place
2880
+ */
2881
+ export declare type LocalizedName = {
2882
+ /**
2883
+ * Language/locale code for this name.
2884
+ *
2885
+ * Uses IETF language tags (e.g., 'en-US', 'fr-FR', 'de-DE').
2886
+ */
2887
+ nameLocale: string;
2888
+ /**
2889
+ * Category name in the specified locale.
2890
+ *
2891
+ * Human-readable, localized category text.
2892
+ */
2893
+ name: string;
2894
+ };
2895
+
2896
+ /**
2897
+ * Description of the maneuver, for example: arrive or turn right.
2898
+ * @see https://docs.tomtom.com/routing-api/documentation/routing/calculate-route#maneuver-codes
2899
+ * @group Route
2900
+ */
2901
+ export declare type Maneuver = 'DEPART' | 'WAYPOINT_LEFT' | 'WAYPOINT_RIGHT' | 'WAYPOINT_REACHED' | 'WAYPOINT_AHEAD' | 'ARRIVE' | 'ARRIVE_LEFT' | 'ARRIVE_RIGHT' | 'ARRIVE_AHEAD' | 'STRAIGHT' | 'KEEP_LEFT' | 'KEEP_RIGHT' | 'SLIGHT_RIGHT' | 'TURN_RIGHT' | 'SHARP_RIGHT' | 'SLIGHT_LEFT' | 'TURN_LEFT' | 'SHARP_LEFT' | 'MAKE_UTURN' | 'ROUNDABOUT_STRAIGHT' | 'ROUNDABOUT_SHARP_RIGHT' | 'ROUNDABOUT_RIGHT' | 'ROUNDABOUT_SLIGHT_RIGHT' | 'ROUNDABOUT_SLIGHT_LEFT' | 'ROUNDABOUT_LEFT' | 'ROUNDABOUT_SHARP_LEFT' | 'ROUNDABOUT_BACK' | 'EXIT_ROUNDABOUT' | 'EXIT_MOTORWAY_LEFT' | 'EXIT_MOTORWAY_RIGHT' | 'SWITCH_MOTORWAY_LEFT' | 'SWITCH_MOTORWAY_RIGHT' | 'ENTER_CARPOOL_LANE_LEFT' | 'ENTER_CARPOOL_LANE_RIGHT' | 'EXIT_CARPOOL_LANE_LEFT' | 'EXIT_CARPOOL_LANE_RIGHT' | 'MERGE_LEFT_LANE' | 'MERGE_RIGHT_LANE' | 'TAKE_SHIP_FERRY' | 'TAKE_CAR_TRAIN' | 'LEAVE_SHIP_FERRY' | 'LEAVE_CAR_TRAIN' | 'CROSS_BORDER' | 'TOLLGATE';
2902
+
2903
+ /**
2904
+ * Mapcode representation of a location.
2905
+ *
2906
+ * A mapcode is a short, memorable code representing a geographic location,
2907
+ * designed as an alternative to coordinates.
2908
+ *
2909
+ * @example
2910
+ * ```typescript
2911
+ * // Local mapcode (requires territory)
2912
+ * const localMapcode: Mapcode = {
2913
+ * type: 'Local',
2914
+ * fullMapcode: 'NLD 4J.P2',
2915
+ * territory: 'NLD',
2916
+ * code: '4J.P2'
2917
+ * };
2918
+ *
2919
+ * // International mapcode (no territory needed)
2920
+ * const intlMapcode: Mapcode = {
2921
+ * type: 'International',
2922
+ * fullMapcode: 'VHXGB.4J9W',
2923
+ * code: 'VHXGB.4J9W'
2924
+ * };
2925
+ * ```
2926
+ *
2927
+ * @group Place
2928
+ */
2929
+ export declare type Mapcode = {
2930
+ /**
2931
+ * The type of mapcode (Local, International, or Alternative).
2932
+ */
2933
+ type: MapcodeType;
2934
+ /**
2935
+ * Complete mapcode including territory if applicable.
2936
+ *
2937
+ * Always unambiguous. Format: "TERRITORY CODE" for local, just "CODE" for international.
2938
+ */
2939
+ fullMapcode: string;
2940
+ /**
2941
+ * Territory code for local mapcodes.
2942
+ *
2943
+ * Present only for Local and Alternative mapcodes. Uses Latin alphabet.
2944
+ * Not present for International mapcodes.
2945
+ */
2946
+ territory?: string;
2947
+ /**
2948
+ * The mapcode without territory.
2949
+ *
2950
+ * Two groups of letters/digits separated by a dot (e.g., "4J.P2").
2951
+ * Uses the response language/alphabet. Not present for International mapcodes.
2952
+ */
2953
+ code?: string;
2954
+ };
2955
+
2956
+ /**
2957
+ * Type of mapcode.
2958
+ *
2959
+ * Mapcodes are short location codes that can be used as an alternative to coordinates.
2960
+ *
2961
+ * @remarks
2962
+ * - `Local`: Shortest mapcode, requires territory context (e.g., "4J.P2" for Eiffel Tower in FRA)
2963
+ * - `International`: Unambiguous worldwide, no territory needed but longer
2964
+ * - `Alternative`: Alternative local encoding pointing to slightly different coordinates
2965
+ *
2966
+ * @see [Mapcode documentation](https://www.mapcode.com)
2967
+ *
2968
+ * @group Place
2969
+ */
2970
+ export declare type MapcodeType = 'Local' | 'International' | 'Alternative';
2971
+
2972
+ /**
2973
+ * Merges the global configuration into the given one, with the latter having priority.
2974
+ * @ignore
2975
+ */
2976
+ export declare const mergeFromGlobal: <T extends Partial<GlobalConfig>>(givenConfig?: T) => T;
2977
+
2978
+ /**
2979
+ * Date and time with convenient derived properties.
2980
+ *
2981
+ * Represents a specific moment in time with pre-calculated components
2982
+ * for easy access without additional date parsing.
2983
+ *
2984
+ * @example
2985
+ * ```typescript
2986
+ * const moment: Moment = {
2987
+ * date: new Date('2025-10-20T09:30:00Z'),
2988
+ * dateYYYYMMDD: '2025-10-20',
2989
+ * year: 2025,
2990
+ * month: 10,
2991
+ * day: 20,
2992
+ * hour: 9,
2993
+ * minute: 30
2994
+ * };
2995
+ * ```
2996
+ *
2997
+ * @group Place
2998
+ */
2999
+ export declare type Moment = {
3000
+ /**
3001
+ * JavaScript Date object representing this moment.
3002
+ */
3003
+ date: Date;
3004
+ /**
3005
+ * Date formatted as YYYY-MM-DD string.
3006
+ *
3007
+ * Useful for display or comparison without time components.
3008
+ */
3009
+ dateYYYYMMDD: string;
3010
+ /**
3011
+ * Four-digit year (e.g., 2025).
3012
+ */
3013
+ year: number;
3014
+ /**
3015
+ * Month number (1-12).
3016
+ *
3017
+ * Note: Unlike JavaScript Date.getMonth(), this is 1-based (January = 1).
3018
+ */
3019
+ month: number;
3020
+ /**
3021
+ * Day of month (1-31).
3022
+ */
3023
+ day: number;
3024
+ /**
3025
+ * Hour in 24-hour format (0-23).
3026
+ */
3027
+ hour: number;
3028
+ /**
3029
+ * Minute (0-59).
3030
+ */
3031
+ minute: number;
3032
+ };
3033
+
3034
+ /**
3035
+ * Operating hours information for a POI.
3036
+ *
3037
+ * Describes when a location is open for business, including:
3038
+ * - Regular daily schedules
3039
+ * - Split shifts (e.g., lunch break closures)
3040
+ * - Overnight hours
3041
+ * - 24/7 operation
3042
+ *
3043
+ * @remarks
3044
+ * Use this to:
3045
+ * - Display "Open now" / "Closed" status
3046
+ * - Show upcoming hours
3047
+ * - Determine if a location is open at a specific time
3048
+ * - Plan visits during operating hours
3049
+ *
3050
+ * @example
3051
+ * ```typescript
3052
+ * const openingHours: OpeningHours = {
3053
+ * mode: 'nextSevenDays',
3054
+ * timeRanges: [
3055
+ * { start: {...}, end: {...} }, // Monday
3056
+ * { start: {...}, end: {...} } // Tuesday
3057
+ * ],
3058
+ * alwaysOpenThisPeriod: false
3059
+ * };
3060
+ *
3061
+ * // 24/7 location
3062
+ * const alwaysOpen: OpeningHours = {
3063
+ * mode: 'nextSevenDays',
3064
+ * timeRanges: [],
3065
+ * alwaysOpenThisPeriod: true
3066
+ * };
3067
+ * ```
3068
+ *
3069
+ * @group Place
3070
+ */
3071
+ export declare type OpeningHours = {
3072
+ /**
3073
+ * Time period mode for the provided hours.
3074
+ *
3075
+ * Currently always 'nextSevenDays'.
3076
+ */
3077
+ mode: OpeningHoursMode;
3078
+ /**
3079
+ * Array of time ranges when the POI is open.
3080
+ *
3081
+ * Each time range represents one opening period. Multiple ranges per day
3082
+ * indicate split shifts (e.g., closed for lunch).
3083
+ *
3084
+ * Empty array if alwaysOpenThisPeriod is true.
3085
+ */
3086
+ timeRanges: TimeRange[];
3087
+ /**
3088
+ * Indicates if the POI is always open during the requested period.
3089
+ *
3090
+ * When true, the location operates 24/7 and timeRanges will be empty.
3091
+ * When false, refer to timeRanges for specific open hours.
3092
+ */
3093
+ alwaysOpenThisPeriod: boolean;
3094
+ };
3095
+
3096
+ /**
3097
+ * Operating hours mode specifying the time period covered.
3098
+ *
3099
+ * Currently only 'nextSevenDays' is supported, providing operating hours
3100
+ * for the upcoming week.
3101
+ *
3102
+ * @group Place
3103
+ */
3104
+ export declare type OpeningHoursMode = 'nextSevenDays';
3105
+
3106
+ /**
3107
+ * Optional bounding box value.
3108
+ *
3109
+ * @group Shared
3110
+ */
3111
+ export declare type OptionalBBox = BBox | undefined;
3112
+
3113
+ /**
3114
+ * Input representing a path or route to follow.
3115
+ *
3116
+ * Used for route reconstruction or when you want the calculated route to follow
3117
+ * a specific path rather than calculating a new one.
3118
+ *
3119
+ * @remarks
3120
+ * - `Position[]`: Array of coordinate points defining the path
3121
+ * - `Route`: Complete route object (for route reconstruction scenarios)
3122
+ *
3123
+ * @example
3124
+ * ```typescript
3125
+ * // As coordinate array
3126
+ * const path1: PathLike = [
3127
+ * [4.9, 52.3],
3128
+ * [4.91, 52.31],
3129
+ * [4.92, 52.32]
3130
+ * ];
3131
+ *
3132
+ * // As existing route
3133
+ * const path2: PathLike = existingRoute;
3134
+ * ```
3135
+ *
3136
+ * @group Route
3137
+ */
3138
+ export declare type PathLike = Position[] | Route;
3139
+
3140
+ /**
3141
+ * Payment method type for electric vehicle charging stations.
3142
+ *
3143
+ * Specifies how users can pay for charging services at a particular station.
3144
+ *
3145
+ * @example
3146
+ * ```typescript
3147
+ * const method: PaymentMethod = 'Subscription';
3148
+ * ```
3149
+ *
3150
+ * @group Route
3151
+ */
3152
+ export declare type PaymentMethod = (typeof paymentMethods)[number];
3153
+
3154
+ /**
3155
+ * Available payment methods for electric vehicle charging stations.
3156
+ *
3157
+ * Defines the types of payment accepted at charging locations.
3158
+ *
3159
+ * @remarks
3160
+ * - `No_Payment`: Free charging, no payment required
3161
+ * - `Subscription`: Requires a subscription or membership plan
3162
+ * - `Direct`: Pay-per-use, direct payment (credit card, app, etc.)
3163
+ *
3164
+ * @group Route
3165
+ */
3166
+ export declare const paymentMethods: readonly ["No_Payment", "Subscription", "Direct"];
3167
+
3168
+ /**
3169
+ * GeoJSON Feature representing a place.
3170
+ *
3171
+ * A place is a Point feature with comprehensive location information
3172
+ * including address, coordinates, and metadata.
3173
+ *
3174
+ * @typeParam P - Type of the place properties (defaults to CommonPlaceProps)
3175
+ *
3176
+ * @example
3177
+ * ```typescript
3178
+ * const place: Place<SearchPlaceProps> = {
3179
+ * type: 'Feature',
3180
+ * id: 'place-123',
3181
+ * geometry: { type: 'Point', coordinates: [4.9041, 52.3676] },
3182
+ * properties: {
3183
+ * type: 'POI',
3184
+ * address: { freeformAddress: 'Dam, Amsterdam', ... },
3185
+ * poi: { name: 'Dam Square', ... },
3186
+ * score: 0.95
3187
+ * }
3188
+ * };
3189
+ * ```
3190
+ *
3191
+ * @group Place
3192
+ */
3193
+ export declare type Place<P extends CommonPlaceProps = CommonPlaceProps> = Omit<Feature<Point, P>, 'id'> & {
3194
+ /**
3195
+ * Unique identifier for this place.
3196
+ *
3197
+ * Required string ID (stricter than GeoJSON Feature's optional id).
3198
+ */
3199
+ id: string;
3200
+ };
3201
+
3202
+ /**
3203
+ * Data sources for fetching additional place information.
3204
+ *
3205
+ * Provides IDs that can be used with various services to retrieve
3206
+ * detailed or real-time information about a place.
3207
+ *
3208
+ * @remarks
3209
+ * This object acts as a navigation aid, telling you which additional
3210
+ * data is available for a place and providing the IDs needed to fetch it.
3211
+ *
3212
+ * @example
3213
+ * ```typescript
3214
+ * const dataSources: PlaceDataSources = {
3215
+ * chargingAvailability: { id: 'charging-123' },
3216
+ * geometry: { id: 'geom-456' },
3217
+ * poiDetails: { id: 'poi-789', sourceName: 'TomTom' }
3218
+ * };
3219
+ * ```
3220
+ *
3221
+ * @group Place
3222
+ */
3223
+ export declare type PlaceDataSources = {
3224
+ /**
3225
+ * Data source for EV charging station availability.
3226
+ *
3227
+ * Present only for places that are EV charging stations (type === POI).
3228
+ * Use the ID to fetch real-time availability from the
3229
+ * EV Charging Stations Availability service.
3230
+ */
3231
+ chargingAvailability?: ChargingAvailabilityDataSource;
3232
+ /**
3233
+ * Data source for geometric shape information.
3234
+ *
3235
+ * Present for places with geometric representations (type === Geography or POI).
3236
+ * Use the ID to fetch boundary polygons from the Geometry Data service.
3237
+ *
3238
+ * @remarks
3239
+ * Useful for:
3240
+ * - Displaying administrative boundaries
3241
+ * - Showing building footprints
3242
+ * - Visualizing area coverage
3243
+ */
3244
+ geometry?: GeometryDataSource;
3245
+ /**
3246
+ * Data source for detailed POI information.
3247
+ *
3248
+ * Present only for POI places (type === POI).
3249
+ * Use the ID to fetch extended details from the Points of Interest Details service.
3250
+ */
3251
+ poiDetails?: PoiDetailsDataSource;
3252
+ };
3253
+
3254
+ /**
3255
+ * GeoJSON FeatureCollection containing multiple places.
3256
+ *
3257
+ * Collection of place results from search or geocoding operations.
3258
+ *
3259
+ * @typeParam P - Type of individual place properties (defaults to CommonPlaceProps)
3260
+ * @typeParam FeatureCollectionProps - Type of collection-level properties
3261
+ *
3262
+ * @example
3263
+ * ```typescript
3264
+ * const places: Places<SearchPlaceProps> = {
3265
+ * type: 'FeatureCollection',
3266
+ * features: [
3267
+ * { id: '1', type: 'Feature', geometry: {...}, properties: {...} },
3268
+ * { id: '2', type: 'Feature', geometry: {...}, properties: {...} }
3269
+ * ]
3270
+ * };
3271
+ * ```
3272
+ *
3273
+ * @group Place
3274
+ */
3275
+ export declare type Places<P extends CommonPlaceProps = CommonPlaceProps, FeatureCollectionProps = unknown> = Omit<FeatureCollectionWithProperties<Point, P, FeatureCollectionProps>, 'features'> & {
3276
+ /**
3277
+ * Array of place features.
3278
+ *
3279
+ * Each place has a required string ID.
3280
+ */
3281
+ features: Place<P>[];
3282
+ };
3283
+
3284
+ /**
3285
+ * Type of place result.
3286
+ *
3287
+ * Categorizes the kind of location returned by search or geocoding services.
3288
+ *
3289
+ * @remarks
3290
+ * - `POI`: Point of Interest (business, landmark, facility)
3291
+ * - `Street`: A named street
3292
+ * - `Geography`: Administrative area (city, state, country, etc.)
3293
+ * - `Point Address`: Specific street address with building number
3294
+ * - `Address Range`: Range of addresses along a street segment
3295
+ * - `Cross Street`: Intersection of two streets
3296
+ *
3297
+ * @example
3298
+ * ```typescript
3299
+ * const placeType: PlaceType = 'POI';
3300
+ * ```
3301
+ *
3302
+ * @group Place
3303
+ */
3304
+ export declare type PlaceType = (typeof placeTypes)[number];
3305
+
3306
+ /**
3307
+ * @group Place
3308
+ */
3309
+ export declare const placeTypes: readonly ["POI", "Street", "Geography", "Point Address", "Address Range", "Cross Street"];
3310
+
3311
+ /**
3312
+ * Standard plug/connector type for electric vehicle charging.
3313
+ *
3314
+ * Defines the physical connector type used for charging, which must match
3315
+ * the vehicle's charging port. Different regions and manufacturers use different standards.
3316
+ *
3317
+ * @remarks
3318
+ * Common standards include:
3319
+ * - **IEC 62196 Types**: European and international standards (Type 1, Type 2, Type 3)
3320
+ * - **CHAdeMO**: Japanese DC fast charging standard
3321
+ * - **CCS (Combo)**: Combined charging system (AC + DC)
3322
+ * - **Tesla_Connector**: Tesla proprietary connector
3323
+ * - **SAE_J1772**: North American standard for AC charging
3324
+ * - **China_GB**: Chinese national standard
3325
+ * - **NEMA**: North American standard household outlets
3326
+ *
3327
+ * Different vehicles support different plug types, and charging stations may have multiple
3328
+ * connector types available.
3329
+ *
3330
+ * @example
3331
+ * ```typescript
3332
+ * // Common connector types
3333
+ * const type2: PlugType = 'IEC_62196_Type_2_Connector_Cable_Attached'; // Common in Europe
3334
+ * const chademo: PlugType = 'CHAdeMO'; // Japanese standard
3335
+ * const ccs: PlugType = 'Combo_to_IEC_62196_Type_2_Base'; // CCS Combo 2
3336
+ * const tesla: PlugType = 'Tesla_Connector'; // Tesla vehicles
3337
+ * ```
3338
+ *
3339
+ * @group Route
3340
+ */
3341
+ export declare type PlugType = (typeof plugTypes)[number];
3342
+
3343
+ /**
3344
+ * Available plug types for EV charging.
3345
+ * @group Route
3346
+ */
3347
+ export declare const plugTypes: readonly ["Small_Paddle_Inductive", "Large_Paddle_Inductive", "IEC_60309_1_Phase", "IEC_60309_3_Phase", "IEC_62196_Type_1_Outlet", "IEC_62196_Type_2_Outlet", "IEC_62196_Type_3_Outlet", "IEC_62196_Type_1_Connector_Cable_Attached", "IEC_62196_Type_2_Connector_Cable_Attached", "IEC_62196_Type_3_Connector_Cable_Attached", "Combo_to_IEC_62196_Type_1_Base", "Combo_to_IEC_62196_Type_2_Base", "Type_E_French_Standard_CEE_7_5", "Type_F_Schuko_CEE_7_4", "Type_G_British_Standard_BS_1363", "Type_J_Swiss_Standard_SEV_1011", "China_GB_Part_2", "China_GB_Part_3", "IEC_309_DC_Plug", "AVCON_Connector", "Tesla_Connector", "NEMA_5_20", "CHAdeMO", "SAE_J1772", "TEPCO", "Better_Place_Socket", "Marechal_Socket", "Standard_Household_Country_Specific"];
3348
+
3349
+ /**
3350
+ * Point of Interest (POI) information.
3351
+ *
3352
+ * Contains detailed information about a place such as a business, landmark, or facility.
3353
+ * This data enriches basic place information with operational details and categorization.
3354
+ *
3355
+ * @example
3356
+ * ```typescript
3357
+ * const poi: POI = {
3358
+ * name: 'Central Station Café',
3359
+ * phone: '+31 20 123 4567',
3360
+ * brands: ['Starbucks'],
3361
+ * categoryIds: [7315025],
3362
+ * categories: ['Café'],
3363
+ * url: 'https://example.com',
3364
+ * openingHours: { mode: 'nextSevenDays', timeRanges: [...], alwaysOpenThisPeriod: false }
3365
+ * };
3366
+ * ```
3367
+ *
3368
+ * @group Place
3369
+ */
3370
+ export declare type POI = {
3371
+ /**
3372
+ * Name of the point of interest.
3373
+ *
3374
+ * The primary display name, localized according to the request language.
3375
+ */
3376
+ name: string;
3377
+ /**
3378
+ * Contact phone number for the POI.
3379
+ *
3380
+ * Typically includes country code (e.g., '+31 20 123 4567').
3381
+ */
3382
+ phone?: string;
3383
+ /**
3384
+ * Brand names associated with this POI.
3385
+ *
3386
+ * For chain locations, identifies the brand (e.g., 'Starbucks', 'Shell', 'Marriott').
3387
+ */
3388
+ brands?: string[];
3389
+ /**
3390
+ * Website URL for the POI.
3391
+ *
3392
+ * Official website or online presence for the business or location.
3393
+ */
3394
+ url?: string;
3395
+ /**
3396
+ * Category identifiers for the POI.
3397
+ *
3398
+ * Numeric IDs corresponding to the POI category classification system.
3399
+ * Use these for filtering or identifying POI types programmatically.
3400
+ */
3401
+ categoryIds?: number[];
3402
+ /**
3403
+ * Human-readable category names for the POI.
3404
+ *
3405
+ * Localized text descriptions of the POI categories (e.g., 'Restaurant', 'Gas Station', 'Hotel').
3406
+ */
3407
+ categories?: string[];
3408
+ /**
3409
+ * Operating hours information.
3410
+ *
3411
+ * Specifies when the POI is open, including daily schedules and special hours.
3412
+ * Useful for determining if a location is currently open or planning visits.
3413
+ */
3414
+ openingHours?: OpeningHours;
3415
+ /**
3416
+ * Detailed category classifications with localized names.
3417
+ *
3418
+ * Provides category information in multiple languages and includes standardized codes.
3419
+ */
3420
+ classifications?: Classification[];
3421
+ /**
3422
+ * Time zone of the POI location.
3423
+ *
3424
+ * Used for interpreting opening hours and scheduling visits across time zones.
3425
+ */
3426
+ timeZone?: TimeZone;
3427
+ };
3428
+
3429
+ /**
3430
+ * @group Place
3431
+ */
3432
+ export declare type POICategory = 'ACCESS_GATEWAY' | 'ADVENTURE_SPORTS_FACILITY' | 'ADVENTURE_SPORTS_VENUE' | 'ADVENTURE_VEHICLE_TRAIL' | 'ADVERTISING_COMPANY' | 'AFGHAN_RESTAURANT' | 'AFRICAN_RESTAURANT' | 'AGRICULTURE' | 'AGRICULTURAL_BUSINESS' | 'AGRICULTURAL_SUPPLIES' | 'AGRICULTURAL_TECHNOLOGY' | 'AIRFIELD' | 'AIRLINE_ACCESS' | 'AIRLINE_COMPANY' | 'AIRPORT' | 'ALGERIAN_RESTAURANT' | 'AMBULANCE_UNIT' | 'AMERICAN_RESTAURANT' | 'AMPHITHEATER' | 'AMUSEMENT_ARCADE' | 'AMUSEMENT_PARK' | 'AMUSEMENT_PLACE' | 'ANIMAL_SERVICES' | 'ANIMAL_SHELTER' | 'ANTIQUE_ART_SHOP' | 'APARTMENT_RENTAL' | 'AQUATIC_ZOO' | 'ARABIAN_RESTAURANT' | 'ARCH' | 'ARGENTINIAN_RESTAURANT' | 'ARMENIAN_RESTAURANT' | 'ART_SCHOOL' | 'ASHRAM' | 'ASIAN_RESTAURANT' | 'ATHLETICS_TRACK' | 'ATM' | 'ATV_DEALER' | 'AUSTRALIAN_RESTAURANT' | 'AUSTRIAN_RESTAURANT' | 'AUTOMOBILE_COMPANY' | 'AUTOMOBILE_MANUFACTURING' | 'AUTOMOTIVE_DEALER' | 'BAGS_LEATHERWEAR' | 'BAKERY' | 'BANK' | 'BANQUET_ROOMS' | 'BAR' | 'BARBECUE_RESTAURANT' | 'BASEBALL_PARK' | 'BASKETBALL_ARENA' | 'BASQUE_RESTAURANT' | 'BATTLEFIELD' | 'BAY' | 'BEACH' | 'BEACH_CLUB' | 'BEAUTY_SALON' | 'BEAUTY_SUPPLIES' | 'BELGIAN_RESTAURANT' | 'BETTING_STATION' | 'BISTRO' | 'BLOOD_BANK' | 'BOATING_EQUIPMENT_ACCESSORIES' | 'BOAT_DEALER' | 'BOAT_LAUNCHING_RAMP' | 'BODYSHOP' | 'BOLIVIAN_RESTAURANT' | 'BOOK_SHOP' | 'BOSNIAN_RESTAURANT' | 'BOWLING_CENTER' | 'BRAZILIAN_RESTAURANT' | 'BRIDGE' | 'BRIDGE_TUNNEL_OPERATIONS' | 'BRITISH_RESTAURANT' | 'BUFFET_RESTAURANT' | 'BUILDING' | 'BULGARIAN_RESTAURANT' | 'BUNGALOW_RENTAL' | 'BURMESE_RESTAURANT' | 'BUSINESS_PARK' | 'BUSINESS_SERVICES' | 'BUS_CHARTER_COMPANY' | 'BUS_DEALER' | 'BUS_LINES' | 'BUS_STOP' | 'BUTCHER' | 'B_B_GUEST_HOUSE' | 'CABARET_THEATER' | 'CABINS_LODGES' | 'CABLE_TELEPHONE_COMPANY' | 'CAFE' | 'CAFETERIA' | 'CAFE_PUB' | 'CALIFORNIAN_RESTAURANT' | 'CAMBODIAN_RESTAURANT' | 'CAMERAS_PHOTOGRAPHY' | 'CAMPING_GROUND' | 'CANADIAN_RESTAURANT' | 'CAPE' | 'CARAVAN_SITE' | 'CARIBBEAN_RESTAURANT' | 'CARPET_FLOOR_COVERINGS' | 'CAR_ACCESSORIES' | 'CAR_DEALER' | 'CAR_GLASS_REPLACEMENT_SHOP' | 'CAR_REPAIR_AND_SERVICE' | 'CAR_WASH' | 'CASINO' | 'CASH_DISPENSER' | 'CATERING_SERVICES' | 'CAVE' | 'CEMETERY' | 'CHALET_RENTAL' | 'CHECKPOINT' | 'CHEMICAL_COMPANY' | 'CHICKEN_RESTAURANT' | 'CHILDRENS_CLOTHES' | 'CHILD_CARE_FACILITY' | 'CHILEAN_RESTAURANT' | 'CHINESE_RESTAURANT' | 'CHRISTMAS_HOLIDAY_SHOP' | 'CHURCH' | 'CINEMA' | 'CLEANING_SERVICES' | 'CLOTHING_SHOP' | 'CLUB_ASSOCIATION' | 'COACH_STOP' | 'COCKTAIL_BAR' | 'COFFEE_SHOP' | 'COLLEGE_UNIVERSITY' | 'COLOMBIAN_RESTAURANT' | 'COMEDY_CLUB' | 'COMMERCIAL_BUILDING' | 'COMMUNITY_CENTER' | 'COMPANY' | 'COMPUTER_COMPUTER_SUPPLIES' | 'COMPUTER_DATA_SERVICES' | 'CONCERT_HALL' | 'CONDOMINIUM_COMPLEX' | 'CONSTRUCTION_COMPANY' | 'CONSTRUCTION_MATERIAL_EQUIPMENT' | 'CONSUMER_ELECTRONICS' | 'CONVENIENCE_STORE' | 'CORSICAN_RESTAURANT' | 'COTTAGE_RENTAL' | 'COURIER_DROP_BOX' | 'COURTHOUSE' | 'COVE' | 'CREOLE_RESTAURANT' | 'CREPERIE' | 'CRICKET_GROUND' | 'CUBAN_RESTAURANT' | 'CULINARY_SCHOOL' | 'CULTURAL_CENTER' | 'CURTAINS_TEXTILES' | 'CYPRIOT_RESTAURANT' | 'CZECH_RESTAURANT' | 'C_DS_DVD_VIDEOS' | 'DAM' | 'DANCE_STUDIO_SCHOOL' | 'DANISH_RESTAURANT' | 'DELICATESSEN' | 'DELIVERY_SERVICE' | 'DENTIST' | 'DEPARTMENT_STORE' | 'DINNER_THEATER' | 'DISCO_CLUB' | 'DIVERSIFIED_FINANCIALS' | 'DOCTOR' | 'DOMINICAN_RESTAURANT' | 'DONGBEI_RESTAURANT' | 'DOUGHNUT_RESTAURANT' | 'DO_IT_YOURSELF_CENTERS' | 'DRIVE_IN_MOVIES' | 'DRIVE_THROUGH_BOTTLE_SHOP' | 'DRIVING_SCHOOL' | 'DRUG_STORE' | 'DRY_CLEANER' | 'DUNE' | 'DUTCH_RESTAURANT' | 'EGYPTIAN_RESTAURANT' | 'ELECTRICAL_APPLIANCES_SHOP' | 'ELECTRIC_VEHICLE_STATION' | 'ELECTRONICS_COMPANY' | 'EMBASSY' | 'EMERGENCY_MEDICAL_SERVICE' | 'EMERGENCY_ROOM' | 'ENGLISH_RESTAURANT' | 'ENTERTAINMENT' | 'EQUIPMENT_RENTAL' | 'EROTIC_RESTAURANT' | 'ETHIOPIAN_RESTAURANT' | 'EXCHANGE' | 'EXHIBITION_CONVENTION_CENTER' | 'EXOTIC_RESTAURANT' | 'FACTORY_OUTLET' | 'FAIRGROUND' | 'FARM' | 'FARMERS_MARKET' | 'FAST_FOOD' | 'FERRY_TERMINAL' | 'FINNISH_RESTAURANT' | 'FIRE_STATION_BRIGADE' | 'FISHING_HUNTING_AREA' | 'FISHMONGER' | 'FITNESS_CLUB_CENTER' | 'FLATS_APARTMENT_COMPLEX' | 'FLORISTS' | 'FLYING_CLUB' | 'FONDUE_RESTAURANT' | 'FOOD_MARKET' | 'FOOTBALL_STADIUM' | 'FOOTWEAR_SHOE_REPAIRS' | 'FOREST_AREA' | 'FRENCH_RESTAURANT' | 'FRONTIER_CROSSING' | 'FUEL_FACILITIES' | 'FUNERAL_SERVICE_MORTUARIES' | 'FURNITURE_HOME_FURNISHINGS' | 'FUSION_RESTAURANT' | 'GARDEN_CENTERS_SERVICES' | 'GAS_STATION' | 'GENERAL_PRACTITIONER' | 'GEOGRAPHIC_FEATURE' | 'GERMAN_RESTAURANT' | 'GIFTS_CARDS_NOVELTIES_SOUVENIRS' | 'GLASSWARE_CERAMIC_SHOP' | 'GLASS_WINDOWS_STORE' | 'GOLD_EXCHANGE' | 'GOLF_COURSE' | 'GOVERNMENT_OFFICE' | 'GREEK_RESTAURANT' | 'GREENGROCER' | 'GRILL_RESTAURANT' | 'GROCERY_STORE' | 'GUANGDONG_RESTAURANT' | 'GURUDWARA' | 'HAIRDRESSER' | 'HAMBURGER_RESTAURANT' | 'HARBOR' | 'HARDWARE_STORE' | 'HAWAIIAN_RESTAURANT' | 'HEALTH_CARE_SERVICE' | 'HELIPAD_HELICOPTER_LANDING' | 'HIGH_SCHOOL' | 'HIKING_TRAIL' | 'HILL' | 'HISTORICAL_PARK' | 'HISTORIC_SITE' | 'HOBBY_SHOP' | 'HOCKEY_CLUB' | 'HOLIDAY_RENTAL' | 'HOME_APPLIANCE_REPAIR' | 'HORSE_RACING_TRACK' | 'HORSE_RIDING_CENTER' | 'HORSE_RIDING_TRAIL' | 'HORTICULTURE' | 'HOSPITAL' | 'HOSPITAL_FOR_WOMEN_AND_CHILDREN' | 'HOSPITAL_OF_CHINESE_MEDICINE' | 'HOSPITAL_POLYCLINIC' | 'HOSTEL' | 'HOTEL' | 'HOTEL_MOTEL' | 'HOT_POT_RESTAURANT' | 'HOUSE_GARDEN_FURNITURE_FITTINGS' | 'HUNAN_RESTAURANT' | 'HUNGARIAN_RESTAURANT' | 'ICE_CREAM_PARLOR' | 'ICE_HOCKEY_ARENA' | 'ICE_SKATING_RINK' | 'IMPORT_EXPORT_AND_DISTRIBUTION' | 'IMPORTANT_TOURIST_ATTRACTION' | 'INDIAN_RESTAURANT' | 'INDONESIAN_RESTAURANT' | 'INDUSTRIAL_BUILDING' | 'INFORMAL_MARKET' | 'INSURANCE_COMPANY' | 'INTERNATIONAL_RAILROAD_STATION' | 'INTERNATIONAL_RESTAURANT' | 'INTERNET_CAFE' | 'INVESTMENT_ADVISOR' | 'IRANIAN_RESTAURANT' | 'IRISH_RESTAURANT' | 'ISLAND' | 'ISRAELI_RESTAURANT' | 'ITALIAN_RESTAURANT' | 'JAMAICAN_RESTAURANT' | 'JAPANESE_RESTAURANT' | 'JAZZ_CLUB' | 'JEWELRY_CLOCKS_WATCHES' | 'JEWISH_RESTAURANT' | 'JUNIOR_COLLEGE_COMMUNITY_COLLEGE' | 'KARAOKE_CLUB' | 'KITCHENS_BATHROOMS' | 'KOREAN_RESTAURANT' | 'KOSHER_RESTAURANT' | 'LAGOON' | 'LAKESHORE' | 'LANGUAGE_SCHOOL' | 'LATIN_AMERICAN_RESTAURANT' | 'LAUNDRY' | 'LEBANESE_RESTAURANT' | 'LEGAL_SERVICES' | 'LEISURE_CENTER' | 'LIBRARY' | 'LIGHTING_SHOPS' | 'LOCALE' | 'LOCAL_POST_OFFICE' | 'LOCAL_SPECIALITIES_SHOP' | 'LOTTERY_SHOP' | 'LUXEMBOURGIAN_RESTAURANT' | 'MACROBIOTIC_RESTAURANT' | 'MAGHRIB_RESTAURANT' | 'MALTESE_RESTAURANT' | 'MANUFACTURING_COMPANY' | 'MANUFACTURING_FACILITY' | 'MARIJUANA_DISPENSARY' | 'MARINA' | 'MARINE_ELECTRONIC_EQUIPMENT' | 'MARKET' | 'MARSH' | 'MAURITIAN_RESTAURANT' | 'MAUSOLEUM_GRAVE' | 'MECHANICAL_ENGINEERING' | 'MEDIA_FACILITY' | 'MEDICAL_SUPPLIES_EQUIPMENT' | 'MEDICINAL_MARIJUANA_DISPENSARY' | 'MEDITERRANEAN_RESTAURANT' | 'MEMORIAL' | 'MENS_CLOTHING' | 'MEXICAN_RESTAURANT' | 'MICROBREWERY' | 'MIDDLE_EASTERN_RESTAURANT' | 'MIDDLE_SCHOOL' | 'MILITARY_AIRPORT' | 'MILITARY_INSTALLATION' | 'MINERAL_HOT_SPRINGS' | 'MINING_COMPANY' | 'MOBILE_PHONE_SHOP' | 'MONGOLIAN_RESTAURANT' | 'MONUMENT' | 'MOROCCAN_RESTAURANT' | 'MOSQUE' | 'MOTEL' | 'MOTORCYCLE_DEALER' | 'MOTORCYCLE_REPAIR' | 'MOTORING_ORGANIZATION_OFFICE' | 'MOTOR_RACING_STADIUM' | 'MOUNTAIN_BIKE_TRAIL' | 'MOUNTAIN_PASS' | 'MOUNTAIN_PEAK' | 'MOVIE_THEATER' | 'MOVING_STORAGE_COMPANY' | 'MULTI_PURPOSE_STADIUM' | 'MUSEUM' | 'MUSIC_CENTER' | 'MUSIC_INSTRUMENTS_STORE' | 'MUSSELS_RESTAURANT' | 'NAIL_SALON' | 'NATIONAL_RAILROAD_STATION' | 'NATIVE_RESERVATION' | 'NATURAL_RECREATION_ATTRACTION' | 'NATURAL_TOURIST_ATTRACTION' | 'NEPALESE_RESTAURANT' | 'NETBALL_STADIUM' | 'NEWSAGENTS_TOBACCONISTS' | 'NIGHTLIFE' | 'NON_GOVERNMENTAL_ORGANIZATION' | 'NORWEGIAN_RESTAURANT' | 'OASIS' | 'OBSERVATORY' | 'OEM' | 'OFFICE_EQUIPMENT' | 'OIL_NATURAL_GAS' | 'OPEN_CAR_PARKING_AREA' | 'OPEN_PARKING_AREA' | 'OPERA_HOUSE' | 'OPTICIAN' | 'ORGANIC_FOOD_RESTAURANT' | 'ORIENTAL_RESTAURANT' | 'OTHER_FOOD_SHOPS' | 'OTHER_REPAIR_SHOPS' | 'OTHER_WINTER_SPORT' | 'PAGODA' | 'PAINTING_DECORATING' | 'PAKISTANI_RESTAURANT' | 'PAN' | 'PARK' | 'PARKING_GARAGE' | 'PARKWAY' | 'PARK_RECREATION_AREA' | 'PASSENGER_TRANSPORT_TICKET_OFFICE' | 'PAWN_SHOP' | 'PEDESTRIAN_SUBWAY' | 'PERSONAL_CARE_FACILITY' | 'PERSONAL_SERVICE' | 'PERUVIAN_RESTAURANT' | 'PET_SUPPLIES' | 'PETROL_STATION' | 'PHARMACEUTICAL_COMPANY' | 'PHARMACY' | 'PHILIPPINE_RESTAURANT' | 'PHOTOCOPY_SHOP' | 'PHOTO_LAB_DEVELOPMENT' | 'PICNIC_AREA' | 'PIZZERIA' | 'PLACE_OF_WORSHIP' | 'PLAIN_FLAT' | 'PLANETARIUM' | 'PLATEAU' | 'POLICE_STATION' | 'POLISH_RESTAURANT' | 'POLYNESIAN_RESTAURANT' | 'PORTUGUESE_RESTAURANT' | 'PORT_WAREHOUSE_FACILITY' | 'POST_OFFICE' | 'PRESERVE' | 'PRE_SCHOOL' | 'PRIMARY_PRODUCER' | 'PRIMARY_RESOURCE_UTILITY' | 'PRIMARY_SCHOOL' | 'PRISON_CORRECTIONAL_FACILITY' | 'PRIVATE_AIRPORT' | 'PRIVATE_CLUB' | 'PROVENCAL_RESTAURANT' | 'PUB' | 'PUBLIC_AIRPORT' | 'PUBLIC_AMENITY' | 'PUBLIC_CALL_BOX' | 'PUBLIC_HEALTH_TECHNOLOGY_COMPANY' | 'PUBLIC_MARKET' | 'PUBLIC_TOILET' | 'PUBLIC_TRANSPORT_STOP' | 'PUBLISHING_TECHNOLOGIES' | 'PUB_FOOD' | 'QUARRY' | 'RACE_TRACK' | 'RAILROAD_SIDING' | 'RAILWAY_STATION' | 'RAPIDS' | 'REAL_ESTATE_AGENT' | 'REAL_ESTATE_COMPANY' | 'RECREATIONAL_CAMPING_GROUND' | 'RECREATIONAL_MARIJUANA_DISPENSARY' | 'RECREATIONAL_VEHICLE_DEALER' | 'RECREATION_AREA' | 'RECYCLING_SHOP' | 'REEF' | 'RENT_A_CAR_FACILITY' | 'RENT_A_CAR_PARKING' | 'REPAIR_FACILITY' | 'REPAIR_SHOP' | 'RESEARCH_FACILITY' | 'RESERVOIR' | 'RESIDENTIAL_ACCOMMODATION' | 'RESIDENTIAL_ESTATE' | 'RESORT' | 'RESTAURANT' | 'RESTAURANT_AREA' | 'REST_AREA' | 'REST_CAMP' | 'RETAIL_OUTLET' | 'RETIREMENT_COMMUNITY' | 'RIDGE' | 'RIVER_CROSSING' | 'RIVER_SCENIC_AREA' | 'ROADSIDE_RESTAURANT' | 'ROAD_RESCUE' | 'ROAD_TRAFFIC_CONTROL_CENTER' | 'ROCKS' | 'ROCK_CLIMBING_TRAIL' | 'ROMANIAN_RESTAURANT' | 'RUGBY_GROUND' | 'RUSSIAN_RESTAURANT' | 'SALAD_BAR' | 'SANDWICH_RESTAURANT' | 'SAUNA_SOLARIUM_MASSAGE' | 'SAVINGS_INSTITUTION' | 'SAVOY_RESTAURANT' | 'SCANDINAVIAN_RESTAURANT' | 'SCENIC_PANORAMIC_VIEW' | 'SCHOOL' | 'SCOTTISH_RESTAURANT' | 'SEAFOOD' | 'SEASHORE' | 'SECURED_ENTRANCE' | 'SECURITY_PRODUCTS' | 'SENIOR_HIGH_SCHOOL' | 'SERVICE_COMPANY' | 'SHANDONG_RESTAURANT' | 'SHANGHAI_RESTAURANT' | 'SHOP' | 'SHOPPING_CENTER' | 'SHOPPING_SERVICE' | 'SICHUAN_RESTAURANT' | 'SICILIAN_RESTAURANT' | 'SKI_RESORT' | 'SLAVIC_RESTAURANT' | 'SLOVAK_RESTAURANT' | 'SNACKS_RESTAURANT' | 'SNOOKER_POOL_BILLIARD' | 'SOCCER_STADIUM' | 'SOFTWARE_COMPANY' | 'SOUL_FOOD' | 'SOUP_RESTAURANT' | 'SPANISH_RESTAURANT' | 'SPECIALIST' | 'SPECIALTY_CLOTHING_SHOP' | 'SPECIALTY_FOODS' | 'SPECIAL_HOSPITAL' | 'SPECIAL_SCHOOL' | 'SPORTS_CENTER' | 'SPORTS_EQUIPMENT_CLOTHING' | 'SPORT_SCHOOL' | 'STADIUM' | 'STAMP_SHOP' | 'STATION_ACCESS' | 'STATUE' | 'STEAK_HOUSE' | 'STOCK_EXCHANGE' | 'STREETCAR_STOP' | 'SUBWAY_STATION' | 'SUDANESE_RESTAURANT' | 'SUPERMARKETS_HYPERMARKETS' | 'SURINAMESE_RESTAURANT' | 'SUSHI_RESTAURANT' | 'SWEDISH_RESTAURANT' | 'SWIMMING_POOL' | 'SWISS_RESTAURANT' | 'SYNAGOG' | 'SYRIAN_RESTAURANT' | 'TAILOR_SHOP' | 'TAIWANESE_RESTAURANT' | 'TAKEOUT_FOOD' | 'TAPAS_RESTAURANT' | 'TAXI_LIMOUSINE_SHUTTLE_SERVICE' | 'TAXI_STAND' | 'TAX_SERVICES' | 'TEA_HOUSE' | 'TECHNICAL_SCHOOL' | 'TELECOMMUNICATIONS' | 'TEMPLE' | 'TENNIS_COURT' | 'TEPPANYAKI_RESTAURANT' | 'THAI_RESTAURANT' | 'THEATER' | 'THEMATIC_SPORT_CENTER' | 'TIBETAN_RESTAURANT' | 'TIRE_SERVICE' | 'TOLL_GATE' | 'TOURIST_ATTRACTION' | 'TOURIST_INFORMATION_OFFICE' | 'TOWER' | 'TOWNHOUSE_COMPLEX' | 'TOYS_GAMES_SHOP' | 'TRAFFIC_CONTROL_DEPARTMENT' | 'TRAFFIC_SERVICE_CENTER' | 'TRAIL_SYSTEM' | 'TRAILS' | 'TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION' | 'TRANSPORT_COMPANY' | 'TRAVEL_AGENT' | 'TRUCK_DEALER' | 'TRUCK_REPAIR_AND_SERVICE' | 'TRUCK_STOP' | 'TRUCK_WASH' | 'TUNISIAN_RESTAURANT' | 'TUNNEL' | 'TURKISH_RESTAURANT' | 'URBAN_STATION' | 'URUGUAYAN_RESTAURANT' | 'VACATION_RENTAL' | 'VALLEY' | 'VAN_DEALER' | 'VARIETY_STORE' | 'VEGETARIAN_RESTAURANT' | 'VENEZUELAN_RESTAURANT' | 'VETERINARIAN' | 'VIDEO_RENTAL_SHOP' | 'VIETNAMESE_RESTAURANT' | 'VILLA_RENTAL' | 'VOCATIONAL_SCHOOL' | 'WATER_HOLE' | 'WATER_SPORT' | 'WEDDING_SERVICES' | 'WEIGH_SCALES' | 'WEIGH_STATION' | 'WELFARE_ORGANIZATION' | 'WELL' | 'WELSH_RESTAURANT' | 'WESTERN_RESTAURANT' | 'WHOLESALE_CLUB' | 'WILDERNESS_AREA' | 'WILDLIFE_PARK' | 'WINERY' | 'WINE_BAR' | 'WINE_SPIRITS' | 'WOMENS_CLOTHING' | 'YACHT_BASIN' | 'YOGURT_JUICE_BAR' | 'ZOO' | 'ZOOS_ARBORETA_BOTANICAL_GARDEN';
3433
+
3434
+ /**
3435
+ * Data source reference for detailed POI information.
3436
+ *
3437
+ * @example
3438
+ * ```typescript
3439
+ * const dataSource: PoiDetailsDataSource = {
3440
+ * id: 'poi-xyz789',
3441
+ * sourceName: 'TomTom'
3442
+ * };
3443
+ * ```
3444
+ *
3445
+ * @group Place
3446
+ */
3447
+ export declare type PoiDetailsDataSource = {
3448
+ /**
3449
+ * POI details ID for the Points of Interest Details service.
3450
+ *
3451
+ * Pass this value to fetch additional information such as:
3452
+ * - Extended opening hours
3453
+ * - Photos and ratings
3454
+ * - Detailed amenities
3455
+ * - Contact information
3456
+ */
3457
+ id: string;
3458
+ /**
3459
+ * Name of the data provider for this POI.
3460
+ *
3461
+ * Identifies the source of the POI information (e.g., 'TomTom', 'OSM').
3462
+ * Optional identifier for attribution or quality assessment.
3463
+ */
3464
+ sourceName?: string;
3465
+ };
3466
+
3467
+ /**
3468
+ * GeoJSON Feature containing polygon or multi-polygon geometry.
3469
+ *
3470
+ * Represents an area on the map, such as:
3471
+ * - Administrative boundaries (countries, states, cities)
3472
+ * - Points of interest with building footprints
3473
+ * - Search areas or geofences
3474
+ * - Route reachable ranges
3475
+ *
3476
+ * @typeParam P - Type of the feature's properties object
3477
+ *
3478
+ * @example
3479
+ * ```typescript
3480
+ * const cityBoundary: PolygonFeature<{ name: string, population: number }> = {
3481
+ * type: 'Feature',
3482
+ * geometry: {
3483
+ * type: 'Polygon',
3484
+ * coordinates: [[
3485
+ * [4.8, 52.3],
3486
+ * [5.0, 52.3],
3487
+ * [5.0, 52.4],
3488
+ * [4.8, 52.4],
3489
+ * [4.8, 52.3]
3490
+ * ]]
3491
+ * },
3492
+ * properties: {
3493
+ * name: 'Amsterdam',
3494
+ * population: 872680
3495
+ * }
3496
+ * };
3497
+ * ```
3498
+ *
3499
+ * @group Shared
3500
+ */
3501
+ export declare type PolygonFeature<P = GeoJsonProperties> = Feature<Polygon | MultiPolygon, P>;
3502
+
3503
+ /**
3504
+ * GeoJSON FeatureCollection containing polygon or multi-polygon features.
3505
+ *
3506
+ * Represents multiple polygonal areas, useful for:
3507
+ * - Collections of administrative boundaries
3508
+ * - Multiple search result areas
3509
+ * - Multiple building footprints
3510
+ *
3511
+ * @typeParam P - Type of each feature's properties object
3512
+ *
3513
+ * @example
3514
+ * ```typescript
3515
+ * const neighborhoods: PolygonFeatures<{ name: string, area: number }> = {
3516
+ * type: 'FeatureCollection',
3517
+ * features: [
3518
+ * {
3519
+ * type: 'Feature',
3520
+ * geometry: { type: 'Polygon', coordinates: [...] },
3521
+ * properties: { name: 'District 1', area: 500000 }
3522
+ * },
3523
+ * {
3524
+ * type: 'Feature',
3525
+ * geometry: { type: 'Polygon', coordinates: [...] },
3526
+ * properties: { name: 'District 2', area: 750000 }
3527
+ * }
3528
+ * ]
3529
+ * };
3530
+ * ```
3531
+ *
3532
+ * @group Shared
3533
+ */
3534
+ export declare type PolygonFeatures<P = GeoJsonProperties> = FeatureCollection<Polygon | MultiPolygon, P>;
3535
+
3536
+ /**
3537
+ * Possible directions a lane can lead to.
3538
+ *
3539
+ * Used in lane guidance to indicate which directions are possible from a lane.
3540
+ *
3541
+ * @group Route
3542
+ */
3543
+ export declare type PossibleLaneDirection = 'STRAIGHT' | 'SLIGHT_RIGHT' | 'RIGHT' | 'SHARP_RIGHT' | 'RIGHT_U_TURN' | 'SLIGHT_LEFT' | 'LEFT' | 'SHARP_LEFT' | 'LEFT_U_TURN';
3544
+
3545
+ /**
3546
+ * All the possible lane separators.
3547
+ * @group Route
3548
+ */
3549
+ export declare type PossibleLaneSeparator = 'UNKNOWN' | 'NO_MARKING' | 'LONG_DASHED' | 'DOUBLE_SOLID' | 'SINGLE_SOLID' | 'SOLID_DASHED' | 'DASHED_SOLID' | 'SHORT_DASHED' | 'SHADED_AREA_MARKING' | 'DASHED_BLOCKS' | 'DOUBLE_DASHED' | 'CROSSING_ALERT' | 'PHYSICAL_DIVIDER' | 'PHYSICAL_DIVIDER_LESS_THAN_3M' | 'PHYSICAL_DIVIDER_GUARDRAIL' | 'CURB';
3550
+
3551
+ /**
3552
+ * Reference to a related Point of Interest.
3553
+ *
3554
+ * Represents a parent-child relationship between POIs, such as:
3555
+ * - A restaurant inside a shopping mall
3556
+ * - A store within an airport terminal
3557
+ * - A department within a larger facility
3558
+ *
3559
+ * @example
3560
+ * ```typescript
3561
+ * const relatedPOI: RelatedPOI = {
3562
+ * relationType: 'parent', // This POI is inside a larger complex
3563
+ * id: 'abc123def456' // ID to fetch parent POI details
3564
+ * };
3565
+ * ```
3566
+ *
3567
+ * @group Place
3568
+ */
3569
+ export declare type RelatedPOI = {
3570
+ /**
3571
+ * Type of relationship between this POI and the referenced POI.
3572
+ *
3573
+ * - `child`: The referenced POI is contained within this POI (e.g., a store in this mall)
3574
+ * - `parent`: This POI is contained within the referenced POI (e.g., this store is inside a mall)
3575
+ */
3576
+ relationType: 'child' | 'parent';
3577
+ /**
3578
+ * Unique identifier for the related POI.
3579
+ *
3580
+ * Pass this ID to the Place by ID service to fetch detailed information
3581
+ * about the related location.
3582
+ */
3583
+ id: string;
3584
+ };
3585
+
3586
+ /**
3587
+ * Properties for reverse geocoded places.
3588
+ *
3589
+ * Extends common place properties with reverse geocoding-specific information
3590
+ * like the original query position and address interpolation details.
3591
+ *
3592
+ * @group Place
3593
+ */
3594
+ export declare type RevGeoAddressProps = CommonPlaceProps & {
3595
+ /**
3596
+ * Original coordinates used in the reverse geocoding query [longitude, latitude].
3597
+ */
3598
+ originalPosition: Position;
3599
+ /**
3600
+ * Offset position coordinates for address interpolation.
3601
+ *
3602
+ * Present when a street number was specified in the query.
3603
+ * Represents the interpolated position of the specific address number.
3604
+ */
3605
+ offsetPosition?: Position;
3606
+ /**
3607
+ * Which side of the street the address is located on.
3608
+ *
3609
+ * Present only when a street number was specified in the query.
3610
+ */
3611
+ sideOfStreet?: SideOfStreet;
3612
+ };
3613
+
3614
+ /**
3615
+ * Road information, including properties, street name and road shields.
3616
+ * @group Route
3617
+ */
3618
+ export declare type RoadInformation = {
3619
+ /**
3620
+ * The properties of road, as a possible combination of several values.
3621
+ */
3622
+ properties: RoadInformationProperty[];
3623
+ /**
3624
+ * The street name for the road.
3625
+ * Included if street name is available for this road.
3626
+ */
3627
+ streetName?: TextWithPhonetics;
3628
+ /**
3629
+ * Lists the road shields for this road.
3630
+ * The list can be empty if no road shields are available.
3631
+ */
3632
+ roadShields: RoadShield[];
3633
+ };
3634
+
3635
+ /**
3636
+ * The properties of road.
3637
+ * URBAN -> represents an urban road type.
3638
+ * MOTORWAY -> represents a motorway road type.
3639
+ * CONTROLLED_ACCESS -> represents a controlled access road type with regulated traffic flow and regulated entries and exits.
3640
+ * @group Route
3641
+ */
3642
+ export declare type RoadInformationProperty = 'URBAN' | 'MOTORWAY' | 'CONTROLLED_ACCESS';
3643
+
3644
+ /**
3645
+ * Road shield object containing extra information.
3646
+ * @group Route
3647
+ */
3648
+ export declare type RoadShield = {
3649
+ /**
3650
+ * The road number. Most road numbers have a 'letter' prefix, which is also returned.
3651
+ */
3652
+ roadNumber: TextWithPhonetics;
3653
+ /**
3654
+ * Information allowing the client to build an image of the road shield using the TomTom RoadShield API.
3655
+ * Included if instructionRoadShieldReferences was requested.
3656
+ */
3657
+ roadShieldReference: RoadShieldReference;
3658
+ /**
3659
+ * The state code of the state the shield is in (second part of an ISO 3166-2 identifier).
3660
+ * Included if state codes are available for the country the road shield is located in.
3661
+ */
3662
+ stateCode?: string;
3663
+ /**
3664
+ * The country code (ISO 3166-1 alpha-3) of the country the shield is in.
3665
+ */
3666
+ countryCode: string;
3667
+ };
3668
+
3669
+ /**
3670
+ * Object describes a single road shield reference.
3671
+ * @group Route
3672
+ */
3673
+ export declare type RoadShieldReference = {
3674
+ /**
3675
+ * A unique identifier for the road shield.
3676
+ */
3677
+ reference: string;
3678
+ /**
3679
+ * An optional string to be shown on the road shield.
3680
+ */
3681
+ shieldContent?: string;
3682
+ /**
3683
+ * An optional list of possible affixes that can be shown in addition to the shieldContent.
3684
+ */
3685
+ affixes: string[];
3686
+ };
3687
+
3688
+ /**
3689
+ * Section representing a road shield.
3690
+ * @group Route
3691
+ */
3692
+ export declare type RoadShieldSectionProps = SectionProps & {
3693
+ /**
3694
+ * The road shield code for this section.
3695
+ */
3696
+ roadShieldReferences: RoadShieldReference[];
3697
+ };
3698
+
3699
+ /**
3700
+ * GeoJSON Feature representing a calculated route.
3701
+ *
3702
+ * The geometry is a LineString containing the route path coordinates.
3703
+ * The properties contain all route information (summary, sections, guidance).
3704
+ *
3705
+ * @typeParam P - Type of the route properties (defaults to RouteProps)
3706
+ *
3707
+ * @example
3708
+ * ```typescript
3709
+ * const route: Route = {
3710
+ * type: 'Feature',
3711
+ * geometry: {
3712
+ * type: 'LineString',
3713
+ * coordinates: [[4.9, 52.3], [4.91, 52.31], ...]
3714
+ * },
3715
+ * properties: {
3716
+ * id: 'route-123',
3717
+ * summary: { lengthInMeters: 5000, travelTimeInSeconds: 300, ... },
3718
+ * sections: { ... },
3719
+ * index: 0
3720
+ * }
3721
+ * };
3722
+ * ```
3723
+ *
3724
+ * @group Route
3725
+ */
3726
+ export declare type Route<P extends RouteProps = RouteProps> = Feature<LineString, P>;
3727
+
3728
+ /**
3729
+ * Route path point and its metadata.
3730
+ * @group Route
3731
+ */
3732
+ export declare type RoutePathPoint = {
3733
+ point: Position;
3734
+ /**
3735
+ * Distance (in meters) from the start of the route to this point.
3736
+ */
3737
+ distanceInMeters: number;
3738
+ /**
3739
+ * The time (in seconds) from the start of the route to this point.
3740
+ */
3741
+ travelTimeInSeconds: number;
3742
+ };
3743
+
3744
+ /**
3745
+ * Generic geographic input for route planning.
3746
+ *
3747
+ * Can be either a waypoint (point location) or a path (line to follow).
3748
+ * This flexible type allows mixing different input types in route calculations.
3749
+ *
3750
+ * @remarks
3751
+ * - Use waypoints for origin, destination, and intermediate stops
3752
+ * - Use paths for route reconstruction or to force the route along specific roads
3753
+ *
3754
+ * @example
3755
+ * ```typescript
3756
+ * const locations: RoutePlanningLocation[] = [
3757
+ * [4.9, 52.3], // Start waypoint
3758
+ * { radiusMeters: 1000, ... }, // Circle waypoint
3759
+ * existingPathCoordinates, // Path to follow
3760
+ * [5.0, 52.4] // End waypoint
3761
+ * ];
3762
+ * ```
3763
+ *
3764
+ * @group Route
3765
+ */
3766
+ export declare type RoutePlanningLocation = WaypointLike | PathLike;
3767
+
3768
+ /**
3769
+ * Classification of a RoutePlanningLocation by its type.
3770
+ *
3771
+ * Used internally to distinguish between waypoint and path inputs.
3772
+ *
3773
+ * @remarks
3774
+ * - `waypoint`: Represents a single point location (WaypointLike)
3775
+ * - `path`: Represents a path or route to follow (PathLike)
3776
+ *
3777
+ * @group Route
3778
+ */
3779
+ export declare type RoutePlanningLocationType = 'waypoint' | 'path';
3780
+
3781
+ /**
3782
+ * Array of progress points along the route path.
3783
+ *
3784
+ * Provides distance and time information at key points along the route.
3785
+ * This field is included when `extendedRouteRepresentations` is requested.
3786
+ *
3787
+ * @remarks
3788
+ * - Always contains entries for the first and last points in the route
3789
+ * - Progress for intermediate points can be linearly interpolated between explicitly defined points
3790
+ * - Use the Haversine formula for distance calculations between points
3791
+ *
3792
+ * @example
3793
+ * ```typescript
3794
+ * const progress: RouteProgress = [
3795
+ * { pointIndex: 0, travelTimeInSeconds: 0, distanceInMeters: 0 },
3796
+ * { pointIndex: 50, travelTimeInSeconds: 120, distanceInMeters: 2500 },
3797
+ * { pointIndex: 100, travelTimeInSeconds: 300, distanceInMeters: 5000 }
3798
+ * ];
3799
+ * ```
3800
+ *
3801
+ * @group Route
3802
+ */
3803
+ export declare type RouteProgress = RouteProgressPoint[];
3804
+
3805
+ /**
3806
+ * Progress information for a specific point along the route.
3807
+ *
3808
+ * Contains cumulative distance and time measurements from the route start to this point.
3809
+ *
3810
+ * @group Route
3811
+ */
3812
+ export declare type RouteProgressPoint = {
3813
+ /**
3814
+ * Zero-based index of this point in the route's coordinate array.
3815
+ */
3816
+ pointIndex: number;
3817
+ /**
3818
+ * Cumulative travel time in seconds from the route start to this point.
3819
+ */
3820
+ travelTimeInSeconds?: number;
3821
+ /**
3822
+ * Cumulative distance in meters from the route start to this point.
3823
+ */
3824
+ distanceInMeters?: number;
3825
+ };
3826
+
3827
+ /**
3828
+ * Properties object for a calculated route.
3829
+ *
3830
+ * Contains all route information including summary statistics, sections,
3831
+ * guidance instructions, and progress data.
3832
+ *
3833
+ * @group Route
3834
+ */
3835
+ export declare type RouteProps = {
3836
+ /**
3837
+ * Unique identifier for this route.
3838
+ *
3839
+ * Randomly generated to distinguish between multiple route alternatives.
3840
+ */
3841
+ id: string;
3842
+ /**
3843
+ * Summary statistics for the entire route.
3844
+ *
3845
+ * Contains departure/arrival times, total length, duration, and consumption estimates.
3846
+ */
3847
+ summary: RouteSummary;
3848
+ /**
3849
+ * Route sections with specific characteristics.
3850
+ *
3851
+ * Sections represent portions of the route with distinct properties such as:
3852
+ * - Countries traversed
3853
+ * - Traffic incidents
3854
+ * - Route legs (segments between waypoints)
3855
+ * - Special road types (tunnels, ferries, toll roads)
3856
+ */
3857
+ sections: SectionsProps;
3858
+ /**
3859
+ * Turn-by-turn navigation instructions.
3860
+ *
3861
+ * Only present when guidance was requested and is available.
3862
+ * Includes maneuvers, road names, and instruction text.
3863
+ */
3864
+ guidance?: Guidance;
3865
+ /**
3866
+ * Distance and time progress at key points along the route.
3867
+ *
3868
+ * Only present when extended route representations are requested.
3869
+ * Useful for displaying progress information or calculating intermediate times.
3870
+ */
3871
+ progress?: RouteProgress;
3872
+ /**
3873
+ * Index of this route in the collection of alternatives.
3874
+ *
3875
+ * The first route (index 0) is typically the recommended/best route.
3876
+ * Subsequent indices represent alternative routes.
3877
+ */
3878
+ index: number;
3879
+ };
3880
+
3881
+ /**
3882
+ * GeoJSON FeatureCollection containing one or more calculated routes.
3883
+ *
3884
+ * Typically contains the main route (index 0) and optional alternative routes.
3885
+ * Collection properties can include metadata about the routing request.
3886
+ *
3887
+ * @typeParam P - Type of individual route properties (defaults to RouteProps)
3888
+ * @typeParam FeatureCollectionProps - Type of collection-level properties
3889
+ *
3890
+ * @example
3891
+ * ```typescript
3892
+ * const routes: Routes = {
3893
+ * type: 'FeatureCollection',
3894
+ * features: [
3895
+ * { type: 'Feature', geometry: {...}, properties: { index: 0, ... } }, // Main route
3896
+ * { type: 'Feature', geometry: {...}, properties: { index: 1, ... } } // Alternative
3897
+ * ],
3898
+ * properties: {
3899
+ * requestId: 'req-456',
3900
+ * calculatedAt: new Date()
3901
+ * }
3902
+ * };
3903
+ * ```
3904
+ *
3905
+ * @group Route
3906
+ */
3907
+ export declare type Routes<P extends RouteProps = RouteProps, FeatureCollectionProps = unknown> = FeatureCollectionWithProperties<LineString, P, FeatureCollectionProps>;
3908
+
3909
+ /**
3910
+ * Complete summary information for an entire route.
3911
+ *
3912
+ * Includes all journey statistics from origin to destination, including
3913
+ * any intermediate charging stops for electric vehicles.
3914
+ *
3915
+ * @group Route
3916
+ */
3917
+ export declare type RouteSummary = SummaryWithConsumption & {
3918
+ /**
3919
+ * Total time in seconds spent at all charging stops during the route.
3920
+ *
3921
+ * @remarks
3922
+ * - Only present for electric vehicle routes with charging stops (LDEVR)
3923
+ * - The route's travelTimeInSeconds includes this charging time
3924
+ * - To get driving time only: travelTimeInSeconds - totalChargingTimeInSeconds
3925
+ *
3926
+ * @example
3927
+ * ```typescript
3928
+ * // Route with 2 charging stops of 20 and 25 minutes
3929
+ * totalChargingTimeInSeconds: 2700 // 45 minutes total
3930
+ * ```
3931
+ */
3932
+ totalChargingTimeInSeconds?: number;
3933
+ };
3934
+
3935
+ /**
3936
+ * Properties for search result places.
3937
+ *
3938
+ * Extends common place properties with search-specific information
3939
+ * like relevance scores and distances.
3940
+ *
3941
+ * @group Place
3942
+ */
3943
+ export declare type SearchPlaceProps = CommonPlaceProps & {
3944
+ /**
3945
+ * Information about the original data source.
3946
+ *
3947
+ * Attribution or source identification for the result.
3948
+ */
3949
+ info?: string;
3950
+ /**
3951
+ * Relevance score for this search result.
3952
+ *
3953
+ * Higher scores indicate better match to the query criteria.
3954
+ * Used for ranking search results.
3955
+ */
3956
+ score?: number;
3957
+ /**
3958
+ * Distance in meters to this result from the bias position.
3959
+ *
3960
+ * Present only when geoBias (position bias) was provided in the search.
3961
+ */
3962
+ distance?: number;
3963
+ };
3964
+
3965
+ /**
3966
+ * Base properties for all route sections.
3967
+ *
3968
+ * Sections divide a route into portions with specific characteristics or attributes.
3969
+ * All section types extend this base with additional specialized properties.
3970
+ *
3971
+ * @group Route
3972
+ */
3973
+ export declare type SectionProps = {
3974
+ /**
3975
+ * Unique identifier for this section.
3976
+ *
3977
+ * Randomly generated to distinguish between sections.
3978
+ */
3979
+ id: string;
3980
+ /**
3981
+ * Index of the route coordinate where this section begins.
3982
+ *
3983
+ * Zero-based index into the route's LineString coordinates array.
3984
+ */
3985
+ startPointIndex: number;
3986
+ /**
3987
+ * Index of the route coordinate where this section ends (inclusive).
3988
+ *
3989
+ * Zero-based index into the route's LineString coordinates array.
3990
+ */
3991
+ endPointIndex: number;
3992
+ /**
3993
+ * Elapsed time in seconds from route start to the beginning of this section.
3994
+ */
3995
+ startTravelTimeInSeconds?: number;
3996
+ /**
3997
+ * Elapsed time in seconds from route start to the end of this section.
3998
+ */
3999
+ endTravelTimeInSeconds?: number;
4000
+ /**
4001
+ * Duration in seconds to traverse this section.
4002
+ *
4003
+ * Calculated as: endTravelTimeInSeconds - startTravelTimeInSeconds
4004
+ */
4005
+ durationInSeconds?: number;
4006
+ /**
4007
+ * Cumulative distance in meters from route start to the beginning of this section.
4008
+ */
4009
+ startLengthInMeters?: number;
4010
+ /**
4011
+ * Cumulative distance in meters from route start to the end of this section.
4012
+ */
4013
+ endLengthInMeters?: number;
4014
+ /**
4015
+ * Length in meters of this section.
4016
+ *
4017
+ * Calculated as: endLengthInMeters - startLengthInMeters
4018
+ */
4019
+ lengthInMeters?: number;
4020
+ };
4021
+
4022
+ /**
4023
+ * Route sections are parts of the planned route that have specific characteristics,
4024
+ * such as ones on a ferry or motorway, or sections with traffic incidents in them.
4025
+ * Using sections, you can show users where these things lie on a planned route.
4026
+ * @group Route
4027
+ */
4028
+ export declare type SectionsProps = {
4029
+ leg: LegSectionProps[];
4030
+ carTrain?: SectionProps[];
4031
+ ferry?: SectionProps[];
4032
+ motorway?: SectionProps[];
4033
+ pedestrian?: SectionProps[];
4034
+ toll?: SectionProps[];
4035
+ tollVignette?: CountrySectionProps[];
4036
+ country?: CountrySectionProps[];
4037
+ traffic?: TrafficSectionProps[];
4038
+ vehicleRestricted?: SectionProps[];
4039
+ tunnel?: SectionProps[];
4040
+ unpaved?: SectionProps[];
4041
+ urban?: SectionProps[];
4042
+ carpool?: SectionProps[];
4043
+ lowEmissionZone?: SectionProps[];
4044
+ lanes?: LaneSectionProps[];
4045
+ roadShields?: RoadShieldSectionProps[];
4046
+ speedLimit?: SpeedLimitSectionProps[];
4047
+ importantRoadStretch?: ImportantRoadStretchProps[];
4048
+ };
4049
+
4050
+ /**
4051
+ * @group Route
4052
+ */
4053
+ export declare type SectionType = keyof SectionsProps;
4054
+
4055
+ /**
4056
+ * @group Route
4057
+ */
4058
+ export declare const sectionTypes: SectionType[];
4059
+
4060
+ /**
4061
+ * Side of the street indicator.
4062
+ *
4063
+ * @remarks
4064
+ * - `L`: Left side
4065
+ * - `R`: Right side
4066
+ *
4067
+ * @group Place
4068
+ */
4069
+ export declare type SideOfStreet = 'L' | 'R';
4070
+
4071
+ /**
4072
+ * Side road information.
4073
+ * @group Route
4074
+ */
4075
+ export declare type SideRoad = {
4076
+ /**
4077
+ * Side from where the road connects to the route.
4078
+ */
4079
+ side: SideRoadSide;
4080
+ /**
4081
+ * Offset (on route) of the side road from the maneuver point (represented by maneuverPoint), in meters.
4082
+ * The offset is absolute, i.e., it is a positive integer despite that the side road is located before the maneuver on the route.
4083
+ */
4084
+ offsetFromManeuverInMeters: number;
4085
+ };
4086
+
4087
+ /**
4088
+ * Side from where the road connects to the route.
4089
+ * @group Route
4090
+ */
4091
+ export declare type SideRoadSide = 'LEFT' | 'RIGHT' | 'LEFT_AND_RIGHT';
4092
+
4093
+ /**
4094
+ * Signpost information.
4095
+ * @group Route
4096
+ */
4097
+ export declare type Signpost = {
4098
+ /**
4099
+ * Exit name of the controlled access road.
4100
+ * Included if an exit name is available for this signpost.
4101
+ */
4102
+ exitName?: TextWithPhonetics;
4103
+ /**
4104
+ * Exit number of the controlled access road. Included if an exit number is available for this signpost.
4105
+ * Multiple exit numbers can be encoded in the string, e.g. "E10/E12". If exit number is not available, the field will be absent.
4106
+ */
4107
+ exitNumber?: TextWithPhonetics;
4108
+ /**
4109
+ * The toward name from the signpost.
4110
+ */
4111
+ towardName: TextWithPhonetics;
4112
+ };
4113
+
4114
+ /**
4115
+ * Section representing a speed limit.
4116
+ * @group Route
4117
+ */
4118
+ export declare type SpeedLimitSectionProps = SectionProps & {
4119
+ /**
4120
+ * The speed limit in km/h for this section.
4121
+ */
4122
+ maxSpeedLimitInKmh: number;
4123
+ };
4124
+
4125
+ /**
4126
+ * Common summary type for a route or route leg.
4127
+ * Contains departure/arrival times, lengths and durations.
4128
+ * @group Route
4129
+ */
4130
+ export declare type SummaryBase = {
4131
+ /**
4132
+ * Estimated arrival time at the end of the route or leg.
4133
+ *
4134
+ * Calculated from departure time plus travel time, accounting for traffic conditions.
4135
+ */
4136
+ arrivalTime: Date;
4137
+ /**
4138
+ * Departure time from the beginning of the route or leg.
4139
+ *
4140
+ * Based on the departure time specified in the routing request.
4141
+ */
4142
+ departureTime: Date;
4143
+ /**
4144
+ * Total length of the route or leg in meters.
4145
+ */
4146
+ lengthInMeters: number;
4147
+ /**
4148
+ * Estimated travel time in seconds for the route or leg.
4149
+ *
4150
+ * @remarks
4151
+ * This value includes delays due to real-time traffic, even when considerTraffic=false.
4152
+ * Use noTrafficTravelTimeInSeconds for free-flow travel time without traffic delays.
4153
+ */
4154
+ travelTimeInSeconds: number;
4155
+ /**
4156
+ * Additional delay in seconds caused by current traffic conditions.
4157
+ *
4158
+ * Represents the extra time compared to free-flow conditions.
4159
+ * A value of 0 means no traffic delays.
4160
+ */
4161
+ trafficDelayInSeconds: number;
4162
+ /**
4163
+ * Length in meters of the route affected by traffic events causing delays.
4164
+ *
4165
+ * Indicates the portion of the route experiencing congestion or incidents.
4166
+ */
4167
+ trafficLengthInMeters: number;
4168
+ /**
4169
+ * Estimated travel time in seconds assuming free-flow conditions.
4170
+ *
4171
+ * Calculated as if there were no traffic delays (no congestion).
4172
+ * Only included if requested using the computeTravelTimeFor parameter.
4173
+ */
4174
+ noTrafficTravelTimeInSeconds?: number;
4175
+ /**
4176
+ * Estimated travel time in seconds using time-dependent historic traffic data.
4177
+ *
4178
+ * Represents the expected travel time based on typical traffic patterns
4179
+ * for the requested departure time (e.g., rush hour vs off-peak).
4180
+ * Only included if requested using the computeTravelTimeFor parameter.
4181
+ */
4182
+ historicTrafficTravelTimeInSeconds?: number;
4183
+ /**
4184
+ * Estimated travel time in seconds using real-time traffic speed data.
4185
+ *
4186
+ * Based on current live traffic conditions and incidents.
4187
+ * Only included if requested using the computeTravelTimeFor parameter.
4188
+ */
4189
+ liveTrafficIncidentsTravelTimeInSeconds?: number;
4190
+ };
4191
+
4192
+ /**
4193
+ * Combined summary supporting both combustion and electric vehicle metrics.
4194
+ *
4195
+ * @group Route
4196
+ */
4197
+ export declare type SummaryWithConsumption = CombustionSummary & ElectricSummary;
4198
+
4199
+ /**
4200
+ * Text with phonetic transcription.
4201
+ * @group Route
4202
+ */
4203
+ export declare type TextWithPhonetics = {
4204
+ /**
4205
+ * The name as a text string.
4206
+ */
4207
+ text: string;
4208
+ /**
4209
+ * The phonetic transcription of the name.
4210
+ * Included if phonetic transcription is available for the specific name, and phonetic transcriptions have been requested by the client.
4211
+ * Note: The phonetic transcription can contain double quote characters ("). In this case those characters are escaped with a backslash (\).
4212
+ */
4213
+ phonetic: string;
4214
+ /**
4215
+ * Encodes the language using an IETF language tag, e.g., en-GB, en-US.
4216
+ */
4217
+ phoneticLanguageCode: string;
4218
+ };
4219
+
4220
+ /**
4221
+ * Configuration for displaying time-based units.
4222
+ *
4223
+ * Allows customization of time unit labels used for durations
4224
+ * throughout the SDK.
4225
+ *
4226
+ * @group Configuration
4227
+ */
4228
+ export declare type TimeDisplayUnits = {
4229
+ /**
4230
+ * Custom label for hour units.
4231
+ *
4232
+ * @default "h"
4233
+ */
4234
+ hours?: string;
4235
+ /**
4236
+ * Custom label for minute units.
4237
+ *
4238
+ * @default "min"
4239
+ */
4240
+ minutes?: string;
4241
+ };
4242
+
4243
+ /**
4244
+ * Time range with start and end moments.
4245
+ *
4246
+ * Represents a period when a POI is open. Can span multiple days
4247
+ * (e.g., opening late one day and closing early the next).
4248
+ *
4249
+ * @remarks
4250
+ * - For same-day hours: start and end are on the same date
4251
+ * - For overnight hours: end date is after start date (e.g., open until 2 AM)
4252
+ *
4253
+ * @example
4254
+ * ```typescript
4255
+ * // Monday 9:00 AM to 5:00 PM
4256
+ * const timeRange: TimeRange = {
4257
+ * start: { date: new Date('2025-10-20T09:00:00'), hour: 9, minute: 0, ... },
4258
+ * end: { date: new Date('2025-10-20T17:00:00'), hour: 17, minute: 0, ... }
4259
+ * };
4260
+ *
4261
+ * // Friday 10 PM to Saturday 2 AM (overnight)
4262
+ * const overnight: TimeRange = {
4263
+ * start: { date: new Date('2025-10-24T22:00:00'), hour: 22, ... },
4264
+ * end: { date: new Date('2025-10-25T02:00:00'), hour: 2, ... }
4265
+ * };
4266
+ * ```
4267
+ *
4268
+ * @group Place
4269
+ */
4270
+ export declare type TimeRange = {
4271
+ /**
4272
+ * Opening time for this period.
4273
+ */
4274
+ start: Moment;
4275
+ /**
4276
+ * Closing time for this period.
4277
+ */
4278
+ end: Moment;
4279
+ };
4280
+
4281
+ /**
4282
+ * Time zone information using IANA Time Zone Database identifiers.
4283
+ *
4284
+ * @remarks
4285
+ * IANA identifiers follow the format `Area/Location` (e.g., `America/New_York`, `Europe/London`).
4286
+ * These are standardized time zone identifiers maintained by the Internet Assigned Numbers Authority.
4287
+ *
4288
+ * @see [IANA Time Zone Database](https://www.iana.org/time-zones)
4289
+ *
4290
+ * @example
4291
+ * ```typescript
4292
+ * const timezone: TimeZone = {
4293
+ * ianaId: 'Europe/Amsterdam'
4294
+ * };
4295
+ * ```
4296
+ *
4297
+ * @group Shared
4298
+ */
4299
+ export declare type TimeZone = {
4300
+ /**
4301
+ * IANA Time Zone Database identifier.
4302
+ *
4303
+ * Examples: `America/New_York`, `Europe/London`, `Asia/Tokyo`
4304
+ */
4305
+ ianaId: string;
4306
+ };
4307
+
4308
+ /**
4309
+ * Available toll payment options.
4310
+ * @group Route
4311
+ */
4312
+ export declare type TollPaymentType = 'CASH_COINS_AND_BILLS' | 'CASH_BILLS_ONLY' | 'CASH_COINS_ONLY' | 'CASH_EXACT_CHANGE' | 'CREDIT_CARD' | 'DEBIT_CARD' | 'TRAVEL_CARD' | 'ETC' | 'ETC_TRANSPONDER' | 'ETC_VIDEO_CAMERA' | 'SUBSCRIPTION';
4313
+
4314
+ /**
4315
+ * SDK name used TomTom custom header TomTom-User-Agent
4316
+ * @ignore
4317
+ */
4318
+ export declare const TOMTOM_USER_AGENT_SDK_NAME = "TomTomSDKsMapsJS";
4319
+
4320
+ /**
4321
+ * Global configuration singleton for the TomTom Maps SDK.
4322
+ *
4323
+ * Manages SDK-wide configuration settings that apply to all services and maps.
4324
+ * Uses the singleton pattern to ensure consistent configuration across the application.
4325
+ *
4326
+ * @remarks
4327
+ * Configuration set via this class is merged with service-specific parameters,
4328
+ * with service parameters taking precedence over global settings.
4329
+ *
4330
+ * @example
4331
+ * ```typescript
4332
+ * // Set global configuration
4333
+ * TomTomConfig.instance.put({
4334
+ * apiKey: 'your-api-key',
4335
+ * language: 'en-US'
4336
+ * });
4337
+ *
4338
+ * // Get current configuration
4339
+ * const config = TomTomConfig.instance.get();
4340
+ *
4341
+ * // Reset to defaults
4342
+ * TomTomConfig.instance.reset();
4343
+ * ```
4344
+ *
4345
+ * @group Configuration
4346
+ */
4347
+ export declare class TomTomConfig {
4348
+ /**
4349
+ * Singleton instance of the configuration.
4350
+ */
4351
+ static readonly instance: TomTomConfig;
4352
+ private config;
4353
+ private constructor();
4354
+ /**
4355
+ * Merge configuration values into the global configuration.
4356
+ *
4357
+ * New values override existing ones. This performs a shallow merge,
4358
+ * so nested objects are replaced entirely rather than merged.
4359
+ *
4360
+ * @param config - Partial configuration to merge
4361
+ *
4362
+ * @example
4363
+ * ```typescript
4364
+ * TomTomConfig.instance.put({
4365
+ * apiKey: 'your-api-key',
4366
+ * language: 'de-DE'
4367
+ * });
4368
+ * ```
4369
+ */
4370
+ put(config: Partial<GlobalConfig>): void;
4371
+ /**
4372
+ * Reset configuration to default values.
4373
+ *
4374
+ * Clears all custom configuration and restores the initial defaults.
4375
+ * Note that the default API key is an empty string.
4376
+ *
4377
+ * @example
4378
+ * ```typescript
4379
+ * TomTomConfig.instance.reset();
4380
+ * ```
4381
+ */
4382
+ reset(): void;
4383
+ /**
4384
+ * Get the current global configuration.
4385
+ *
4386
+ * @returns Current configuration object
4387
+ *
4388
+ * @example
4389
+ * ```typescript
4390
+ * const config = TomTomConfig.instance.get();
4391
+ * console.log(config.apiKey);
4392
+ * ```
4393
+ */
4394
+ get(): GlobalConfig;
4395
+ }
4396
+
4397
+ /**
4398
+ * Interface for TomTom custom headers
4399
+ * Those headers are added in every request to TomTom services
4400
+ * * TomTom-User-Agent - Name and version of this SDK
4401
+ * * Authorization - Bearer token for experimental OAuth2 support.
4402
+ * Based on the apiAccessToken parameter.
4403
+ * Tracking-ID - @see https://docs.tomtom.com/search-api/documentation/search-service/fuzzy-search#trackingid-request
4404
+ * @ignore
4405
+ */
4406
+ export declare type TomTomHeaders = {
4407
+ 'TomTom-User-Agent'?: string;
4408
+ Authorization?: string;
4409
+ 'Tracking-ID'?: string;
4410
+ };
4411
+
4412
+ /**
4413
+ * @ignore
4414
+ * @param lngLat
4415
+ */
4416
+ export declare const toPointFeature: (lngLat: Position) => Feature<Point>;
4417
+
4418
+ /**
4419
+ * Simple category classification for traffic incidents.
4420
+ *
4421
+ * @remarks
4422
+ * - `jam`: Traffic congestion or slow-moving traffic
4423
+ * - `road_work`: Construction or maintenance work
4424
+ * - `road_closure`: Road is closed or blocked
4425
+ * - `other`: Other types of incidents
4426
+ *
4427
+ * @group Route
4428
+ */
4429
+ export declare type TrafficCategory = 'jam' | 'road_work' | 'road_closure' | 'other';
4430
+
4431
+ /**
4432
+ * Traffic incident information based on TPEG2-TEC standard.
4433
+ *
4434
+ * Provides standardized classification of traffic flow effects and causes.
4435
+ *
4436
+ * @group Route
4437
+ */
4438
+ export declare type TrafficIncidentTEC = {
4439
+ /**
4440
+ * Effect code describing impact on traffic flow.
4441
+ *
4442
+ * TPEG2-TEC standard code indicating how traffic is affected.
4443
+ */
4444
+ effectCode: number;
4445
+ /**
4446
+ * List of causes for this traffic incident.
4447
+ *
4448
+ * Array of cause elements with at least one entry. Multiple causes
4449
+ * may contribute to a single traffic incident.
4450
+ */
4451
+ causes?: [CauseTEC, ...CauseTEC[]];
4452
+ };
4453
+
4454
+ /**
4455
+ * Route section affected by a traffic incident.
4456
+ *
4457
+ * Represents a portion of the route experiencing traffic delays due to
4458
+ * congestion, accidents, construction, or other incidents.
4459
+ *
4460
+ * @example
4461
+ * ```typescript
4462
+ * const trafficSection: TrafficSectionProps = {
4463
+ * id: 'traffic-1',
4464
+ * startPointIndex: 50,
4465
+ * endPointIndex: 75,
4466
+ * simpleCategory: 'jam',
4467
+ * magnitudeOfDelay: 'moderate',
4468
+ * delayInSeconds: 420, // 7 minutes
4469
+ * effectiveSpeedInKmh: 25,
4470
+ * tec: { effectCode: 1, causes: [{ mainCauseCode: 101 }] }
4471
+ * };
4472
+ * ```
4473
+ *
4474
+ * @group Route
4475
+ */
4476
+ export declare type TrafficSectionProps = SectionProps & {
4477
+ /**
4478
+ * Simple category classification of the incident.
4479
+ */
4480
+ simpleCategory: TrafficCategory;
4481
+ /**
4482
+ * Severity level of the delay caused by this incident.
4483
+ */
4484
+ magnitudeOfDelay: DelayMagnitude;
4485
+ /**
4486
+ * TPEG2-TEC standardized incident information.
4487
+ *
4488
+ * Provides internationally standardized codes for traffic incident classification.
4489
+ */
4490
+ tec: TrafficIncidentTEC;
4491
+ /**
4492
+ * Actual average speed through this incident in km/h.
4493
+ *
4494
+ * Present when speed information is available. Lower speeds indicate worse congestion.
4495
+ */
4496
+ effectiveSpeedInKmh?: number;
4497
+ /**
4498
+ * Additional delay in seconds caused by this incident.
4499
+ *
4500
+ * Extra time compared to free-flow conditions. Present when delay can be calculated.
4501
+ */
4502
+ delayInSeconds?: number;
4503
+ };
4504
+
4505
+ /**
4506
+ * Primary mode of transportation for route calculation.
4507
+ *
4508
+ * Currently only `'car'` is supported. This determines road type preferences,
4509
+ * speed calculations, and routing rules applied to the calculated route.
4510
+ *
4511
+ * @remarks
4512
+ * Future versions may support additional modes like truck, taxi, bus, bicycle, and pedestrian.
4513
+ *
4514
+ * @example
4515
+ * ```typescript
4516
+ * const travelMode: TravelMode = 'car';
4517
+ * ```
4518
+ *
4519
+ * @group Route
4520
+ */
4521
+ export declare type TravelMode = 'car';
4522
+
4523
+ /**
4524
+ * Geopolitical view context for map display and data.
4525
+ *
4526
+ * Controls how disputed territories and borders are displayed on the map and in service responses.
4527
+ * Different countries may have different perspectives on territorial boundaries and place names.
4528
+ *
4529
+ * @remarks
4530
+ * - `Unified`: Default view with a neutral representation
4531
+ * - Country-specific codes (e.g., `AR`, `IN`, `PK`, etc.): Displays boundaries and names according to that country's perspective
4532
+ *
4533
+ * @example
4534
+ * ```typescript
4535
+ * // Use unified/neutral view
4536
+ * const view: View = 'Unified';
4537
+ *
4538
+ * // Use India's geopolitical perspective
4539
+ * const view: View = 'IN';
4540
+ *
4541
+ * // Use Argentina's perspective
4542
+ * const view: View = 'AR';
4543
+ * ```
4544
+ *
4545
+ * @group Shared
4546
+ */
4547
+ export declare type View = (typeof views)[number];
4548
+
4549
+ /**
4550
+ * List of available views for geopolitical context.
4551
+ * @group Shared
4552
+ */
4553
+ export declare const views: readonly ["Unified", "AR", "IN", "PK", "IL", "MA", "RU", "TR", "CN"];
4554
+
4555
+ /**
4556
+ * GeoJSON Feature representing a route waypoint.
4557
+ *
4558
+ * Waypoints are points that define the route path. The route will pass through each waypoint
4559
+ * in the order they are specified.
4560
+ *
4561
+ * @typeParam T - Additional custom properties beyond the standard waypoint properties
4562
+ *
4563
+ * @remarks
4564
+ * - Regular waypoints (without radius) create route legs and generate arrival instructions
4565
+ * - Circle waypoints (with radiusMeters) shape the route without creating legs
4566
+ *
4567
+ * @example
4568
+ * ```typescript
4569
+ * // Regular waypoint
4570
+ * const waypoint: Waypoint = {
4571
+ * type: 'Feature',
4572
+ * geometry: { type: 'Point', coordinates: [4.9041, 52.3676] },
4573
+ * properties: {}
4574
+ * };
4575
+ *
4576
+ * // Circle waypoint with custom properties
4577
+ * const circleWaypoint: Waypoint<{ name: string }> = {
4578
+ * type: 'Feature',
4579
+ * geometry: { type: 'Point', coordinates: [4.9041, 52.3676] },
4580
+ * properties: { radiusMeters: 1000, name: 'Via Amsterdam' }
4581
+ * };
4582
+ * ```
4583
+ *
4584
+ * @group Route
4585
+ */
4586
+ export declare type Waypoint<T extends Anything = Anything> = Feature<Point, WaypointProps & T>;
4587
+
4588
+ /**
4589
+ * Flexible input type for specifying a waypoint location.
4590
+ *
4591
+ * Accepts various formats for convenience:
4592
+ * - Full `Waypoint` Feature (for circle waypoints or waypoints with custom properties)
4593
+ * - Any object with coordinates (Position array, Point geometry, or Feature)
4594
+ *
4595
+ * @remarks
4596
+ * Waypoints are single points by default. To create a circle (soft) waypoint,
4597
+ * use the full Waypoint Feature format with a radiusMeters property.
4598
+ *
4599
+ * @example
4600
+ * ```typescript
4601
+ * // As coordinate array
4602
+ * const wp1: WaypointLike = [4.9041, 52.3676];
4603
+ *
4604
+ * // As Point geometry
4605
+ * const wp2: WaypointLike = { type: 'Point', coordinates: [4.9041, 52.3676] };
4606
+ *
4607
+ * // As full Waypoint Feature with radius
4608
+ * const wp3: WaypointLike = {
4609
+ * type: 'Feature',
4610
+ * geometry: { type: 'Point', coordinates: [4.9041, 52.3676] },
4611
+ * properties: { radiusMeters: 500 }
4612
+ * };
4613
+ * ```
4614
+ *
4615
+ * @group Route
4616
+ */
4617
+ export declare type WaypointLike = Waypoint | HasLngLat;
4618
+
4619
+ /**
4620
+ * Properties specific to route waypoints.
4621
+ *
4622
+ * @group Route
4623
+ */
4624
+ export declare type WaypointProps = {
4625
+ /**
4626
+ * Radius in meters defining a circle (soft) waypoint.
4627
+ *
4628
+ * When specified, the waypoint becomes a circle waypoint that shapes the route without
4629
+ * generating explicit navigation instructions or creating an additional route leg.
4630
+ *
4631
+ * @remarks
4632
+ * - Circle waypoints influence the route path while providing flexibility to the routing engine
4633
+ * - Larger radius values give more freedom for route optimization
4634
+ * - Smaller radius values force the route to pass closer to the specified point
4635
+ * - Unlike regular waypoints, circle waypoints don't create legs or generate "arrive at waypoint" instructions
4636
+ * - Useful for shaping routes through general areas rather than specific points
4637
+ *
4638
+ * Must be a positive integer with a maximum value of 135000.
4639
+ *
4640
+ * @example
4641
+ * ```typescript
4642
+ * // Circle waypoint with 1km radius - route will pass somewhere within this area
4643
+ * { radiusMeters: 1000 }
4644
+ *
4645
+ * // Small radius - route will pass very close to this point
4646
+ * { radiusMeters: 50 }
4647
+ * ```
4648
+ */
4649
+ radiusMeters?: number;
4650
+ };
4651
+
4652
+ /**
4653
+ * GeoJSON FeatureCollection of waypoints.
4654
+ *
4655
+ * Contains multiple waypoints that together define a multi-stop route.
4656
+ *
4657
+ * @typeParam T - Additional custom properties for individual waypoints
4658
+ *
4659
+ * @example
4660
+ * ```typescript
4661
+ * const waypoints: Waypoints = {
4662
+ * type: 'FeatureCollection',
4663
+ * features: [
4664
+ * { type: 'Feature', geometry: { type: 'Point', coordinates: [4.9, 52.3] }, properties: {} },
4665
+ * { type: 'Feature', geometry: { type: 'Point', coordinates: [4.95, 52.35] }, properties: {} }
4666
+ * ]
4667
+ * };
4668
+ * ```
4669
+ *
4670
+ * @group Route
4671
+ */
4672
+ export declare type Waypoints<T extends Anything = Anything> = FeatureCollection<Point, WaypointProps & T>;
4673
+
4674
+ export { }