mahal_map 2.2.2 → 2.3.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.
package/dist/index.d.mts CHANGED
@@ -23,7 +23,7 @@ interface IAdditionalParamType {
23
23
  /**
24
24
  * Поверхность @grammaps/maps3d-web, описанная локально. Пакет в зависимости не ставится —
25
25
  * он приходит снаружи, как и maplibre-gl, поэтому импортировать его типы нельзя. Здесь
26
- * повторена публичная часть .d.ts версии 0.10.0; всё необязательное помечено `?`, чтобы
26
+ * повторена публичная часть .d.ts версии 0.11.0; всё необязательное помечено `?`, чтобы
27
27
  * более старая сборка на странице не ломала типы у потребителя.
28
28
  */
29
29
  type Maps3DThemeName = "light" | "dark" | "navigator-light" | "navigator-dark" | "mobile-light" | "mobile-dark";
@@ -97,8 +97,26 @@ interface IMaps3DLayerState {
97
97
  * У слоя, который не умеет ответить фактом, повторяет `active`; у сборок до 0.8.0 — undefined.
98
98
  */
99
99
  rendered?: boolean;
100
- /** Параметры слоя: у зданий — detail, у этажей — level, у рельефа — mode. */
101
- params: Record<string, unknown>;
100
+ /** Параметры слоя: у зданий — detail, у этажей — level и levels, у рельефа — mode. */
101
+ params: IMaps3DLayerStateParams;
102
+ }
103
+ /**
104
+ * Параметры в снимке слоя. Каждое поле есть только у своего слоя; неизвестные ключи
105
+ * сборки Maps3D проходят через индексную сигнатуру.
106
+ */
107
+ interface IMaps3DLayerStateParams {
108
+ /** `buildings`: уровень детализации. */
109
+ detail?: Maps3DBuildingDetail;
110
+ /** `indoor`: открытый этаж. */
111
+ level?: number;
112
+ /**
113
+ * `indoor`: этажи, найденные в текущем виде карты; `[]` — данных по зданию нет.
114
+ * Меняется при движении карты и приходит через onLayers(). С 0.11.0, раньше — undefined.
115
+ */
116
+ levels?: number[];
117
+ /** `terrain`: режим рельефа. */
118
+ mode?: Maps3DTerrainMode;
119
+ [key: string]: unknown;
102
120
  }
103
121
  interface IMaps3DSelectionStyle {
104
122
  color?: string | number;
@@ -232,12 +250,16 @@ interface IMaps3DBuildingClickInfo {
232
250
  id: string | number;
233
251
  /**
234
252
  * Атрибуты объекта; `props.osm_id` — идентификатор, который не меняется.
235
- * Необязательно: peerDependency допускает сборки Maps3D от 0.5.0, где поля может не быть.
253
+ * Необязательно: запасные пути держат сборки Maps3D от 0.5.0, где поля может не быть.
236
254
  */
237
255
  props?: Record<string, unknown>;
238
256
  /** Высота здания в метрах. Необязательно по той же причине, что и `props`. */
239
257
  height?: number;
240
- /** Порядковый номер внутри сцены. Живёт до ближайшей пересборки геометрии. */
258
+ /**
259
+ * Порядковый номер внутри сцены. Живёт до ближайшей пересборки геометрии.
260
+ * `>= 0` — объёмный дом сцены, `-1` — дом из слоя стиля (объёма под ним нет).
261
+ * Тот же признак, что selectedBuildingKind(): `'scene'` / `'flat'`.
262
+ */
241
263
  index?: number;
242
264
  [key: string]: unknown;
243
265
  }
@@ -247,6 +269,10 @@ interface IMaps3DObjectsLightOptions {
247
269
  sky?: number;
248
270
  exposure?: number;
249
271
  }
272
+ /** Чем нарисовано выделение: объёмный дом сцены или слой стиля. С 0.11.0. */
273
+ type Maps3DSelectionKind = "scene" | "flat";
274
+ /** Колбэк подписки Maps3D: `null` вместо функции — отписаться. */
275
+ type Maps3DListener<T> = ((info: T | null) => void) | null;
250
276
  interface IMaps3DDiagnostics {
251
277
  terrainActive: boolean;
252
278
  drapeRefreshes: number;
@@ -266,18 +292,20 @@ interface IMaps3DLayer {
266
292
  refreshLayers?(): void;
267
293
  buildings?: IMaps3DBuildingsController | null;
268
294
  setBuildingsEnabled?(enabled: boolean): void;
269
- onBuildingClick?(callback: (info: IMaps3DBuildingClickInfo | null) => void): void;
295
+ onBuildingClick?(callback: Maps3DListener<IMaps3DBuildingClickInfo>): (() => void) | void;
270
296
  selectBuilding?(id: number | string | null, style?: IMaps3DSelectionStyle): boolean;
271
297
  clearSelection?(): void;
272
298
  selectedBuilding?(): number | string | null;
299
+ /** С 0.11.0. */
300
+ selectedBuildingKind?(): Maps3DSelectionKind | null;
273
301
  setSelectionStyle?(style: IMaps3DSelectionStyle): void;
274
- onBuildingHover?(callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
302
+ onBuildingHover?(callback: Maps3DListener<IMaps3DBuildingClickInfo>): (() => void) | void;
275
303
  setHoverEnabled?(enabled: boolean): void;
276
304
  readonly hoverEnabled?: boolean;
277
305
  setHoverStyle?(style: IMaps3DHoverStyle): void;
278
306
  hoverBuilding?(id: number | string | null): boolean;
279
307
  hoveredBuilding?(): number | string | null;
280
- onRoadClick?(callback: (hit: IMaps3DRoadHit | null) => void): void;
308
+ onRoadClick?(callback: Maps3DListener<IMaps3DRoadHit>): (() => void) | void;
281
309
  roadAt?(point: {
282
310
  x: number;
283
311
  y: number;
@@ -287,13 +315,13 @@ interface IMaps3DLayer {
287
315
  x: number;
288
316
  y: number;
289
317
  }, tolerancePx?: number): IMaps3DParkingInfo | null;
290
- onParkingHover?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
318
+ onParkingHover?(callback: Maps3DListener<IMaps3DParkingInfo>): (() => void) | void;
291
319
  setParkingHoverStyle?(style: IMaps3DParkingHoverStyle): void;
292
320
  setParkingHoverEnabled?(enabled: boolean): void;
293
321
  readonly parkingHoverEnabled?: boolean;
294
322
  hoverParking?(id: number | string | null): boolean;
295
323
  hoveredParking?(): number | string | null;
296
- onParkingClick?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
324
+ onParkingClick?(callback: Maps3DListener<IMaps3DParkingInfo>): (() => void) | void;
297
325
  traffic?: boolean;
298
326
  trafficRaster?: boolean;
299
327
  setTraffic?(enabled: boolean): void;
@@ -304,6 +332,7 @@ interface IMaps3DLayer {
304
332
  refreshTraffic?(): void;
305
333
  setIndoor?(enabled: boolean): void;
306
334
  setIndoorLevel?(level: number): void;
335
+ /** Запасной путь для сборок до 0.11.0 — там этажей нет в `layer("indoor").params.levels`. */
307
336
  readonly indoorLevels?: number[];
308
337
  refreshIndoor?(): void;
309
338
  showPlace?(lon: number, lat: number, level?: number | null, zoom?: number): void;
@@ -469,31 +498,52 @@ interface ISearchByLocationParam {
469
498
  token: string;
470
499
  type?: string;
471
500
  }
501
+ /**
502
+ * Тип объекта в ответе геокодера. Регистр у сервиса плавает: обратный геокодинг отдаёт
503
+ * `"Address"`, прямой — `"address"`. Сравнивайте через `type.toLowerCase()`.
504
+ */
505
+ type SearchResultType = "poi" | "locality" | "address" | "Address" | (string & {});
506
+ /** Адрес объекта. Любое поле может отсутствовать — сервис отдаёт только то, что знает. */
507
+ interface ISearchDetailAddress {
508
+ /** Область: `вилоят`, `Суғд`. */
509
+ subject_type?: string;
510
+ subject_name?: string;
511
+ /** Город: `шаҳр`, `Хуҷанд`. Так город приходит в обратном геокодинге. */
512
+ city_type?: string;
513
+ city?: string;
514
+ /** Район / ноҳия. */
515
+ region_type?: string;
516
+ region?: string;
517
+ /** Населённый пункт — встречается в ответах вместо `city`. */
518
+ settlement_type?: string;
519
+ settlement?: string;
520
+ /** Посёлок / махалля. */
521
+ village_type?: string;
522
+ village?: string;
523
+ /** Улица: `кӯчаи`, `Камоли Хуҷандӣ`. */
524
+ street_type?: string;
525
+ street_name?: string;
526
+ /** Номер дома. У многих POI его нет. */
527
+ number?: string;
528
+ }
529
+ interface ISearchDetailInfo {
530
+ name?: string;
531
+ short_name?: string;
532
+ categories?: string;
533
+ translate_ru?: string;
534
+ description?: string;
535
+ phone?: string;
536
+ website?: string;
537
+ }
472
538
  interface ISearchResponse {
473
539
  latitude: number;
474
540
  longitude: number;
475
- type: "poi" | "locality" | "address";
541
+ type: SearchResultType;
542
+ /** Расстояние от точки запроса в метрах (обратный геокодинг). */
476
543
  distance: number | null;
477
- detailInfo: {
478
- name?: string;
479
- short_name?: string;
480
- categories?: string;
481
- translate_ru?: string;
482
- description?: string;
483
- } | null;
484
- detailAddress: {
485
- subject_type?: string;
486
- subject_name?: string;
487
- region_type?: string;
488
- region?: string;
489
- settlement_type?: string;
490
- settlement?: string;
491
- village_type?: string;
492
- village?: string;
493
- street_type?: string;
494
- street_name?: string;
495
- number: string;
496
- } | [];
544
+ detailInfo: ISearchDetailInfo | null;
545
+ /** Пустой массив — адрес неизвестен. */
546
+ detailAddress: ISearchDetailAddress | [];
497
547
  }
498
548
  interface ICheckJSApiParam {
499
549
  token: string;
@@ -539,11 +589,9 @@ declare class MahalMap {
539
589
  private buildingsEnabled;
540
590
  private workerCheckTimer?;
541
591
  private styleChangeHandler?;
542
- private pendingBuildingClick?;
543
- private pendingRoadClick?;
592
+ private subscriptions;
544
593
  private pendingSelectionStyle?;
545
594
  private pendingLayerSubscribers;
546
- private pendingBuildingHover?;
547
595
  private pendingHoverStyle?;
548
596
  private pendingHoverEnabled?;
549
597
  private constructor();
@@ -608,27 +656,29 @@ declare class MahalMap {
608
656
  static setIndoorLevel(instance: MahalMap, level: number): void;
609
657
  static refreshIndoor(instance: MahalMap): void;
610
658
  static showPlace(instance: MahalMap, lon: number, lat: number, level?: number | null, zoom?: number): void;
611
- static onBuildingClick(instance: MahalMap, callback: (info: IMaps3DBuildingClickInfo | null) => void): void;
659
+ static onBuildingClick(instance: MahalMap, callback: Maps3DListener<IMaps3DBuildingClickInfo>): () => void;
612
660
  static selectBuilding(instance: MahalMap, id: number | string | null, style?: IMaps3DSelectionStyle): boolean;
613
661
  static clearSelection(instance: MahalMap): void;
614
662
  static selectedBuilding(instance: MahalMap): string | number | null;
663
+ static selectedBuildingKind(instance: MahalMap): Maps3DSelectionKind | null;
664
+ static getBuildingsMinZoom(instance: MahalMap): number;
615
665
  static setSelectionStyle(instance: MahalMap, style: IMaps3DSelectionStyle): void;
616
- static onRoadClick(instance: MahalMap, callback: (hit: IMaps3DRoadHit | null) => void): void;
666
+ static onRoadClick(instance: MahalMap, callback: Maps3DListener<IMaps3DRoadHit>): () => void;
617
667
  static roadAt(instance: MahalMap, point: {
618
668
  x: number;
619
669
  y: number;
620
670
  }, tolerancePx?: number): IMaps3DRoadHit | null;
621
- static onParkingHover(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
671
+ static onParkingHover(instance: MahalMap, callback: Maps3DListener<IMaps3DParkingInfo>): () => void;
622
672
  static setParkingHoverStyle(instance: MahalMap, style: IMaps3DParkingHoverStyle): void;
623
673
  static setParkingHoverEnabled(instance: MahalMap, enabled: boolean): void;
624
674
  static hoverParking(instance: MahalMap, id: number | string | null): boolean;
625
675
  static hoveredParking(instance: MahalMap): string | number | null;
626
- static onParkingClick(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
676
+ static onParkingClick(instance: MahalMap, callback: Maps3DListener<IMaps3DParkingInfo>): () => void;
627
677
  static parkingAt(instance: MahalMap, point: {
628
678
  x: number;
629
679
  y: number;
630
680
  }, tolerancePx?: number): IMaps3DParkingInfo | null;
631
- static onBuildingHover(instance: MahalMap, callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
681
+ static onBuildingHover(instance: MahalMap, callback: Maps3DListener<IMaps3DBuildingClickInfo>): () => void;
632
682
  static setHoverEnabled(instance: MahalMap, enabled: boolean): void;
633
683
  static setHoverStyle(instance: MahalMap, style: IMaps3DHoverStyle): void;
634
684
  static hoverBuilding(instance: MahalMap, id: number | string | null): boolean;
@@ -699,7 +749,11 @@ declare class MahalMap {
699
749
  onLayers(callback: (state: IMaps3DLayerState) => void): () => void;
700
750
  /** Пере-применить волю клиента ко всем слоям — после полной смены стиля. */
701
751
  refreshLayers(): void;
702
- /** Этажи, найденные в текущем виде карты. Пусто — данных по зданию нет. */
752
+ /**
753
+ * Этажи, найденные в текущем виде карты. Пусто — данных по зданию нет.
754
+ * С 0.11.0 они же приходят в onLayers() у слоя `indoor` (`params.levels`) — опрашивать
755
+ * этот метод на движении карты больше не нужно.
756
+ */
703
757
  getIndoorLevels(): number[];
704
758
  /** Переключить этаж. Нумерация OSM: 0 — первый наземный. */
705
759
  setIndoorLevel(level: number): void;
@@ -712,21 +766,32 @@ declare class MahalMap {
712
766
  */
713
767
  showPlace(lon: number, lat: number, level?: number | null, zoom?: number): void;
714
768
  /**
715
- * Клик по зданию: { id, height, props } либо null. Повторный вызов заменяет обработчик.
769
+ * Клик по зданию: { id, height, props, index } либо null. `index >= 0` — объёмный дом
770
+ * сцены, `-1` — дом из слоя стиля. Повторный вызов заменяет обработчик, `null` — отписка.
771
+ *
716
772
  * Подписываться можно сразу после create(), даже когда слой ещё не поднят
717
773
  * (`enable3D: false`) — подписка переиграется, как только слой появится.
774
+ *
775
+ * @returns Отписка. Снимает только эту подписку: если обработчик уже заменён
776
+ * следующим вызовом, ничего не делает.
718
777
  */
719
- onBuildingClick(callback: (info: IMaps3DBuildingClickInfo | null) => void): void;
778
+ onBuildingClick(callback: Maps3DListener<IMaps3DBuildingClickInfo>): () => void;
720
779
  /** Выделить здание по osm_id. `false` — здания сейчас нет в загруженных данных. */
721
780
  selectBuilding(id: number | string | null, style?: IMaps3DSelectionStyle): boolean;
722
781
  clearSelection(): void;
723
782
  selectedBuilding(): number | string | null;
783
+ /**
784
+ * Чем нарисовано выделение: `'scene'` — объёмный дом сцены, `'flat'` — слой стиля,
785
+ * `null` — выделения нет. На сборке Maps3D до 0.11.0 всегда `null`.
786
+ */
787
+ selectedBuildingKind(): Maps3DSelectionKind | null;
724
788
  setSelectionStyle(style: IMaps3DSelectionStyle): void;
725
789
  /**
726
790
  * Клик по дороге. Приходит независимо от клика по зданию — приоритет решает приложение.
727
- * Как и onBuildingClick, переживает отсутствие слоя на момент подписки.
791
+ * Как и onBuildingClick, переживает отсутствие слоя на момент подписки, принимает `null`
792
+ * и возвращает отписку.
728
793
  */
729
- onRoadClick(callback: (hit: IMaps3DRoadHit | null) => void): void;
794
+ onRoadClick(callback: Maps3DListener<IMaps3DRoadHit>): () => void;
730
795
  /** Дорога под точкой холста. Допуск по умолчанию — 12 px. */
731
796
  roadAt(point: {
732
797
  x: number;
@@ -737,8 +802,9 @@ declare class MahalMap {
737
802
  /**
738
803
  * Участок под курсором либо null. Зовётся ТОЛЬКО при смене участка, не на каждое
739
804
  * движение мыши. `null` вместо колбэка — отписаться и погасить подсветку.
805
+ * Переживает отсутствие слоя на момент подписки; возвращает отписку.
740
806
  */
741
- onParkingHover(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
807
+ onParkingHover(callback: Maps3DListener<IMaps3DParkingInfo>): () => void;
742
808
  /** Облик подсветки: color, opacity, outlineColor, outlineWidth, cursor. */
743
809
  setParkingHoverStyle(style: IMaps3DParkingHoverStyle): void;
744
810
  /** Вкл/выкл наведение, не теряя подписку. */
@@ -749,8 +815,11 @@ declare class MahalMap {
749
815
  hoverParking(id: number | string | null): boolean;
750
816
  /** `osm_id` подсвеченного участка или null. */
751
817
  hoveredParking(): number | string | null;
752
- /** Клик по участку: справка либо null. `null` вместо колбэка — отписаться. */
753
- onParkingClick(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
818
+ /**
819
+ * Клик по участку: справка либо null. `null` вместо колбэка — отписаться.
820
+ * Переживает отсутствие слоя на момент подписки; возвращает отписку.
821
+ */
822
+ onParkingClick(callback: Maps3DListener<IMaps3DParkingInfo>): () => void;
754
823
  /**
755
824
  * Парковка под точкой холста (`e.point` события карты). Попадание — по границе полигона;
756
825
  * допуск по умолчанию 0 — строго внутрь участка.
@@ -765,8 +834,10 @@ declare class MahalMap {
765
834
  *
766
835
  * Слежение за мышью включается самой подпиской: без неё SDK курсор не трогает и
767
836
  * разбор сцены не делает.
837
+ *
838
+ * @returns Отписка; снимает только эту подписку.
768
839
  */
769
- onBuildingHover(callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
840
+ onBuildingHover(callback: Maps3DListener<IMaps3DBuildingClickInfo>): () => void;
770
841
  /**
771
842
  * Включить/выключить наведение, не трогая подписку. Нужно там, где подсветка мешает:
772
843
  * режим рисования, открытая карточка объекта, тач-устройство без курсора.
@@ -787,6 +858,20 @@ declare class MahalMap {
787
858
  hoverBuilding(id: number | string | null): boolean;
788
859
  /** Идентификатор дома под наведением или `null`. */
789
860
  hoveredBuilding(): number | string | null;
861
+ /**
862
+ * Зум, с которого поднимается объём: `maps3d.minZoom` из опций create() — ровно то, что
863
+ * уходит в Maps3D, — либо умолчание самой Maps3D (16). Ответ не зависит от текущего
864
+ * зума, в отличие от `rendered` в состоянии слоя.
865
+ */
866
+ getBuildingsMinZoom(): number;
867
+ /**
868
+ * Занимает слот подписки. Запись живёт до подъёма слоя и переигрывается на нём;
869
+ * отписка снимает слот, только если он всё ещё её.
870
+ */
871
+ private subscribe;
872
+ private bindSubscription;
873
+ /** Снимает подписку со слоя: её же отпиской, а у сборок до 0.11.0 — через null. */
874
+ private unbindSubscription;
790
875
  /**
791
876
  * Создаёт слой Maps3D. `buildings` не форсируем в `true`: с 0.7.x видимостью объёма
792
877
  * заведует реестр слоёв, а опции облика зданий приходят из options.maps3d как есть.
@@ -848,7 +933,11 @@ declare function Router(param: number[][], typeData: string, token: string): Pro
848
933
 
849
934
  declare function Search(param: string, token: string, additionalParam?: IAdditionalParamType): Promise<ISearchResponse[]>;
850
935
  declare function SearchPoi(param: string, token: string, additionalParam?: IAdditionalParamType): Promise<ISearchResponse[]>;
851
- declare function SearchByLocation(params: ISearchByLocationParam): Promise<ISearchResponse>;
936
+ /**
937
+ * Обратный геокодинг. В отличие от Search/SearchPoi возвращает тело ответа целиком:
938
+ * `{ success, data: ISearchResponse[], message }` — объекты рядом с точкой, по `distance`.
939
+ */
940
+ declare function SearchByLocation(params: ISearchByLocationParam): Promise<IResponse<ISearchResponse[]>>;
852
941
  declare function CheckJSApi(token: string): Promise<ICheckJSApiResponse>;
853
942
 
854
943
  declare const index$2_CheckJSApi: typeof CheckJSApi;
@@ -1105,4 +1194,4 @@ declare namespace index {
1105
1194
  export { index_checkCoordinates as checkCoordinates, index_debounce as debounce, index_geojsonPolyline as geojsonPolyline, index_geometryPolyline as geometryPolyline, index_trimValue as trimValue };
1106
1195
  }
1107
1196
 
1108
- export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, type IMaps3DHoverStyle, type IMaps3DIndoorOptions, type IMaps3DLayer, type IMaps3DLayerOptions, type IMaps3DLayerParams, type IMaps3DLayerState, type IMaps3DMapOptionsInput, type IMaps3DMapOptionsResult, type IMaps3DObjectsLightOptions, type IMaps3DParkingHoverStyle, type IMaps3DParkingInfo, type IMaps3DPlacesOptions, type IMaps3DRoadHit, type IMaps3DSelectionStyle, type IMaps3DTrafficOptions, type IMaps3DTransformRequestOptions, type IResponse, type IRoute, type ISearchByLocationParam, type ISearchParam, type ISearchResponse, MahalMap, MahalMapDefaultMarker, type MahalMapDefaultMarkerProps, type MapEngine, type MapLanguage, type MapStyleFamily, type Maps3DBuildingDetail, type Maps3DCtor, type Maps3DLayerId, type Maps3DParkingSubtype, type Maps3DTerrainMode, type Maps3DThemeName, type Maps3DTransformRequest, type MeasureIcons, type MeasureLabels, type MeasureMode, type MeasurePoint, type MeasureShape, type MeasureState, type MeasureStyleOptions, MeasureTool, type MeasureToolOptions, Router, Search, SearchByLocation, SearchPoi, type Theme, index$2 as keyUtils, index$1 as measureUtils, index as utils };
1197
+ export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, type IMaps3DHoverStyle, type IMaps3DIndoorOptions, type IMaps3DLayer, type IMaps3DLayerOptions, type IMaps3DLayerParams, type IMaps3DLayerState, type IMaps3DLayerStateParams, type IMaps3DMapOptionsInput, type IMaps3DMapOptionsResult, type IMaps3DObjectsLightOptions, type IMaps3DParkingHoverStyle, type IMaps3DParkingInfo, type IMaps3DPlacesOptions, type IMaps3DRoadHit, type IMaps3DSelectionStyle, type IMaps3DTrafficOptions, type IMaps3DTransformRequestOptions, type IResponse, type IRoute, type ISearchByLocationParam, type ISearchDetailAddress, type ISearchDetailInfo, type ISearchParam, type ISearchResponse, MahalMap, MahalMapDefaultMarker, type MahalMapDefaultMarkerProps, type MapEngine, type MapLanguage, type MapStyleFamily, type Maps3DBuildingDetail, type Maps3DCtor, type Maps3DLayerId, type Maps3DListener, type Maps3DParkingSubtype, type Maps3DSelectionKind, type Maps3DTerrainMode, type Maps3DThemeName, type Maps3DTransformRequest, type MeasureIcons, type MeasureLabels, type MeasureMode, type MeasurePoint, type MeasureShape, type MeasureState, type MeasureStyleOptions, MeasureTool, type MeasureToolOptions, Router, Search, SearchByLocation, SearchPoi, type SearchResultType, type Theme, index$2 as keyUtils, index$1 as measureUtils, index as utils };