@mapvx/web-components-ssr 1.0.0-rc.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,1132 @@
1
+ declare enum AnimationState {
2
+ NotStarted = 0,
3
+ Playing = 1,
4
+ Paused = 2,
5
+ Finished = 3
6
+ }
7
+
8
+ interface CategoryFiltersData {
9
+ name: string;
10
+ placeData: string[];
11
+ }
12
+
13
+ // Note: as of the RFC 7946 version of GeoJSON, Coordinate Reference Systems
14
+ // are no longer supported. (See https://tools.ietf.org/html/rfc7946#appendix-B)}
15
+
16
+
17
+
18
+ /**
19
+ * A Position is an array of coordinates.
20
+ * https://tools.ietf.org/html/rfc7946#section-3.1.1
21
+ * Array should contain between two and three elements.
22
+ * The previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),
23
+ * but the current specification only allows X, Y, and (optionally) Z to be defined.
24
+ *
25
+ * Note: the type will not be narrowed down to `[number, number] | [number, number, number]` due to
26
+ * marginal benefits and the large impact of breaking change.
27
+ *
28
+ * See previous discussions on the type narrowing:
29
+ * - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/pull/21590|Nov 2017}
30
+ * - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/67773|Dec 2023}
31
+ * - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/71441| Dec 2024}
32
+ *
33
+ * One can use a
34
+ * {@link https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates|user-defined type guard that returns a type predicate}
35
+ * to determine if a position is a 2D or 3D position.
36
+ *
37
+ * @example
38
+ * import type { Position } from 'geojson';
39
+ *
40
+ * type StrictPosition = [x: number, y: number] | [x: number, y: number, z: number]
41
+ *
42
+ * function isStrictPosition(position: Position): position is StrictPosition {
43
+ * return position.length === 2 || position.length === 3
44
+ * };
45
+ *
46
+ * let position: Position = [-116.91, 45.54];
47
+ *
48
+ * let x: number;
49
+ * let y: number;
50
+ * let z: number | undefined;
51
+ *
52
+ * if (isStrictPosition(position)) {
53
+ * // `tsc` would throw an error if we tried to destructure a fourth parameter
54
+ * [x, y, z] = position;
55
+ * } else {
56
+ * throw new TypeError("Position is not a 2D or 3D point");
57
+ * }
58
+ */
59
+ type Position = number[];
60
+
61
+ /**
62
+ * basic latitude and longitude model
63
+ * @group Places & Locations
64
+ */
65
+ interface LatLng {
66
+ lat: number;
67
+ lng: number;
68
+ }
69
+
70
+ interface RouteResponse {
71
+ legs: RouteLegResponse[];
72
+ }
73
+ interface RouteLegResponse {
74
+ distance: {
75
+ value: number;
76
+ };
77
+ duration: {
78
+ value: number;
79
+ };
80
+ start_location: LatLng;
81
+ end_location: LatLng;
82
+ steps: RouteStepResponse[];
83
+ }
84
+ interface RouteStepResponse {
85
+ distance: {
86
+ value: number;
87
+ };
88
+ duration: {
89
+ value: number;
90
+ };
91
+ start_location: LatLng;
92
+ start_inside_floor?: string;
93
+ start_inside_place?: string;
94
+ end_location: LatLng;
95
+ end_inside_floor?: string;
96
+ end_inside_place?: string;
97
+ html_instructions: string;
98
+ plain_instructions: string;
99
+ maneuver: string;
100
+ elevator_step: boolean;
101
+ show_popup?: boolean;
102
+ icon_prefix?: string;
103
+ polyline: RoutePolylineResponse;
104
+ }
105
+ interface RoutePolylineResponse {
106
+ points: string;
107
+ points_lat_lng?: LatLng[];
108
+ overview_points?: LatLng[];
109
+ }
110
+
111
+ /**
112
+ * Represents a complete route in MapVX that can contain multiple legs.
113
+ * Each route is composed of a series of legs that connect different points.
114
+ * @group Routes
115
+ */
116
+ declare class MVXRoute {
117
+ /**
118
+ * Unique identifier for the route generated automatically
119
+ */
120
+ id: string;
121
+ /**
122
+ * List of legs that compose the complete route
123
+ */
124
+ legs: MVXRouteLeg[];
125
+ /**
126
+ * Creates a new route instance from API response data
127
+ * @hidden
128
+ * @param data API response data containing route information
129
+ */
130
+ constructor(data: RouteResponse);
131
+ /**
132
+ * Gets all steps of the route by combining steps from all legs
133
+ * @returns Array with all route steps
134
+ */
135
+ get steps(): MVXRouteStep[];
136
+ /**
137
+ * Gets the total duration of the route.
138
+ * This property calculates the sum of the duration of all legs in the route.
139
+ *
140
+ * @returns {number} The total duration of the route, in seconds.
141
+ */
142
+ get duration(): number;
143
+ /**
144
+ * Gets the total length of the route.
145
+ * This property calculates the sum of the length of all legs in the route.
146
+ *
147
+ * @returns {number} The total length of the route, in meters.
148
+ */
149
+ get length(): number;
150
+ }
151
+ /**
152
+ * Represents a route leg that connects two specific points.
153
+ * Each leg contains information about distance, duration, and detailed steps.
154
+ * @group Routes
155
+ */
156
+ declare class MVXRouteLeg {
157
+ /**
158
+ * Total distance of the leg in meters
159
+ */
160
+ distance: number;
161
+ /**
162
+ * Estimated duration of the leg in seconds
163
+ */
164
+ duration: number;
165
+ /**
166
+ * Starting location of the leg
167
+ */
168
+ startLocation: LatLng;
169
+ /**
170
+ * Ending location of the leg
171
+ */
172
+ endLocation: LatLng;
173
+ /**
174
+ * List of detailed steps that compose this leg
175
+ */
176
+ steps: MVXRouteStep[];
177
+ /**
178
+ * Creates a new route leg instance from response data
179
+ * @hidden
180
+ * @param data API response data containing leg information
181
+ */
182
+ constructor(data: RouteLegResponse);
183
+ }
184
+ /**
185
+ * Represents an individual step within a route leg.
186
+ * Each step contains specific instructions and coordinates for navigation.
187
+ * @group Routes
188
+ */
189
+ declare class MVXRouteStep {
190
+ /**
191
+ * Distance of the step in meters
192
+ */
193
+ distance: number;
194
+ /**
195
+ * Estimated duration of the step in seconds
196
+ */
197
+ duration: number;
198
+ /**
199
+ * Starting location of the step
200
+ */
201
+ startLocation: LatLng;
202
+ /**
203
+ * Identifier of the floor where the step begins (if applicable)
204
+ */
205
+ startInsideFloor?: string;
206
+ /**
207
+ * Identifier of the place where the step begins (if applicable)
208
+ */
209
+ startInsidePlace?: string;
210
+ /**
211
+ * Ending location of the step
212
+ */
213
+ endLocation: LatLng;
214
+ /**
215
+ * Identifier of the floor where the step ends (if applicable)
216
+ */
217
+ endInsideFloor?: string;
218
+ /**
219
+ * Identifier of the place where the step ends (if applicable)
220
+ */
221
+ endInsidePlace?: string;
222
+ /**
223
+ * HTML formatted instructions to display to the user
224
+ */
225
+ htmlInstruction: string;
226
+ /**
227
+ * Plain text instructions to display to the user
228
+ */
229
+ plainInstruction: string;
230
+ /**
231
+ * Type of maneuver the user should perform (e.g., "turn-left", "straight")
232
+ */
233
+ maneuver: string;
234
+ /**
235
+ * Indicates if a popup with additional information should be shown
236
+ */
237
+ showPopup?: boolean;
238
+ /**
239
+ * Icon prefix to display for this step
240
+ */
241
+ iconPrefix?: string;
242
+ /**
243
+ * Indicates if this step involves using an elevator
244
+ */
245
+ elevatorStep: boolean;
246
+ /**
247
+ * Object containing the polyline information for the step
248
+ * @hidden
249
+ */
250
+ polyline: Polyline;
251
+ /**
252
+ * Creates a new route step instance from response data
253
+ * @hidden
254
+ * @param data API response data containing step information
255
+ */
256
+ constructor(data: RouteStepResponse);
257
+ /**
258
+ * Gets the polyline coordinates in GeoJSON format
259
+ * @returns Array of coordinates in [longitude, latitude] format
260
+ */
261
+ get geoJsonCoordinates(): Position[];
262
+ /**
263
+ * Gets the polyline coordinates in LatLng format
264
+ * @returns Array of LatLng coordinates
265
+ */
266
+ get coordinates(): LatLng[];
267
+ }
268
+ /**
269
+ * Internal class that handles polyline decoding and management.
270
+ * A polyline is an encoded representation of a series of coordinates.
271
+ */
272
+ declare class Polyline {
273
+ /**
274
+ * Encoded string of polyline points
275
+ */
276
+ points: string;
277
+ /**
278
+ * Polyline points in LatLng format (optional)
279
+ */
280
+ pointsLatLng?: LatLng[];
281
+ /**
282
+ * Overview points of the polyline (optional)
283
+ */
284
+ overviewPoints?: LatLng[];
285
+ /**
286
+ * Decoded points of the polyline
287
+ */
288
+ private decodedPoints;
289
+ /**
290
+ * Creates a new polyline instance from response data
291
+ * @param data Response data containing polyline information
292
+ */
293
+ constructor(data: RoutePolylineResponse);
294
+ /**
295
+ * Gets coordinates in GeoJSON format
296
+ * @returns Array of coordinates in [longitude, latitude] format
297
+ */
298
+ get geoJsonCoordinates(): Position[];
299
+ /**
300
+ * Gets coordinates in LatLng format
301
+ * @returns Array of LatLng coordinates
302
+ */
303
+ get coordinates(): LatLng[];
304
+ }
305
+
306
+ /**
307
+ * Represents a location on the map.
308
+ * @group Places & Locations
309
+ */
310
+ interface MVXLocation extends LatLng {
311
+ floorId?: string;
312
+ placeId?: string;
313
+ }
314
+
315
+ /**
316
+ * Model parameters of each floor for locations
317
+ * Represents the configuration and properties of individual floors within a building
318
+ * @group Places & Locations
319
+ */
320
+ interface InnerFloor {
321
+ /**
322
+ * Unique identifier for the floor
323
+ */
324
+ key: string;
325
+ /**
326
+ * Numerical index representing the floor's position in the building
327
+ * Lower numbers typically represent lower floors
328
+ */
329
+ index: number;
330
+ /**
331
+ * Floor level number (can be negative for basement floors)
332
+ */
333
+ level: number;
334
+ /**
335
+ * Full name of the floor (e.g., "Ground Floor", "First Floor")
336
+ */
337
+ name: string;
338
+ /**
339
+ * Abbreviated name of the floor (e.g., "G", "1F", "B1")
340
+ */
341
+ shortName?: string;
342
+ /**
343
+ * Indicates if this is the default floor to display when entering the building
344
+ */
345
+ defaultFloor: boolean;
346
+ /**
347
+ * Reference to the base floor identifier (used for relative positioning)
348
+ */
349
+ baseFloor?: string;
350
+ /**
351
+ * Indicates if this floor can be reached using GPS positioning
352
+ * Useful for outdoor areas or floors with GPS accessibility
353
+ */
354
+ reachableFromGPS?: boolean;
355
+ }
356
+
357
+ interface Metadata {
358
+ category?: string[];
359
+ image?: string;
360
+ logo?: string;
361
+ tags?: string[];
362
+ }
363
+
364
+ /**
365
+ * Interface that represents the API response for banners.
366
+ * Contains the data structure as it comes from the server.
367
+ * @group Places & Locations
368
+ */
369
+ interface BannerResponse {
370
+ /**
371
+ * URL of the banner image
372
+ */
373
+ url: string;
374
+ /**
375
+ * List of tags associated with the banner for filtering
376
+ */
377
+ tags?: string[];
378
+ /**
379
+ * Action URL to redirect to when clicking on the banner
380
+ */
381
+ url_action: string;
382
+ /**
383
+ * Indicates if the banner should open in the same window or a new one
384
+ */
385
+ sameLink: boolean;
386
+ /**
387
+ * A description of the banner.
388
+ *
389
+ * Can contain html tags.
390
+ */
391
+ description?: string;
392
+ }
393
+ /**
394
+ * Class that represents a banner in MapVX.
395
+ * Contains information about the image, tags, and banner behavior.
396
+ * @group Places & Locations
397
+ */
398
+ declare class Banner {
399
+ /**
400
+ * URL of the banner image
401
+ */
402
+ url: string;
403
+ /**
404
+ * List of tags associated with the banner for filtering
405
+ */
406
+ tags: string[];
407
+ /**
408
+ * Action URL to redirect to when clicking on the banner
409
+ */
410
+ urlAction: string;
411
+ /**
412
+ * Indicates if the banner should open in the same window or a new one
413
+ */
414
+ sameLink: boolean;
415
+ /**
416
+ * A description of the banner.
417
+ *
418
+ * Can contain html tags.
419
+ */
420
+ description?: string;
421
+ /**
422
+ * Creates a new banner instance from API response data
423
+ * @param rawBanner API response data containing banner information
424
+ */
425
+ constructor(rawBanner: BannerResponse);
426
+ }
427
+
428
+ /**
429
+ * Two-characters string indicator for each day of the week
430
+ * Represents the standard format for identifying days in the week
431
+ * @group Places & Locations
432
+ */
433
+ type DaysOfTheWeek = "mo" | "tu" | "we" | "th" | "fr" | "sa" | "su";
434
+ /**
435
+ * Object model for indicating a single period of opening time
436
+ * Represents a time range when a place is open
437
+ * @group Places & Locations
438
+ */
439
+ interface OpeningTime {
440
+ /**
441
+ * Opening time in 24-hour format (e.g., "09:00")
442
+ */
443
+ open: string;
444
+ /**
445
+ * Closing time in 24-hour format (e.g., "18:00")
446
+ */
447
+ close: string;
448
+ }
449
+ /**
450
+ * Object model for indicating multiple opening times periods for different days of the week
451
+ * Maps each day of the week to an array of opening time periods
452
+ * @group Places & Locations
453
+ */
454
+ type OpeningHours = {
455
+ [day in DaysOfTheWeek]: OpeningTime[];
456
+ };
457
+
458
+ /**
459
+ * Base interface for all property types that a place can have.
460
+ * Defines the common fields that all properties must have.
461
+ * @group Places & Locations
462
+ */
463
+ interface Property {
464
+ /**
465
+ * Title of the property
466
+ */
467
+ title: string;
468
+ /**
469
+ * Subtitle or description of the property
470
+ */
471
+ subtitle: string;
472
+ /**
473
+ * URL of the icon associated with the property (optional)
474
+ */
475
+ icon?: string;
476
+ /**
477
+ * Image URL for the property icon (optional)
478
+ */
479
+ imageUrl?: string;
480
+ /**
481
+ * Type of property to identify its category
482
+ */
483
+ type?: string;
484
+ /**
485
+ * Identifier of the parent place of the property (optional)
486
+ */
487
+ childParentPlace?: string;
488
+ /**
489
+ * URL associated with the property (optional)
490
+ */
491
+ url?: string;
492
+ /**
493
+ * Icon prefix (defaults to "fas" for Font Awesome)
494
+ */
495
+ iconPrefix?: string;
496
+ /**
497
+ * Order of the property (optional)
498
+ */
499
+ sortChildrenBy?: string;
500
+ }
501
+ /**
502
+ * Interface that represents the API response for properties.
503
+ * Contains the data structure as it comes from the server.
504
+ * @group Places & Locations
505
+ */
506
+ interface PropertyResponse {
507
+ /**
508
+ * Identifying key of the property
509
+ */
510
+ key: string;
511
+ /**
512
+ * Descriptive text of the property
513
+ */
514
+ text: string;
515
+ /**
516
+ * URL of the associated icon (optional)
517
+ */
518
+ icon?: string;
519
+ /**
520
+ * Image URL for the property icon (optional)
521
+ */
522
+ imageUrl?: string;
523
+ /**
524
+ * Type of property
525
+ */
526
+ type?: string;
527
+ /**
528
+ * URL associated with the property (optional)
529
+ */
530
+ url?: string;
531
+ /**
532
+ * List of child places associated with this property
533
+ */
534
+ child_places?: PlaceResponse[] | string[];
535
+ /**
536
+ * List of nested child properties
537
+ */
538
+ child_properties: PropertyResponse[];
539
+ /**
540
+ * Identifier of the parent place of the children
541
+ */
542
+ child_parent_place?: string;
543
+ /**
544
+ * Icon prefix
545
+ */
546
+ iconPrefix?: string;
547
+ /**
548
+ * Order of properties should be sorted by
549
+ */
550
+ sortChildrenBy?: string;
551
+ }
552
+ /**
553
+ * Interface that represents a transport service associated with a place.
554
+ * Extends the Property interface with transport-specific fields.
555
+ * @group Places & Locations
556
+ */
557
+ interface TransportLine extends Property {
558
+ /**
559
+ * Fixed type that identifies this property as a transport line
560
+ */
561
+ type: "transport_line";
562
+ /**
563
+ * List of available transport lines
564
+ */
565
+ lines: string[];
566
+ /**
567
+ * Source or provider of the transport service
568
+ */
569
+ source: string[] | string;
570
+ }
571
+
572
+ interface InnerFloorResponse {
573
+ defaultFloor: boolean;
574
+ index: number;
575
+ level: number;
576
+ name: string;
577
+ shortName?: string;
578
+ vectorTile: boolean;
579
+ reachableFromGPS?: boolean;
580
+ baseFloor?: string;
581
+ }
582
+ type RawLogo = string | {
583
+ light: string;
584
+ dark: string;
585
+ };
586
+ interface PlaceResponse {
587
+ id: string;
588
+ title: string;
589
+ description?: string;
590
+ shortDescription?: string;
591
+ lat: number;
592
+ lng: number;
593
+ address?: string;
594
+ category: string;
595
+ general_category: string;
596
+ localizedCategory?: string;
597
+ parent_institution: string;
598
+ externalId?: string;
599
+ alias?: string;
600
+ innerFloors?: {
601
+ [key: string]: InnerFloorResponse;
602
+ };
603
+ inFloor?: string[];
604
+ hasBeacons: boolean;
605
+ opening_hours: OpeningHours;
606
+ properties?: PropertyResponse[];
607
+ logo?: RawLogo;
608
+ images?: string[];
609
+ keywords?: string[];
610
+ tags?: string[];
611
+ banners?: BannerResponse[];
612
+ parent_id: string;
613
+ parent_type: string;
614
+ metadata?: Metadata;
615
+ visibility?: "public" | "protected" | "hidden";
616
+ }
617
+
618
+ /**
619
+ * MapVX place object, is a custom object containing data of a specific real place.
620
+ * Represents a physical location with all its associated metadata and properties.
621
+ *
622
+ * @example
623
+ * ```typescript
624
+ * const place = new MVXPlace(placeResponse);
625
+ * console.log(place.title); // "Coffee Shop"
626
+ * console.log(place.position); // { lat: 40.7128, lng: -74.0060 }
627
+ * ```
628
+ *
629
+ * @group Places & Locations
630
+ */
631
+ declare class MVXPlace {
632
+ /**
633
+ * Unique identifier to reference the place in MapVX system
634
+ */
635
+ mapvxId: string;
636
+ /**
637
+ * Client-side identifier for the place (optional)
638
+ * Used for custom identification in client applications
639
+ */
640
+ clientId?: string;
641
+ /**
642
+ * Title text for the place (localized based on client language)
643
+ */
644
+ title: string;
645
+ /**
646
+ * Detailed description text for the place (localized based on client language)
647
+ */
648
+ description?: string;
649
+ /**
650
+ * Short description text for the place (localized based on client language)
651
+ */
652
+ shortDescription?: string;
653
+ /**
654
+ * Central position coordinates for the place
655
+ * @see {@link LatLng} for coordinate structure
656
+ */
657
+ position: LatLng;
658
+ /**
659
+ * Flag to control visibility of the place in search results
660
+ */
661
+ hidePlace: boolean;
662
+ /**
663
+ * Category identifier for the place
664
+ */
665
+ category: string;
666
+ /**
667
+ * Localized category name for the place (based on client language)
668
+ */
669
+ localizedCategory?: string;
670
+ /**
671
+ * General purpose category string for the place (localized)
672
+ */
673
+ generalCategory: string;
674
+ /**
675
+ * Floors available in the parent place. If this exists, the place is indoor.
676
+ * Otherwise, the place is considered outdoor.
677
+ * @see {@link InnerFloor} for floor structure
678
+ */
679
+ innerFloors: InnerFloor[];
680
+ /**
681
+ * Specific floor identifiers where this place exists (for indoor locations)
682
+ */
683
+ inFloors?: string[];
684
+ /**
685
+ * Unique identifier of the institution to which this place belongs
686
+ */
687
+ parentInstitutionId: string;
688
+ /**
689
+ * Business hours when the place is open
690
+ * @see {@link OpeningHours} for schedule structure
691
+ */
692
+ openingHours?: OpeningHours;
693
+ /**
694
+ * Physical address of the place in plain text (if provided)
695
+ */
696
+ address?: string;
697
+ /**
698
+ * Transport services associated with this place
699
+ * @see {@link TransportLine} for transport service structure
700
+ */
701
+ transportLine?: TransportLine[];
702
+ /**
703
+ * URL of the place's logo image
704
+ */
705
+ logo?: string;
706
+ /**
707
+ * List of available image URLs for the place
708
+ */
709
+ images: string[];
710
+ /**
711
+ * List of available banner images for the place
712
+ * @see {@link Banner} for banner structure
713
+ */
714
+ banners: Banner[];
715
+ /**
716
+ * List of properties connected to the place
717
+ * @see {@link Property} for property structure
718
+ */
719
+ properties?: Property[];
720
+ /**
721
+ * Unique identifier of the parent place or object
722
+ */
723
+ parentId: string;
724
+ /**
725
+ * Type of the object being referenced by {@link parentId}
726
+ */
727
+ parentType: string;
728
+ /**
729
+ * Tags associated with the place for categorization and filtering
730
+ */
731
+ tags: string[];
732
+ /**
733
+ * Metadata of the place.
734
+ */
735
+ metadata?: Metadata;
736
+ /**
737
+ * Visibility of the place
738
+ */
739
+ visibility: "public" | "protected" | "hidden";
740
+ /**
741
+ * Creates a new place instance with the parameters specified in the data.
742
+ *
743
+ * @param rawPlace - JSON configuration parameters for the place from API response
744
+ * @returns A new instance of MVXPlace
745
+ *
746
+ * @example
747
+ * ```typescript
748
+ * const placeResponse = await fetchPlaceData(placeId);
749
+ * const place = new MVXPlace(placeResponse);
750
+ * ```
751
+ */
752
+ constructor(rawPlace: PlaceResponse);
753
+ /**
754
+ * Returns the floor in which the place exists as an InnerFloor object.
755
+ * If no matching available floor is found or if the place is not indoor,
756
+ * an undefined value will be returned.
757
+ *
758
+ * @param parentPlaceFloors - Array of existing parent place floors to search in
759
+ * @returns The matching InnerFloor object or undefined if not found
760
+ *
761
+ * @example
762
+ * ```typescript
763
+ * const buildingFloors = getBuildingFloors();
764
+ * const placeFloor = place.inFloor(buildingFloors);
765
+ * if (placeFloor) {
766
+ * console.log(`Place is on floor: ${placeFloor.name}`);
767
+ * }
768
+ * ```
769
+ */
770
+ inFloor(parentPlaceFloors: InnerFloor[]): InnerFloor | undefined;
771
+ /**
772
+ * Returns a string representation of the place
773
+ * @returns String in format "MVXPlace {mapvxId}"
774
+ */
775
+ toString(): string;
776
+ }
777
+
778
+ interface InstitutionCityFilterOption {
779
+ institutionId: string;
780
+ filterId: string;
781
+ name: string;
782
+ type: "institution";
783
+ }
784
+ interface ParentPlaceCityFilterOption {
785
+ parentPlaceId: string;
786
+ filterId: string;
787
+ name: string;
788
+ type: "parent-place";
789
+ institutionId: string;
790
+ }
791
+ type CityFilterOption = InstitutionCityFilterOption | ParentPlaceCityFilterOption;
792
+
793
+ interface InstitutionResponse {
794
+ id: string;
795
+ title: string;
796
+ category: string;
797
+ description?: string;
798
+ hasPlaces: boolean;
799
+ icon?: string;
800
+ country: string;
801
+ properties?: PropertyResponse[];
802
+ }
803
+
804
+ /**
805
+ * MapVX Institution object, is a custom object containing data of conglomerate of places (enterprise or subdivision).
806
+ * Represents a collection of related places that form a larger organizational unit.
807
+ *
808
+ * @example
809
+ * ```typescript
810
+ * const institution = new Institution(institutionResponse);
811
+ * console.log(institution.title); // "Shopping Mall"
812
+ * console.log(institution.hasPlaces); // true
813
+ * ```
814
+ *
815
+ * @group Places & Locations
816
+ */
817
+ declare class Institution {
818
+ /**
819
+ * Unique identifier for the institution in MapVX system
820
+ */
821
+ mapvxId: string;
822
+ /**
823
+ * Title or name of the institution
824
+ */
825
+ title: string;
826
+ /**
827
+ * Detailed description of the institution (optional)
828
+ */
829
+ description?: string;
830
+ /**
831
+ * Country where the institution is located
832
+ */
833
+ country: string;
834
+ /**
835
+ * Category or type of the institution
836
+ */
837
+ category: string;
838
+ /**
839
+ * Flag indicating if the institution contains places
840
+ */
841
+ hasPlaces: boolean;
842
+ /**
843
+ * List of properties associated with the institution
844
+ * @see {@link Property} for property structure
845
+ */
846
+ properties?: Property[];
847
+ /**
848
+ * URL of the institution's icon or logo
849
+ */
850
+ icon?: string;
851
+ /**
852
+ * Creates a new instance of an Institution object with the rawInstitution arguments.
853
+ *
854
+ * @param rawInstitution - JSON configuration parameters for the institution from API response
855
+ * @returns A new instance of Institution
856
+ *
857
+ * @example
858
+ * ```typescript
859
+ * const institutionResponse = await fetchInstitutionData(institutionId);
860
+ * const institution = new Institution(institutionResponse);
861
+ * ```
862
+ */
863
+ constructor(rawInstitution: InstitutionResponse);
864
+ }
865
+
866
+ /**
867
+ * Multilanguage object model for different languages
868
+ * Represents text content that can be displayed in multiple languages
869
+ * @group Places & Locations
870
+ */
871
+ interface MultiLanguage {
872
+ /**
873
+ * Default language text that will be used if the requested language is not available
874
+ */
875
+ default: string;
876
+ /**
877
+ * Language-specific text content indexed by language code
878
+ * Example: { "en": "Hello", "es": "Hola", "default": "Hello" }
879
+ */
880
+ [language: string]: string;
881
+ }
882
+
883
+ /**
884
+ * Interface that represents the API response for transport services.
885
+ * Contains both real-time schedules and regular schedules.
886
+ */
887
+ interface TransportResponse {
888
+ /**
889
+ * List of real-time schedules for transport services
890
+ */
891
+ realtimeSchedules: RealtimeSchedule[];
892
+ /**
893
+ * List of regular schedules for transport services
894
+ */
895
+ schedules: Schedule[];
896
+ }
897
+ /**
898
+ * Interface that represents a real-time schedule of a transport service.
899
+ * Contains detailed information about a specific route in real-time.
900
+ * @group Places & Locations
901
+ */
902
+ interface RealtimeSchedule {
903
+ /**
904
+ * Name of the transport route
905
+ */
906
+ routeName: string;
907
+ /**
908
+ * Informative message about the service status
909
+ */
910
+ message: string;
911
+ /**
912
+ * Opening hours of the service (optional)
913
+ */
914
+ opening_hours?: [];
915
+ /**
916
+ * Additional properties of the service (optional)
917
+ */
918
+ properties?: [];
919
+ /**
920
+ * Name of the current stop
921
+ */
922
+ stopName: string;
923
+ /**
924
+ * Final destination of the route
925
+ */
926
+ finalDestination: string;
927
+ /**
928
+ * Origin or source of the service
929
+ */
930
+ source: string;
931
+ /**
932
+ * URL of the icon associated with the service (optional)
933
+ */
934
+ icon?: string;
935
+ /**
936
+ * Unique identifier of the vehicle
937
+ */
938
+ vehicleId: string;
939
+ /**
940
+ * Distance from the current stop in meters
941
+ */
942
+ distance: number;
943
+ /**
944
+ * Estimated arrival time in text format
945
+ */
946
+ estimatedTime: string;
947
+ /**
948
+ * Remaining time until arrival in text format
949
+ */
950
+ remainingTime: string;
951
+ /**
952
+ * Service title in multiple languages
953
+ */
954
+ title: MultiLanguage;
955
+ /**
956
+ * Indicates if the service is delayed
957
+ */
958
+ delayed: boolean;
959
+ /**
960
+ * Route direction (outbound or inbound)
961
+ */
962
+ routeDirection: string;
963
+ /**
964
+ * Route identifier
965
+ */
966
+ route: string;
967
+ /**
968
+ * Latitude of the vehicle's current location
969
+ */
970
+ latitude: number;
971
+ /**
972
+ * Longitude of the vehicle's current location
973
+ */
974
+ longitude: number;
975
+ /**
976
+ * Stop identifier
977
+ */
978
+ stopId: string;
979
+ /**
980
+ * List of stops associated with this route (optional)
981
+ */
982
+ stops?: MVXPlace[];
983
+ }
984
+ /**
985
+ * Interface that represents a regular schedule of a transport service.
986
+ * Contains information about fixed schedules of a transport line.
987
+ * @group Places & Locations
988
+ */
989
+ interface Schedule {
990
+ /**
991
+ * Identifier of the transport line
992
+ */
993
+ line: string;
994
+ /**
995
+ * Route direction (outbound or inbound)
996
+ */
997
+ routeDirection: string;
998
+ /**
999
+ * Schedules organized by days of the week
1000
+ */
1001
+ schedule: DaysAndTimes[];
1002
+ /**
1003
+ * Origin or source of the service
1004
+ */
1005
+ source: string;
1006
+ /**
1007
+ * Service title in multiple languages
1008
+ */
1009
+ title: MultiLanguage;
1010
+ /**
1011
+ * Today's schedule in text format
1012
+ */
1013
+ today_schedule: string;
1014
+ /**
1015
+ * Next schedule in text format
1016
+ */
1017
+ next_schedule: string;
1018
+ }
1019
+ /**
1020
+ * Interface that represents schedules for specific days of the week.
1021
+ * Defines which days and at what times the service operates.
1022
+ * @group Places & Locations
1023
+ */
1024
+ interface DaysAndTimes {
1025
+ /**
1026
+ * List of days of the week in abbreviated format (e.g., ["mo", "tu", "we"])
1027
+ */
1028
+ days: string[];
1029
+ /**
1030
+ * List of schedules in text format (e.g., ["08:00", "12:00", "18:00"])
1031
+ */
1032
+ times: string[];
1033
+ }
1034
+ /**
1035
+ * Class that represents a transport object in MapVX.
1036
+ * Contains both regular schedules and real-time information.
1037
+ * @group Others
1038
+ */
1039
+ declare class MVXTransport {
1040
+ /**
1041
+ * List of regular schedules for transport services
1042
+ */
1043
+ schedule: Schedule[];
1044
+ /**
1045
+ * List of real-time routes for transport services
1046
+ */
1047
+ routes: RealtimeSchedule[];
1048
+ /**
1049
+ * Creates a new transport instance with the parameters specified in the response of the endpoint.
1050
+ * @hidden
1051
+ * @param data json parameters for the transport object.
1052
+ * @returns A new instance of MVXTransport is returned.
1053
+ */
1054
+ constructor(data: TransportResponse);
1055
+ }
1056
+
1057
+ interface InitialData {
1058
+ availablePlaces: PlaceResponse[] | null;
1059
+ institutions: InstitutionResponse[] | null;
1060
+ }
1061
+
1062
+ interface CurrentLocation {
1063
+ type: 'current-location';
1064
+ title: 'Current location';
1065
+ position: LatLng;
1066
+ }
1067
+ declare function toCurrentLocation(position: GeolocationPosition): CurrentLocation;
1068
+ declare function isCurrentLocation(point: RoutePoint | null): point is CurrentLocation;
1069
+ declare function isPlace(point: RoutePoint | null): point is MVXPlace;
1070
+ type RoutePoint = MVXPlace | CurrentLocation;
1071
+
1072
+ interface FormattedSchedule {
1073
+ day: string;
1074
+ schedule: string[];
1075
+ }
1076
+
1077
+ interface SearchData {
1078
+ term: string;
1079
+ results: MVXPlace[];
1080
+ }
1081
+ declare const EMPTY_SEARCH_DATA: SearchData;
1082
+
1083
+ interface SelectFilterAction {
1084
+ type: 'select-filter';
1085
+ data: {
1086
+ filter: string;
1087
+ };
1088
+ }
1089
+ interface ShowPlaceAction {
1090
+ type: 'show-place';
1091
+ data: {
1092
+ placeId: string;
1093
+ alias: string | undefined;
1094
+ };
1095
+ }
1096
+ interface SelectDestinationAction {
1097
+ type: 'select-destination';
1098
+ data: {
1099
+ destinationId: string;
1100
+ alias: string | undefined;
1101
+ };
1102
+ }
1103
+ interface SearchAction {
1104
+ type: 'search';
1105
+ data: {
1106
+ searchTerm: string;
1107
+ };
1108
+ }
1109
+ interface ReturnToHomeAction {
1110
+ type: 'return-to-home';
1111
+ data: {
1112
+ filter: string;
1113
+ };
1114
+ }
1115
+ type UserAction = SelectFilterAction | ShowPlaceAction | SelectDestinationAction | SearchAction | ReturnToHomeAction;
1116
+
1117
+ declare function isDealOrEventBanner(banner: Banner): boolean;
1118
+ declare function extractBannerColor(description: string): string;
1119
+
1120
+ declare const FALLBACK_IMAGE_URL = "https://images.ctfassets.net/37yx0l0lf3yk/6eJ4fYG9hQxJ8ayujcebhe/8cf968e7d66df9a8bc75b72b7e7d6432/00002167_BedrockWebsite_TenantCOmingSoon_PlaceholderImage_3840x3840_V2-web.jpg?q=80&fm=webp&w=1920";
1121
+ declare const MEASUREMENT_ID = "G-9KB6BB1J7M";
1122
+
1123
+ /**
1124
+ * Get the currentschedule of the store as a string.
1125
+ * @param openingHours Opening hours of the store.
1126
+ * @returns The schedule of the store.
1127
+ */
1128
+ declare function getSchedule(openingHours: OpeningHours): string;
1129
+ declare function prepareAllSchedules(openingHours: OpeningHours): FormattedSchedule[];
1130
+
1131
+ export { AnimationState, Banner, EMPTY_SEARCH_DATA, FALLBACK_IMAGE_URL, Institution, MEASUREMENT_ID, MVXPlace, MVXRoute, MVXRouteLeg, MVXRouteStep, MVXTransport, extractBannerColor, getSchedule, isCurrentLocation, isDealOrEventBanner, isPlace, prepareAllSchedules, toCurrentLocation };
1132
+ export type { CategoryFiltersData, CityFilterOption, CurrentLocation, DaysOfTheWeek, FormattedSchedule, InitialData, InnerFloor, InstitutionResponse, LatLng, MVXLocation, OpeningHours, OpeningTime, PlaceResponse, Property, ReturnToHomeAction, RoutePoint, SearchAction, SearchData, SelectDestinationAction, SelectFilterAction, ShowPlaceAction, UserAction };