{"version":3,"file":"angular8-yandex-maps.mjs","sources":["../../../../libs/angular-yandex-maps-v2/src/lib/types/yandex-maps/index.ts","../../../../libs/angular-yandex-maps-v2/src/lib/utils/event-manager/event-manager.ts","../../../../libs/angular-yandex-maps-v2/src/lib/tokens/ya-config.ts","../../../../libs/angular-yandex-maps-v2/src/lib/utils/zone/zone.ts","../../../../libs/angular-yandex-maps-v2/src/lib/services/ya-api-loader/ya-api-loader.service.ts","../../../../libs/angular-yandex-maps-v2/src/lib/utils/generate-random-id/generate-random-id.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-map/ya-map.component.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-geoobject/ya-geoobject.directive.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-placemark/ya-placemark.directive.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-clusterer/ya-clusterer.component.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-control/ya-control.directive.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-multiroute/ya-multiroute.directive.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-object-manager/ya-object-manager.directive.ts","../../../../libs/angular-yandex-maps-v2/src/lib/components/ya-panorama/ya-panorama.directive.ts","../../../../libs/angular-yandex-maps-v2/src/lib/services/ya-geocoder/ya-geocoder.service.ts","../../../../libs/angular-yandex-maps-v2/src/index.ts","../../../../libs/angular-yandex-maps-v2/src/angular8-yandex-maps.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\ntype Prefix<Type, P> = {\r\n  [Property in keyof Type as `${string & P}${Capitalize<string & Property>}`]: Type[Property];\r\n};\r\n\r\n/**\r\n * Type definitions for Yandex.Maps.\r\n * Due to inactivity the typings were copied and improved from the DefinitelyTyped repository.\r\n * Definitions by: Delagen <https://github.com/Delagen> / gastwork13 <https://github.com/gastwork13>.\r\n * @link https://www.npmjs.com/package/@types/yandex-maps\r\n * @link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/concepts/About.html\r\n */\r\ndeclare global {\r\n  namespace ymaps {\r\n    interface IClassConstructor<T> {\r\n      superclass: any;\r\n\r\n      new (): T;\r\n    }\r\n\r\n    type ControlSingleKey =\r\n      | 'fullscreenControl'\r\n      | 'geolocationControl'\r\n      | 'routeEditor'\r\n      | 'rulerControl'\r\n      | 'searchControl'\r\n      | 'trafficControl'\r\n      | 'typeSelector'\r\n      | 'zoomControl'\r\n      | 'routeButtonControl'\r\n      | 'routePanelControl';\r\n\r\n    type ControlSetKey =\r\n      | 'smallMapDefaultSet'\r\n      | 'mediumMapDefaultSet'\r\n      | 'largeMapDefaultSet'\r\n      | 'default';\r\n\r\n    type ControlKey = ControlSingleKey | ControlSetKey;\r\n\r\n    type OverlayKey =\r\n      | 'default#placemark'\r\n      | 'default#pin'\r\n      | 'default#circle'\r\n      | 'default#rectangle'\r\n      | 'default#polyline'\r\n      | 'default#polygon'\r\n      | 'hotspot#placemark'\r\n      | 'hotspot#circle'\r\n      | 'hotspot#rectangle'\r\n      | 'hotspot#polyline'\r\n      | 'hotspot#polygon'\r\n      | 'html#balloon'\r\n      | 'html#hint'\r\n      | 'html#placemark'\r\n      | 'html#rectangle'\r\n      | string\r\n      | IClassConstructor<IOverlay>\r\n      | ((\r\n          geometry: IPixelLineStringGeometry,\r\n          data: IDataManager | object,\r\n          options: object,\r\n        ) => Promise<string | IClassConstructor<IOverlay>>);\r\n\r\n    type InteractivityModelKey =\r\n      | 'default#opaque'\r\n      | 'default#geoObject'\r\n      | 'default#layer'\r\n      | 'default#transparent'\r\n      | 'default#silent'\r\n      | string;\r\n\r\n    type PresetWithTextKey =\r\n      | 'islands#blueIcon'\r\n      | 'islands#darkGreenIcon'\r\n      | 'islands#redIcon'\r\n      | 'islands#violetIcon'\r\n      | 'islands#darkOrangeIcon'\r\n      | 'islands#blackIcon'\r\n      | 'islands#nightIcon'\r\n      | 'islands#yellowIcon'\r\n      | 'islands#darkBlueIcon'\r\n      | 'islands#greenIcon'\r\n      | 'islands#pinkIcon'\r\n      | 'islands#orangeIcon'\r\n      | 'islands#grayIcon'\r\n      | 'islands#lightBlueIcon'\r\n      | 'islands#brownIcon'\r\n      | 'islands#oliveIcon';\r\n\r\n    type PresetWithTextStretchyKey =\r\n      | 'islands#blueStretchyIcon'\r\n      | 'islands#darkGreenStretchyIcon'\r\n      | 'islands#redStretchyIcon'\r\n      | 'islands#violetStretchyIcon'\r\n      | 'islands#darkOrangeStretchyIcon'\r\n      | 'islands#blackStretchyIcon'\r\n      | 'islands#nightStretchyIcon'\r\n      | 'islands#yellowStretchyIcon'\r\n      | 'islands#darkBlueStretchyIcon'\r\n      | 'islands#greenStretchyIcon'\r\n      | 'islands#pinkStretchyIcon'\r\n      | 'islands#orangeStretchyIcon'\r\n      | 'islands#grayStretchyIcon'\r\n      | 'islands#lightBlueStretchyIcon'\r\n      | 'islands#brownStretchyIcon'\r\n      | 'islands#oliveStretchyIcon';\r\n\r\n    type PresetDotKey =\r\n      | 'islands#blueDotIcon'\r\n      | 'islands#darkGreenDotIcon'\r\n      | 'islands#redDotIcon'\r\n      | 'islands#violetDotIcon'\r\n      | 'islands#darkOrangeDotIcon'\r\n      | 'islands#blackDotIcon'\r\n      | 'islands#nightDotIcon'\r\n      | 'islands#yellowDotIcon'\r\n      | 'islands#darkBlueDotIcon'\r\n      | 'islands#greenDotIcon'\r\n      | 'islands#pinkDotIcon'\r\n      | 'islands#orangeDotIcon'\r\n      | 'islands#grayDotIcon'\r\n      | 'islands#lightBlueDotIcon'\r\n      | 'islands#brownDotIcon'\r\n      | 'islands#oliveDotIcon';\r\n\r\n    type PresetCircleKey =\r\n      | 'islands#blueCircleIcon'\r\n      | 'islands#darkGreenCircleIcon'\r\n      | 'islands#redCircleIcon'\r\n      | 'islands#violetCircleIcon'\r\n      | 'islands#darkOrangeCircleIcon'\r\n      | 'islands#blackCircleIcon'\r\n      | 'islands#nightCircleIcon'\r\n      | 'islands#yellowCircleIcon'\r\n      | 'islands#darkBlueCircleIcon'\r\n      | 'islands#greenCircleIcon'\r\n      | 'islands#pinkCircleIcon'\r\n      | 'islands#orangeCircleIcon'\r\n      | 'islands#grayCircleIcon'\r\n      | 'islands#lightBlueCircleIcon'\r\n      | 'islands#brownCircleIcon'\r\n      | 'islands#oliveCircleIcon';\r\n\r\n    type PresetCircleDotKey =\r\n      | 'islands#blueCircleDotIcon'\r\n      | 'islands#darkGreenCircleDotIcon'\r\n      | 'islands#redCircleDotIcon'\r\n      | 'islands#violetCircleDotIcon'\r\n      | 'islands#darkOrangeCircleDotIcon'\r\n      | 'islands#blackCircleDotIcon'\r\n      | 'islands#nightCircleDotIcon'\r\n      | 'islands#yellowCircleDotIcon'\r\n      | 'islands#darkBlueCircleDotIcon'\r\n      | 'islands#greenCircleDotIcon'\r\n      | 'islands#pinkCircleDotIcon'\r\n      | 'islands#orangeCircleDotIcon'\r\n      | 'islands#grayCircleDotIcon'\r\n      | 'islands#lightBlueCircleDotIcon'\r\n      | 'islands#brownCircleDotIcon'\r\n      | 'islands#oliveCircleDotIcon';\r\n\r\n    type PresetWithIconKey =\r\n      | 'islands#blueAirportIcon'\r\n      | 'islands#blueAttentionIcon'\r\n      | 'islands#blueAutoIcon'\r\n      | 'islands#blueBarIcon'\r\n      | 'islands#blueBarberIcon'\r\n      | 'islands#blueBeachIcon'\r\n      | 'islands#blueBicycleIcon'\r\n      | 'islands#blueBicycle2Icon'\r\n      | 'islands#blueBookIcon'\r\n      | 'islands#blueCarWashIcon'\r\n      | 'islands#blueChristianIcon'\r\n      | 'islands#blueCinemaIcon'\r\n      | 'islands#blueCircusIcon'\r\n      | 'islands#blueCourtIcon'\r\n      | 'islands#blueDeliveryIcon'\r\n      | 'islands#blueDiscountIcon'\r\n      | 'islands#blueDogIcon'\r\n      | 'islands#blueEducationIcon'\r\n      | 'islands#blueEntertainmentCenterIcon'\r\n      | 'islands#blueFactoryIcon'\r\n      | 'islands#blueFamilyIcon'\r\n      | 'islands#blueFashionIcon'\r\n      | 'islands#blueFoodIcon'\r\n      | 'islands#blueFuelStationIcon'\r\n      | 'islands#blueGardenIcon'\r\n      | 'islands#blueGovernmentIcon'\r\n      | 'islands#blueHeartIcon'\r\n      | 'islands#blueHomeIcon'\r\n      | 'islands#blueHotelIcon'\r\n      | 'islands#blueHydroIcon'\r\n      | 'islands#blueInfoIcon'\r\n      | 'islands#blueLaundryIcon'\r\n      | 'islands#blueLeisureIcon'\r\n      | 'islands#blueMassTransitIcon'\r\n      | 'islands#blueMedicalIcon'\r\n      | 'islands#blueMoneyIcon'\r\n      | 'islands#blueMountainIcon'\r\n      | 'islands#blueNightClubIcon'\r\n      | 'islands#blueObservationIcon'\r\n      | 'islands#blueParkIcon'\r\n      | 'islands#blueParkingIcon'\r\n      | 'islands#bluePersonIcon'\r\n      | 'islands#bluePocketIcon'\r\n      | 'islands#bluePoolIcon'\r\n      | 'islands#bluePostIcon'\r\n      | 'islands#blueRailwayIcon'\r\n      | 'islands#blueRapidTransitIcon'\r\n      | 'islands#blueRepairShopIcon'\r\n      | 'islands#blueRunIcon'\r\n      | 'islands#blueScienceIcon'\r\n      | 'islands#blueShoppingIcon'\r\n      | 'islands#blueSouvenirsIcon'\r\n      | 'islands#blueSportIcon'\r\n      | 'islands#blueStarIcon'\r\n      | 'islands#blueTheaterIcon'\r\n      | 'islands#blueToiletIcon'\r\n      | 'islands#blueUnderpassIcon'\r\n      | 'islands#blueVegetationIcon'\r\n      | 'islands#blueVideoIcon'\r\n      | 'islands#blueWasteIcon'\r\n      | 'islands#blueWaterParkIcon'\r\n      | 'islands#blueWaterwayIcon'\r\n      | 'islands#blueWorshipIcon'\r\n      | 'islands#blueZooIcon';\r\n\r\n    type PresetWithIconCircleKey =\r\n      | 'islands#blueHomeCircleIcon'\r\n      | 'islands#blueScienceCircleIcon'\r\n      | 'islands#blueAirportCircleIcon'\r\n      | 'islands#blueAttentionCircleIcon'\r\n      | 'islands#blueAutoCircleIcon'\r\n      | 'islands#blueBarCircleIcon'\r\n      | 'islands#blueBarberCircleIcon'\r\n      | 'islands#blueBeachCircleIcon'\r\n      | 'islands#blueBicycleCircleIcon'\r\n      | 'islands#blueBicycle2CircleIcon'\r\n      | 'islands#blueBookCircleIcon'\r\n      | 'islands#blueCarWashCircleIcon'\r\n      | 'islands#blueChristianCircleIcon'\r\n      | 'islands#blueCinemaCircleIcon'\r\n      | 'islands#blueCircusCircleIcon'\r\n      | 'islands#blueCourtCircleIcon'\r\n      | 'islands#blueDeliveryCircleIcon'\r\n      | 'islands#blueDiscountCircleIcon'\r\n      | 'islands#blueDogCircleIcon'\r\n      | 'islands#blueEducationCircleIcon'\r\n      | 'islands#blueEntertainmentCenterCircleIcon'\r\n      | 'islands#blueFactoryCircleIcon'\r\n      | 'islands#blueFamilyCircleIcon'\r\n      | 'islands#blueFashionCircleIcon'\r\n      | 'islands#blueFoodCircleIcon'\r\n      | 'islands#blueFuelStationCircleIcon'\r\n      | 'islands#blueGardenCircleIcon'\r\n      | 'islands#blueGovernmentCircleIcon'\r\n      | 'islands#blueHeartCircleIcon'\r\n      | 'islands#blueHotelCircleIcon'\r\n      | 'islands#blueHydroCircleIcon'\r\n      | 'islands#blueInfoCircleIcon'\r\n      | 'islands#blueLaundryCircleIcon'\r\n      | 'islands#blueLeisureCircleIcon'\r\n      | 'islands#blueMassTransitCircleIcon'\r\n      | 'islands#blueMedicalCircleIcon'\r\n      | 'islands#blueMoneyCircleIcon'\r\n      | 'islands#blueMountainCircleIcon'\r\n      | 'islands#blueNightClubCircleIcon'\r\n      | 'islands#blueObservationCircleIcon'\r\n      | 'islands#blueParkCircleIcon'\r\n      | 'islands#blueParkingCircleIcon'\r\n      | 'islands#bluePersonCircleIcon'\r\n      | 'islands#bluePocketCircleIcon'\r\n      | 'islands#bluePoolCircleIcon'\r\n      | 'islands#bluePostCircleIcon'\r\n      | 'islands#blueRailwayCircleIcon'\r\n      | 'islands#blueRapidTransitCircleIcon'\r\n      | 'islands#blueRepairShopCircleIcon'\r\n      | 'islands#blueRunCircleIcon'\r\n      | 'islands#blueShoppingCircleIcon'\r\n      | 'islands#blueSouvenirsCircleIcon'\r\n      | 'islands#blueSportCircleIcon'\r\n      | 'islands#blueStarCircleIcon'\r\n      | 'islands#blueTheaterCircleIcon'\r\n      | 'islands#blueToiletCircleIcon'\r\n      | 'islands#blueUnderpassCircleIcon'\r\n      | 'islands#blueVegetationCircleIcon'\r\n      | 'islands#blueVideoCircleIcon'\r\n      | 'islands#blueWasteCircleIcon'\r\n      | 'islands#blueWaterParkCircleIcon'\r\n      | 'islands#blueWaterwayCircleIcon'\r\n      | 'islands#blueWorshipCircleIcon'\r\n      | 'islands#blueZooCircleIcon';\r\n\r\n    type PresetPictogramKey = 'islands#geolocationIcon';\r\n\r\n    type PresetClusterKey =\r\n      | 'islands#blueClusterIcons'\r\n      | 'islands#invertedBlueClusterIcons'\r\n      | 'islands#redClusterIcons'\r\n      | 'islands#invertedRedClusterIcons'\r\n      | 'islands#darkOrangeClusterIcons'\r\n      | 'islands#invertedDarkOrangeClusterIcons'\r\n      | 'islands#nightClusterIcons'\r\n      | 'islands#invertedNightClusterIcons'\r\n      | 'islands#darkBlueClusterIcons'\r\n      | 'islands#invertedDarkBlueClusterIcons'\r\n      | 'islands#pinkClusterIcons'\r\n      | 'islands#invertedPinkClusterIcons'\r\n      | 'islands#grayClusterIcons'\r\n      | 'islands#invertedGrayClusterIcons'\r\n      | 'islands#brownClusterIcons'\r\n      | 'islands#invertedBrownClusterIcons'\r\n      | 'islands#darkGreenClusterIcons'\r\n      | 'islands#invertedDarkGreenClusterIcons'\r\n      | 'islands#violetClusterIcons'\r\n      | 'islands#invertedVioletClusterIcons'\r\n      | 'islands#blackClusterIcons'\r\n      | 'islands#invertedBlackClusterIcons'\r\n      | 'islands#yellowClusterIcons'\r\n      | 'islands#invertedYellowClusterIcons'\r\n      | 'islands#greenClusterIcons'\r\n      | 'islands#invertedGreenClusterIcons'\r\n      | 'islands#orangeClusterIcons'\r\n      | 'islands#invertedOrangeClusterIcons'\r\n      | 'islands#lightBlueClusterIcons'\r\n      | 'islands#invertedLightBlueClusterIcons'\r\n      | 'islands#oliveClusterIcons'\r\n      | 'islands#invertedOliveClusterIcons';\r\n\r\n    type PresetKey =\r\n      | PresetWithTextKey\r\n      | PresetWithTextStretchyKey\r\n      | PresetDotKey\r\n      | PresetCircleKey\r\n      | PresetCircleDotKey\r\n      | PresetWithIconKey\r\n      | PresetWithIconCircleKey\r\n      | PresetPictogramKey\r\n      | PresetClusterKey\r\n      | string;\r\n\r\n    type IconLayoutKey = 'default#image' | 'default#imageWithContent' | string;\r\n\r\n    type ClusterLayoutKey =\r\n      | 'cluster#balloonTwoColumns'\r\n      | 'cluster#balloonCarousel'\r\n      | 'cluster#balloonAccordion'\r\n      | string;\r\n\r\n    type ClusterContentLayoutKey =\r\n      | 'cluster#balloonTwoColumnsItemContent'\r\n      | 'cluster#balloonCarouselItemContent'\r\n      | 'cluster#balloonAccordionItemContent'\r\n      | string;\r\n\r\n    type EventMap = GlobalEventHandlersEventMap;\r\n\r\n    namespace behavior {\r\n      class DblClickZoom implements IBehavior {\r\n        constructor(options?: IDblClickZoomOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): IControlParent | null;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IDblClickZoomOptions extends IMapMarginOptions {\r\n        centering?: boolean;\r\n        duration?: number;\r\n      }\r\n\r\n      class Drag implements IBehavior {\r\n        constructor(options?: IDragOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IDragOptions {\r\n        actionCursor?: string;\r\n        cursor?: string;\r\n        inertia?: boolean;\r\n        inertiaDuration?: number;\r\n        tremor?: number;\r\n      }\r\n\r\n      class LeftMouseButtonMagnifier implements IBehavior {\r\n        constructor(options?: ILeftMouseButtonMagnifierOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface ILeftMouseButtonMagnifierOptions {\r\n        actionCursor?: string;\r\n        cursor?: string;\r\n        duration?: number;\r\n      }\r\n\r\n      class MultiTouch implements IBehavior {\r\n        constructor(options?: IMultiTouchOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IMultiTouchOptions {\r\n        tremor?: number;\r\n      }\r\n\r\n      class RightMouseButtonMagnifier implements IBehavior {\r\n        constructor(options?: IRightMouseButtonMagnifierOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IRightMouseButtonMagnifierOptions {\r\n        actionCursor?: string;\r\n        duration?: number;\r\n      }\r\n\r\n      class RouteEditor implements IBehavior {\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n\r\n        getRoute(): router.Route;\r\n\r\n        getState(): string;\r\n\r\n        setState(state: string | null): void;\r\n      }\r\n\r\n      class Ruler implements IBehavior {\r\n        constructor(options?: IRulerOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n\r\n        close(): boolean;\r\n\r\n        getState(): string;\r\n\r\n        setState(state: string | null): void;\r\n      }\r\n\r\n      interface IRulerOptions {\r\n        balloonAutoPan?: boolean;\r\n      }\r\n\r\n      class ScrollZoom implements IBehavior {\r\n        constructor(options?: IScrollZoomOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IScrollZoomOptions {\r\n        maximumDelta?: number;\r\n        speed?: number;\r\n      }\r\n\r\n      const storage: util.Storage;\r\n    }\r\n\r\n    namespace clusterer {\r\n      class Balloon implements IBalloonManager<Clusterer> {\r\n        constructor(clusterer: Clusterer);\r\n\r\n        events: IEventManager;\r\n\r\n        autoPan(): Promise<Clusterer>;\r\n\r\n        close(force?: boolean): Promise<Clusterer>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(): boolean;\r\n\r\n        open(\r\n          position?: number[],\r\n          data?: object | string | HTMLElement,\r\n          options?: object,\r\n        ): Promise<Clusterer>;\r\n\r\n        setData(data: object | string | HTMLElement): Promise<Clusterer>;\r\n\r\n        setOptions(options: object): Promise<Clusterer>;\r\n\r\n        setPosition(position: number[]): Promise<Clusterer>;\r\n      }\r\n\r\n      class Hint implements IHintManager<Clusterer> {\r\n        constructor(clusterer: Clusterer);\r\n\r\n        events: IEventManager;\r\n\r\n        close(force?: boolean): Promise<Clusterer>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(): boolean;\r\n\r\n        open(\r\n          position?: number[],\r\n          data?: object | string | HTMLElement,\r\n          options?: object,\r\n        ): Promise<Clusterer>;\r\n\r\n        setData(data: object | string | HTMLElement): Promise<Clusterer>;\r\n\r\n        setOptions(options: object): Promise<Clusterer>;\r\n\r\n        setPosition(position: number[]): Promise<Clusterer>;\r\n      }\r\n    }\r\n\r\n    namespace collection {\r\n      class Item implements IChildOnMap, ICustomizable, IEventEmitter, IParentOnMap {\r\n        constructor(options?: object);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n\r\n        getMap(): Map;\r\n\r\n        onAddToMap(map: Map): void;\r\n\r\n        onRemoveFromMap(oldMap: Map): void;\r\n      }\r\n    }\r\n\r\n    namespace control {\r\n      class Button implements ICustomizable, ISelectableControl {\r\n        constructor(parameters?: IButtonParameters | string);\r\n\r\n        data: data.Manager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        press: Event;\r\n\r\n        state: data.Manager;\r\n\r\n        deselect(): void;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        getMap(): Map;\r\n\r\n        getParent(): IControlParent | null;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        isSelected(): boolean;\r\n\r\n        select(): void;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IButtonParameters {\r\n        data?: {\r\n          content?: string;\r\n          image?: string;\r\n          title?: string;\r\n        };\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          layout?: IClassConstructor<ISelectableControlLayout> | string;\r\n          maxWidth?: number[][] | number[] | number;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          selectOnClick?: boolean;\r\n          size?: 'auto' | 'small' | 'medium' | 'large';\r\n          visible?: boolean;\r\n        };\r\n        state?: {\r\n          enabled?: boolean;\r\n          selected?: boolean;\r\n        };\r\n      }\r\n\r\n      class FullscreenControl extends Button {\r\n        constructor(parameters?: IFullscreenControlParameters);\r\n\r\n        enterFullscreen(): void;\r\n\r\n        exitFullscreen(): void;\r\n      }\r\n\r\n      interface IFullscreenControlParameters {\r\n        data?: {\r\n          title?: string;\r\n        };\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          layout?: IClassConstructor<ISelectableControlLayout> | string;\r\n          maxWidth?: number[][] | number[] | number;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          visible?: boolean;\r\n        };\r\n        state?: {\r\n          enabled?: boolean;\r\n          selected?: boolean;\r\n        };\r\n      }\r\n\r\n      class GeolocationControl extends Button {\r\n        constructor(parameters?: IGeolocationControlParameters);\r\n      }\r\n\r\n      interface IGeolocationControlParameters extends IButtonParameters {\r\n        data?: {\r\n          image?: string;\r\n          title?: string;\r\n        };\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          maxWidth?: number[][] | number[] | number;\r\n          noPlacemark?: boolean;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          visible?: boolean;\r\n          useMapMargin?: boolean;\r\n        };\r\n        state?: Record<string, any>;\r\n      }\r\n\r\n      class ListBox implements ICollection, IControl, ICustomizable {\r\n        constructor(parameters?: IListBoxParameters);\r\n\r\n        data: data.Manager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: data.Manager;\r\n\r\n        add(object: Record<string, any>): this;\r\n\r\n        collapse(): this;\r\n\r\n        expand(): this;\r\n\r\n        get(value: any): this;\r\n\r\n        getIterator(): IIterator;\r\n\r\n        getMap(): Map;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        isExpanded(): boolean;\r\n\r\n        remove(object: Record<string, any>): this;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IListBoxParameters {\r\n        data?: {\r\n          content?: string;\r\n          image?: string;\r\n          title?: string;\r\n        };\r\n        items?: IControl[];\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          collapseOnBlur?: boolean;\r\n          expandOnClick?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          layout?: IClassConstructor<ISelectableControlLayout> | string;\r\n          maxWidth?: number[][] | number[] | number;\r\n          popupFloat?: string;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          visible?: boolean;\r\n        };\r\n        state?: {\r\n          expanded?: boolean;\r\n          filters?: any;\r\n        };\r\n      }\r\n\r\n      class ListBoxItem implements ICustomizable, ISelectableControl {\r\n        constructor(parameters?: IListBoxItemParameters | string);\r\n\r\n        data: data.Manager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: data.Manager;\r\n\r\n        deselect(): void;\r\n\r\n        disable(): void;\r\n\r\n        enable(): void;\r\n\r\n        getMap(): Map;\r\n\r\n        getParent(): IControlParent | null;\r\n\r\n        isEnabled(): boolean;\r\n\r\n        isSelected(): boolean;\r\n\r\n        select(): void;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IListBoxItemParameters {\r\n        data?: {\r\n          content?: string;\r\n        };\r\n        options?: {\r\n          layout?: string | IClassConstructor<ISelectableControlLayout>;\r\n          selectableLayout?: string | IClassConstructor<ISelectableControlLayout>;\r\n          selectOnClick?: boolean;\r\n          separatorLayout?: string | IClassConstructor<ISelectableControlLayout>;\r\n          type?: 'selectable' | 'separator';\r\n          visible?: boolean;\r\n        };\r\n        state?: {\r\n          selected?: boolean;\r\n        };\r\n      }\r\n\r\n      class Manager {\r\n        constructor(map: Map, controls?: string[] | IControl[], options?: IManagerOptions);\r\n\r\n        events: event.Manager;\r\n\r\n        options: option.Manager;\r\n\r\n        state: data.Manager;\r\n\r\n        add(control: IControl | ControlKey, options?: Record<string, unknown>): this;\r\n\r\n        each(callback: (control: IControl) => void, context?: Record<string, any>): this;\r\n\r\n        get(index: number | string): any;\r\n\r\n        getChildElement(control: IControl): Promise<HTMLElement>;\r\n\r\n        getContainer(): HTMLElement;\r\n\r\n        getMap(): Map;\r\n\r\n        indexOf(childToFind: IControl | string): number;\r\n\r\n        remove(control: IControl | string): this;\r\n      }\r\n\r\n      interface IManagerOptions {\r\n        margin?: number;\r\n        pane?: IPane;\r\n        states?: string[];\r\n      }\r\n\r\n      class RouteButton implements IControl, ICustomizable {\r\n        constructor(parameters?: IRouteButtonParameters);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        routePanel: IRoutePanel;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IRouteButtonParameters {\r\n        lazy?: boolean;\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          autofocus?: boolean;\r\n          collapseOnBlur?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          popupAnimate?: boolean;\r\n          popupFloat?: 'auto' | 'left' | 'right';\r\n          popupWidth?: string;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          size?: 'auto' | 'small' | 'medium' | 'large';\r\n          visible?: boolean;\r\n        };\r\n        state?: {\r\n          expanded?: boolean;\r\n        };\r\n      }\r\n\r\n      class RouteEditor extends Button {\r\n        constructor(parameters?: IRouteEditorParameters);\r\n\r\n        getRoute(): router.Route;\r\n      }\r\n\r\n      interface IRouteEditorParameters {\r\n        data?: {\r\n          image?: string;\r\n          title?: string;\r\n        };\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          layout?: IClassConstructor<ISelectableControlLayout> | string;\r\n          maxWidth?: number[][] | number[] | number;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          visible?: boolean;\r\n        };\r\n        state?: Record<string, any>;\r\n      }\r\n\r\n      class RoutePanel implements IControl, ICustomizable {\r\n        constructor(parameters?: IRoutePanelParameters);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        routePanel: IRoutePanel;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IRoutePanelParameters {\r\n        options?: {\r\n          autofocus?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          maxWidth?: string;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          showHeader?: boolean;\r\n          title?: string;\r\n          visible?: boolean;\r\n          [key: string]: any;\r\n        };\r\n        state?: Record<string, any>;\r\n      }\r\n\r\n      class RulerControl extends Button {\r\n        constructor(parameters?: IRulerControlParameters);\r\n      }\r\n\r\n      interface IRulerControlParameters {\r\n        data?: Record<string, any>;\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          scaleLine?: boolean;\r\n          visible?: boolean;\r\n        };\r\n        state?: Record<string, any>;\r\n      }\r\n\r\n      class SearchControl implements IControl, ICustomizable {\r\n        constructor(parameters?: ISearchControlParameters);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: data.Manager;\r\n\r\n        clear(): void;\r\n\r\n        getMap(): Map;\r\n\r\n        getParent(): IControlParent | null;\r\n\r\n        getRequestString(): string;\r\n\r\n        getResponseMetaData(): Record<string, any>;\r\n\r\n        getResult(index: number): vow.Promise;\r\n\r\n        getResultsArray(): Record<string, any>[];\r\n\r\n        getResultsCount(): number;\r\n\r\n        getSelectedIndex(): number;\r\n\r\n        hideResult(): void;\r\n\r\n        search(request: string): vow.Promise;\r\n\r\n        setParent(parent: IControlParent): this;\r\n\r\n        showResult(index: number): this;\r\n      }\r\n\r\n      interface ISearchControlParameters {\r\n        data?: Record<string, any>;\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          boundedBy?: number[][];\r\n          fitMaxWidth?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex?: number;\r\n          formLayout?: string | IClassConstructor<ILayout>;\r\n          kind?: 'house' | 'street' | 'metro' | 'district' | 'locality';\r\n          layout?: string | IClassConstructor<ISearchControlLayout>;\r\n          maxWidth?: number[][] | number[] | number;\r\n          noCentering?: boolean;\r\n          noPlacemark?: boolean;\r\n          noPopup?: boolean;\r\n          noSelect?: boolean;\r\n          noSuggestPanel?: boolean;\r\n          placeholderContent?: string;\r\n          popupItemLayout?: string | IClassConstructor<ILayout>;\r\n          popupLayout?: string | IClassConstructor<ILayout>;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          provider?: IGeocodeProvider | 'yandex#map' | 'yandex#search';\r\n          searchCoordOrder?: 'latlong' | 'longlat';\r\n          size?: 'auto' | 'small' | 'medium' | 'large';\r\n          strictBounds?: boolean;\r\n          suppressYandexSearch?: boolean;\r\n          useMapBounds?: boolean;\r\n          zoomMargin?: number;\r\n          visible?: boolean;\r\n          useMapMargin?: boolean;\r\n        };\r\n        state?: Record<string, any>;\r\n      }\r\n\r\n      const storage: util.Storage;\r\n\r\n      class TrafficControl implements IControl, ICustomizable {\r\n        constructor(parameters?: ITrafficControlParameters);\r\n\r\n        data: data.Manager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: data.Manager;\r\n\r\n        collapse(): void;\r\n\r\n        expand(): void;\r\n\r\n        getMap(): Map;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        getProvider(key: TrafficControlProviderKey): ITrafficProvider;\r\n\r\n        hideTraffic(): void;\r\n\r\n        isExpanded(): boolean;\r\n\r\n        isTrafficShown(): boolean;\r\n\r\n        setParent(parent: IControlParent): this;\r\n\r\n        showTraffic(): void;\r\n      }\r\n\r\n      type TrafficControlProviderKey = 'traffic#actual' | 'traffic#archive';\r\n\r\n      interface ITrafficProvider extends ICustomizable, IEventEmitter {\r\n        getMap(): Map | null;\r\n\r\n        setMap(map: Map): void;\r\n      }\r\n\r\n      interface ITrafficControlParameters {\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          collapseOnBlur?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex: number;\r\n          layout?: string | IClassConstructor<ITrafficControlLayout>;\r\n          maxWidth?: number | number[];\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          size?: string;\r\n          visible?: boolean;\r\n        };\r\n        state?: {\r\n          providerKey?: TrafficControlProviderKey;\r\n          trafficShown?: boolean;\r\n        };\r\n      }\r\n\r\n      class TypeSelector extends ListBox {\r\n        constructor(parameters?: string[] | MapType[] | ITypeSelectorParameters);\r\n\r\n        addMapType(mapType: string | MapType, positionIndex?: number): this;\r\n\r\n        removeAllMapTypes(): this;\r\n\r\n        removeMapType(mapType: string | MapType): this;\r\n      }\r\n\r\n      interface ITypeSelectorParameters {\r\n        mapTypes?: string[] | MapType[];\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          collapseOnBlur?: boolean;\r\n          collapseTimeout?: number;\r\n          expandOnClick?: boolean;\r\n          float?: 'none' | 'left' | 'right';\r\n          floatIndex: number;\r\n          layout?: string | IClassConstructor<ISelectableControlLayout>;\r\n          maxWidth?: number | number[];\r\n          panoramasItemMode?: 'on' | 'ifMercator' | 'off';\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          visible?: boolean;\r\n        };\r\n        state?: {\r\n          expanded: boolean;\r\n        };\r\n      }\r\n\r\n      class ZoomControl implements IControl, ICustomizable {\r\n        constructor(parameters?: IZoomControlParameters);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        getMap(): Map;\r\n\r\n        getParent(): IControlParent | null;\r\n\r\n        setParent(parent: IControlParent): this;\r\n      }\r\n\r\n      interface IZoomControlParameters {\r\n        data?: Record<string, any>;\r\n        options?: {\r\n          adjustMapMargin?: boolean;\r\n          layout?: string | IClassConstructor<IZoomControlLayout>;\r\n          position?: {\r\n            bottom?: number | string;\r\n            left?: number | string;\r\n            right?: number | string;\r\n            top?: number | string;\r\n          };\r\n          size?: string;\r\n          visible?: boolean;\r\n          zoomDuration?: number;\r\n          zoomStep?: number;\r\n        };\r\n        state?: Record<string, any>;\r\n      }\r\n    }\r\n\r\n    namespace data {\r\n      class Manager implements IDataManager, IFreezable {\r\n        constructor(data?: Record<string, any>);\r\n\r\n        events: IEventManager;\r\n\r\n        get(path: string, defaultValue?: any): any;\r\n\r\n        getAll(): Record<string, any>;\r\n\r\n        set(path: Record<string, any> | string, value?: any): this;\r\n\r\n        setAll(): this;\r\n\r\n        unset(path: string | string[]): this;\r\n\r\n        unsetAll(): this;\r\n\r\n        freeze(): IFreezable;\r\n\r\n        isFrozen(): boolean;\r\n\r\n        unfreeze(): IFreezable;\r\n\r\n        add(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        getParent(): IEventManager | null;\r\n\r\n        group(): IEventGroup;\r\n\r\n        remove(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        setParent(parent: IEventManager | null): this;\r\n\r\n        fire(type: string, eventObject: object | IEvent): this;\r\n      }\r\n    }\r\n\r\n    namespace domEvent {\r\n      interface Manager {\r\n        add<K extends keyof EventMap>(\r\n          htmlElement: HTMLElement | Document,\r\n          types: K,\r\n          callback: (event: EventMap[K]) => void,\r\n          context?: object,\r\n          capture?: boolean,\r\n        ): this;\r\n\r\n        add(\r\n          htmlElement: HTMLElement | Document,\r\n          types: string[] | string,\r\n          callback: (event: any) => void,\r\n          context?: object,\r\n          capture?: boolean,\r\n        ): this;\r\n\r\n        group(htmlElement: HTMLElement | Document, capture?: boolean): event.Group;\r\n\r\n        remove(\r\n          htmlElement: HTMLElement | Document,\r\n          types: string[] | string,\r\n          callback: ((event: any) => void) | string,\r\n          context?: object,\r\n          capture?: boolean,\r\n        ): this;\r\n      }\r\n\r\n      const manager: Manager;\r\n    }\r\n\r\n    namespace event {\r\n      class Group implements IEventGroup {\r\n        events: IEventManager;\r\n\r\n        add<K extends keyof EventMap>(\r\n          types: K,\r\n          callback: (event: EventMap[K] | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n        add(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        remove(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        removeAll(): this;\r\n\r\n        getLength(): number;\r\n      }\r\n\r\n      class Manager<TargetGeometry = object> implements IEventManager<TargetGeometry> {\r\n        constructor(params?: {\r\n          context?: object | undefined;\r\n          controllers?: IEventWorkflowController[] | undefined;\r\n          parent?: IEventManager | undefined;\r\n        });\r\n\r\n        add(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        getParent(): IEventManager | null;\r\n\r\n        group(): IEventGroup;\r\n\r\n        remove(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        setParent(parent: IEventManager | null): this;\r\n\r\n        fire(type: string, eventObject: object | IEvent): this;\r\n\r\n        createEventObject(type: string, event: object, target: object): Event;\r\n\r\n        once(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: IEvent) => any,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n      }\r\n\r\n      class Mapper implements IEventTrigger {\r\n        constructor(\r\n          targetEventManager: IEventManager,\r\n          mappingTable: Record<string, ((event: IEvent) => IEvent | null) | boolean>,\r\n        );\r\n\r\n        fire(type: string, eventObject?: object | IEvent): this;\r\n      }\r\n    }\r\n\r\n    namespace geometry {\r\n      namespace base {\r\n        class LineString implements IBaseLineStringGeometry {\r\n          events: IEventManager;\r\n\r\n          static fromEncodedCoordinates(encodedCoordinates: string): geometry.LineString;\r\n\r\n          static toEncodedCoordinates(geometry: geometry.LineString): string;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getType(): string;\r\n\r\n          get(index: number): number[];\r\n\r\n          getChildGeometry(index: number): IPointGeometryAccess;\r\n\r\n          getClosest(anchorPosition: number[]): object;\r\n\r\n          getCoordinates(): number[][];\r\n\r\n          getLength(): number;\r\n\r\n          insert(index: number, coordinates: number[][]): ILineStringGeometryAccess;\r\n\r\n          remove(index: number): number[];\r\n\r\n          remove(\r\n            types: string[][] | string[] | string,\r\n            callback: (event: object | IEvent) => void,\r\n            context?: object,\r\n            priority?: number,\r\n          ): this;\r\n\r\n          set(index: number, coordinates: number[]): ILineStringGeometryAccess;\r\n\r\n          setCoordinates(coordinates: number[][]): ILineStringGeometryAccess;\r\n\r\n          splice(index: number, length: number): number[][];\r\n\r\n          freeze(): IFreezable;\r\n\r\n          isFrozen(): boolean;\r\n\r\n          unfreeze(): IFreezable;\r\n\r\n          add(\r\n            types: string[][] | string[] | string,\r\n            callback: (event: object | IEvent) => void,\r\n            context?: object,\r\n            priority?: number,\r\n          ): this;\r\n\r\n          getParent(): object | null;\r\n\r\n          group(): IEventGroup;\r\n\r\n          setParent(parent: IEventManager | null): this;\r\n\r\n          fire(type: string, eventObject: object | IEvent): this;\r\n        }\r\n\r\n        class Point implements IBasePointGeometry {\r\n          events: IEventManager;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getType(): string;\r\n\r\n          getCoordinates(): number[] | null;\r\n\r\n          setCoordinates(coordinates: number[] | null): this;\r\n        }\r\n\r\n        class Polygon implements IBasePointGeometry {\r\n          constructor(coordinates?: number[][][], fillRule?: 'evenOdd' | 'nonZero');\r\n\r\n          events: IEventManager;\r\n\r\n          static fromEncodedCoordinates(encodedCoordinates: string): Polygon;\r\n\r\n          static toEncodedCoordinates(geometry: Polygon): string;\r\n\r\n          contains(position: number[]): boolean;\r\n\r\n          freeze(): IFreezable;\r\n\r\n          get(index: number): number[][];\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getChildGeometry(index: number): ILinearRingGeometryAccess;\r\n\r\n          getClosest(anchorPosition: number[]): object;\r\n\r\n          getCoordinates(): number[] | null;\r\n\r\n          getFillRule(): 'evenOdd' | 'nonZero';\r\n\r\n          getLength(): number;\r\n\r\n          getType(): string;\r\n\r\n          insert(index: number, path: number[][]): IPolygonGeometryAccess;\r\n\r\n          isFrozen(): boolean;\r\n\r\n          remove(index: number): ILinearRingGeometryAccess;\r\n\r\n          set(index: number, path: number[][]): IPolygonGeometryAccess;\r\n\r\n          setCoordinates(coordinates: number[] | null): this;\r\n\r\n          setFillRule(fillRule: 'evenOdd' | 'nonZero'): IPolygonGeometryAccess;\r\n\r\n          splice(index: number, number: number): ILinearRingGeometryAccess[];\r\n\r\n          unfreeze(): IFreezable;\r\n        }\r\n      }\r\n\r\n      class Circle implements ICircleGeometry {\r\n        constructor(\r\n          coordinates?: number[] | null,\r\n          radius?: number,\r\n          options?: {\r\n            geodesic?: boolean;\r\n            pixelRendering?: string;\r\n            projection?: IProjection;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        freeze(): IFreezable;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getClosest(anchorPosition: number[]): object;\r\n\r\n        getCoordinates(): number[] | null;\r\n\r\n        getMap(): Map | null;\r\n\r\n        getPixelGeometry(options?: object): IPixelGeometry;\r\n\r\n        getRadius(): number;\r\n\r\n        getType(): string;\r\n\r\n        isFrozen(): boolean;\r\n\r\n        setCoordinates(coordinates: number[] | null): ICircleGeometryAccess;\r\n\r\n        setMap(map: Map): void;\r\n\r\n        setRadius(radius: number): ICircleGeometryAccess;\r\n\r\n        unfreeze(): IFreezable;\r\n      }\r\n\r\n      class LineString implements ILineStringGeometry {\r\n        constructor(\r\n          coordinates?: number[][],\r\n          options?: {\r\n            coordRendering?: 'shortestPath' | 'straightPath';\r\n            geodesic?: boolean;\r\n            pixelRendering?: 'jumpy' | 'static';\r\n            projection?: IProjection;\r\n            simplification?: boolean;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        static fromEncodedCoordinates(encodedCoordinates: string): LineString;\r\n\r\n        static toEncodedCoordinates(geometry: LineString): string;\r\n\r\n        getMap(): Map | null;\r\n\r\n        getPixelGeometry(options?: object): IPixelGeometry;\r\n\r\n        setMap(map: Map): void;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getType(): string;\r\n\r\n        get(index: number): number[];\r\n\r\n        getChildGeometry(index: number): IPointGeometryAccess;\r\n\r\n        getClosest(anchorPosition: number[]): object;\r\n\r\n        getCoordinates(): number[][];\r\n\r\n        getLength(): number;\r\n\r\n        insert(index: number, coordinates: number[][]): ILineStringGeometryAccess;\r\n\r\n        remove(index: number): number[];\r\n\r\n        remove(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        set(index: number, coordinates: number[]): ILineStringGeometryAccess;\r\n\r\n        setCoordinates(coordinates: number[][]): ILineStringGeometryAccess;\r\n\r\n        splice(index: number, length: number): number[][];\r\n\r\n        freeze(): IFreezable;\r\n\r\n        isFrozen(): boolean;\r\n\r\n        unfreeze(): IFreezable;\r\n\r\n        add(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        getParent(): object | null;\r\n\r\n        group(): IEventGroup;\r\n\r\n        setParent(parent: IEventManager | null): this;\r\n\r\n        fire(type: string, eventObject: object | IEvent): this;\r\n      }\r\n\r\n      namespace pixel {\r\n        class Circle implements IPixelCircleGeometry {\r\n          constructor(coordinates: number[] | null, radius: number, metaData?: object);\r\n\r\n          events: IEventManager;\r\n\r\n          equals(geometry: IPixelGeometry): boolean;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getCoordinates(): number[];\r\n\r\n          getMetaData(): object;\r\n\r\n          getRadius(): number;\r\n\r\n          getType(): string;\r\n\r\n          scale(factor: number): IPixelGeometry;\r\n\r\n          shift(offset: number[]): IPixelGeometry;\r\n        }\r\n\r\n        class LineString implements IPixelLineStringGeometry {\r\n          constructor(coordinates: number[][], metaData?: object);\r\n\r\n          events: IEventManager;\r\n\r\n          equals(geometry: IPixelGeometry): boolean;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getClosest(anchorPosition: number[]): object;\r\n\r\n          getCoordinates(): number[][];\r\n\r\n          getLength(): number;\r\n\r\n          getMetaData(): object;\r\n\r\n          getType(): string;\r\n\r\n          scale(factor: number): IPixelGeometry;\r\n\r\n          shift(offset: number[]): IPixelGeometry;\r\n        }\r\n\r\n        class MultiLineString implements IPixelMultiLineGeometry {\r\n          constructor(coordinates: number[][][], metaData?: object);\r\n\r\n          events: IEventManager;\r\n\r\n          equals(geometry: IPixelGeometry): boolean;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getClosest(anchorPosition: number[]): object;\r\n\r\n          getCoordinates(): number[][][];\r\n\r\n          getLength(): number;\r\n\r\n          getMetaData(): object;\r\n\r\n          getType(): string;\r\n\r\n          scale(factor: number): IPixelGeometry;\r\n\r\n          shift(offset: number[]): IPixelGeometry;\r\n        }\r\n\r\n        class MultiPolygon implements IPixelMultiPolygonGeometry {\r\n          constructor(\r\n            coordinates: number[][][][],\r\n            fillRule: 'evenOdd' | 'nonZero',\r\n            metaData?: object,\r\n          );\r\n\r\n          events: IEventManager;\r\n\r\n          contains(position: number[]): boolean;\r\n\r\n          equals(geometry: IPixelGeometry): boolean;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getClosest(anchorPosition: number[]): object;\r\n\r\n          getCoordinates(): number[][][][];\r\n\r\n          getFillRule(): 'evenOdd' | 'nonZero';\r\n\r\n          getLength(): number;\r\n\r\n          getMetaData(): object;\r\n\r\n          getType(): string;\r\n\r\n          scale(factor: number): IPixelGeometry;\r\n\r\n          shift(offset: number[]): IPixelGeometry;\r\n        }\r\n\r\n        class Point implements IPixelPointGeometry {\r\n          constructor(position: number[] | null, metaData?: object);\r\n\r\n          events: IEventManager;\r\n\r\n          equals(geometry: IPixelGeometry): boolean;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getCoordinates(): number[];\r\n\r\n          getMetaData(): object;\r\n\r\n          getType(): string;\r\n\r\n          scale(factor: number): IPixelGeometry;\r\n\r\n          shift(offset: number[]): IPixelGeometry;\r\n        }\r\n\r\n        class Polygon implements IPixelPolygonGeometry {\r\n          constructor(\r\n            coordinates: number[][][],\r\n            fillRule: 'evenOdd' | 'nonZero',\r\n            metaData?: object,\r\n          );\r\n\r\n          events: IEventManager;\r\n\r\n          contains(position: number[]): boolean;\r\n\r\n          equals(geometry: IPixelGeometry): boolean;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getClosest(anchorPosition: number[]): object;\r\n\r\n          getCoordinates(): number[][][];\r\n\r\n          getFillRule(): 'evenOdd' | 'nonZero';\r\n\r\n          getLength(): number;\r\n\r\n          getMetaData(): object;\r\n\r\n          getType(): string;\r\n\r\n          scale(factor: number): IPixelGeometry;\r\n\r\n          shift(offset: number[]): IPixelGeometry;\r\n        }\r\n\r\n        class Rectangle implements IPixelRectangleGeometry {\r\n          constructor(coordinates: number[][] | null, metaData?: object);\r\n\r\n          events: IEventManager;\r\n\r\n          equals(geometry: IPixelGeometry): boolean;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getClosest(anchorPosition: number[]): object;\r\n\r\n          getCoordinates(): number[][];\r\n\r\n          getMetaData(): object;\r\n\r\n          getType(): string;\r\n\r\n          scale(factor: number): IPixelGeometry;\r\n\r\n          shift(offset: number[]): IPixelGeometry;\r\n        }\r\n      }\r\n\r\n      class Point implements IPointGeometry {\r\n        constructor(coordinates?: number[] | null);\r\n\r\n        options: IOptionManager;\r\n\r\n        events: IEventManager;\r\n\r\n        getMap(): Map | null;\r\n\r\n        getPixelGeometry(options?: object): IPixelGeometry;\r\n\r\n        setMap(map: Map): void;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getType(): string;\r\n\r\n        getCoordinates(): number[] | null;\r\n\r\n        setCoordinates(coordinates: number[] | null): this;\r\n      }\r\n\r\n      class Polygon implements IPolygonGeometry {\r\n        constructor(coordinates?: number[][][], fillRule?: 'evenOdd' | 'nonZero', options?: object);\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        static fromEncodedCoordinates(encodedCoordinates: string): Polygon;\r\n\r\n        static toEncodedCoordinates(geometry: Polygon): string;\r\n\r\n        add(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        fire(type: string, eventObject: object | IEvent): this;\r\n\r\n        freeze(): IFreezable;\r\n\r\n        get(index: number): number[][];\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getChildGeometry(index: number): ILinearRingGeometryAccess;\r\n\r\n        getClosest(anchorPosition: number[]): object;\r\n\r\n        getCoordinates(): number[][][];\r\n\r\n        getFillRule(): 'evenOdd' | 'nonZero';\r\n\r\n        getLength(): number;\r\n\r\n        getMap(): Map | null;\r\n\r\n        getParent(): object | null;\r\n\r\n        getPixelGeometry(options?: object): IPixelGeometry;\r\n\r\n        getType(): string;\r\n\r\n        group(): IEventGroup;\r\n\r\n        insert(index: number, path: number[][]): IPolygonGeometryAccess;\r\n\r\n        isFrozen(): boolean;\r\n\r\n        remove(index: number): ILinearRingGeometryAccess;\r\n\r\n        set(index: number, path: number[][]): IPolygonGeometryAccess;\r\n\r\n        setCoordinates(coordinates: number[][][]): IPolygonGeometryAccess;\r\n\r\n        setFillRule(fillRule: 'evenOdd' | 'nonZero'): IPolygonGeometryAccess;\r\n\r\n        setMap(map: Map): void;\r\n\r\n        setParent(parent: object | null): this;\r\n\r\n        splice(index: number, number: number): ILinearRingGeometryAccess[];\r\n\r\n        unfreeze(): IFreezable;\r\n      }\r\n\r\n      class Rectangle implements IRectangleGeometry {\r\n        constructor(\r\n          coordinates?: number[][] | null,\r\n          options?: {\r\n            coordRendering?: string;\r\n            geodesic?: boolean;\r\n            pixelRendering?: string;\r\n            projection?: IProjection;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        freeze(): IFreezable;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getClosest(anchorPosition: number[]): object;\r\n\r\n        getCoordinates(): number[][];\r\n\r\n        getMap(): Map | null;\r\n\r\n        getPixelGeometry(options?: object): IPixelGeometry;\r\n\r\n        getType(): string;\r\n\r\n        isFrozen(): boolean;\r\n\r\n        setCoordinates(coordinates: number[][]): IRectangleGeometryAccess;\r\n\r\n        setMap(map: Map): void;\r\n\r\n        unfreeze(): IFreezable;\r\n      }\r\n    }\r\n\r\n    namespace geometryEditor {\r\n      class Circle implements IGeometryEditor {\r\n        constructor(geometry: ICircleGeometry, options?: object);\r\n\r\n        events: IEventManager;\r\n\r\n        geometry: IGeometry;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: IDataManager;\r\n\r\n        startDrawing(): vow.Promise;\r\n\r\n        startEditing(): void;\r\n\r\n        stopDrawing(): vow.Promise;\r\n\r\n        stopEditing(): void;\r\n      }\r\n\r\n      class LineString implements IGeometryEditor {\r\n        constructor(geometry: ILineStringGeometry, options?: object);\r\n\r\n        events: IEventManager;\r\n\r\n        geometry: IGeometry;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: IDataManager;\r\n\r\n        getModel(): vow.Promise;\r\n\r\n        getModelSync(): model.RootLineString | null;\r\n\r\n        getView(): vow.Promise;\r\n\r\n        getViewSync(): view.Path | null;\r\n\r\n        startDrawing(): vow.Promise;\r\n\r\n        startEditing(): vow.Promise;\r\n\r\n        startFraming(): vow.Promise;\r\n\r\n        stopDrawing(): void;\r\n\r\n        stopEditing(): void;\r\n\r\n        stopFraming(): void;\r\n      }\r\n\r\n      namespace model {\r\n        class ChildLinearRing extends ChildLineString {}\r\n\r\n        class ChildLineString implements IGeometryEditorChildModel {\r\n          editor: IGeometryEditor;\r\n\r\n          events: IEventManager;\r\n\r\n          geometry: IBaseGeometry;\r\n\r\n          destroy(): void;\r\n\r\n          getAllVerticesNumber(): number;\r\n\r\n          getEdgeModels(): Edge[];\r\n\r\n          getIndex(): number;\r\n\r\n          getParent(): IGeometryEditorModel;\r\n\r\n          getPixels(): number[];\r\n\r\n          getVertexModels(): ChildVertex[];\r\n\r\n          setIndex(index: number): void;\r\n\r\n          setPixels(pixels: number[]): void;\r\n\r\n          spliceVertices(start: number, deleteCount: number): number[][];\r\n        }\r\n\r\n        class ChildVertex implements IGeometryEditorChildModel {\r\n          editor: IGeometryEditor;\r\n\r\n          events: IEventManager;\r\n\r\n          geometry: IBaseGeometry;\r\n\r\n          destroy(): void;\r\n\r\n          getAllVerticesNumber(): number;\r\n\r\n          getIndex(): number;\r\n\r\n          getNextVertex(): ChildVertex | null;\r\n\r\n          getParent(): IGeometryEditorModel;\r\n\r\n          getPixels(): number[];\r\n\r\n          getPrevVertex(): ChildVertex | null;\r\n\r\n          setGlobalPixels(pixels: number[]): void;\r\n\r\n          setIndex(index: number): void;\r\n\r\n          setNextVertex(nextVertex: ChildVertex): void;\r\n\r\n          setPixels(pixels: number[]): void;\r\n\r\n          setPrevVertex(prevVertex: ChildVertex): void;\r\n        }\r\n\r\n        class Edge implements IGeometryEditorRootModel {\r\n          events: IEventManager;\r\n\r\n          destroy(): void;\r\n\r\n          getNextVertex(): ChildVertex | null;\r\n\r\n          getPixels(): number[];\r\n\r\n          getPrevVertex(): ChildVertex | null;\r\n\r\n          setNextVertex(nextVertex: ChildVertex): void;\r\n\r\n          setPrevVertex(prevVertex: ChildVertex): void;\r\n        }\r\n\r\n        class EdgeGeometry implements IGeometry {\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          getBounds(): number[][] | null;\r\n\r\n          getMap(): Map | null;\r\n\r\n          getPixelGeometry(options?: object): IPixelGeometry;\r\n\r\n          getType(): string;\r\n\r\n          setMap(map: Map): void;\r\n        }\r\n\r\n        class RootLineString implements IGeometryEditorRootModel {\r\n          events: IEventManager;\r\n\r\n          destroy(): void;\r\n\r\n          getAllVerticesNumber(): number;\r\n\r\n          getPixels(): number[];\r\n\r\n          getVertexModels(): ChildVertex[];\r\n\r\n          spliceVertices(start: number, deleteCount: number): number[][];\r\n        }\r\n\r\n        class RootPolygon implements IGeometryEditorRootModel {\r\n          events: IEventManager;\r\n\r\n          destroy(): void;\r\n\r\n          getAllVerticesNumber(): number;\r\n\r\n          getPathModels(): ChildLinearRing[];\r\n\r\n          getPixels(): number[];\r\n\r\n          splicePaths(start: number, deleteCount: number): number[][];\r\n        }\r\n      }\r\n\r\n      class Point implements IGeometryEditor {\r\n        constructor(\r\n          geometry: IPointGeometry,\r\n          options?: {\r\n            dblClickHandler?: (ref: any) => void;\r\n            drawingCursor?: string;\r\n            drawOver?: boolean;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        geometry: IGeometry;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: IDataManager;\r\n\r\n        startDrawing(): vow.Promise;\r\n\r\n        startEditing(): void;\r\n\r\n        stopDrawing(): vow.Promise;\r\n\r\n        stopEditing(): void;\r\n      }\r\n\r\n      class Polygon implements IGeometryEditor {\r\n        constructor(geometry: IPolygonGeometry, options: object);\r\n\r\n        events: IEventManager;\r\n\r\n        geometry: IGeometry;\r\n\r\n        options: IOptionManager;\r\n\r\n        state: IDataManager;\r\n\r\n        getModel(): vow.Promise;\r\n\r\n        getModelSync(): model.RootPolygon | null;\r\n\r\n        getView(): vow.Promise;\r\n\r\n        getViewSync(): view.MultiPath | null;\r\n\r\n        startDrawing(): vow.Promise;\r\n\r\n        startEditing(): vow.Promise;\r\n\r\n        startFraming(): vow.Promise;\r\n\r\n        stopDrawing(): void;\r\n\r\n        stopEditing(): void;\r\n\r\n        stopFraming(): void;\r\n      }\r\n\r\n      namespace view {\r\n        class Edge {\r\n          getPlacemark(): GeoObject;\r\n        }\r\n\r\n        class MultiPath {\r\n          getEdgePlacemarks(): GeoObjectCollection;\r\n\r\n          getPathViews(): Path[];\r\n\r\n          getVertexPlacemarks(): GeoObjectCollection;\r\n        }\r\n\r\n        class Path {\r\n          getEdgePlacemarks(): GeoObjectCollection;\r\n\r\n          getEdgeViews(): Edge[];\r\n\r\n          getVertexPlacemarks(): GeoObjectCollection;\r\n\r\n          getVertexViews(): Vertex[];\r\n        }\r\n\r\n        class Vertex {\r\n          getPlacemark(): GeoObject;\r\n        }\r\n      }\r\n    }\r\n\r\n    namespace geoObject {\r\n      class Balloon implements IBalloonManager<GeoObject> {\r\n        constructor(geoObject: GeoObject);\r\n\r\n        events: IEventManager;\r\n\r\n        autoPan(): Promise<GeoObject>;\r\n\r\n        close(force?: boolean): Promise<GeoObject>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(): boolean;\r\n\r\n        open(\r\n          position?: number[],\r\n          data?: object | string | HTMLElement,\r\n          options?: object,\r\n        ): Promise<GeoObject>;\r\n\r\n        setData(data: object | string | HTMLElement): Promise<GeoObject>;\r\n\r\n        setOptions(options: object): Promise<GeoObject>;\r\n\r\n        setPosition(position: number[]): Promise<GeoObject>;\r\n      }\r\n\r\n      class Hint implements IHintManager<GeoObject> {\r\n        constructor(geoObject: GeoObject);\r\n\r\n        events: IEventManager;\r\n\r\n        close(force?: boolean): Promise<GeoObject>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(): boolean;\r\n\r\n        open(\r\n          position?: number[],\r\n          data?: object | string | HTMLElement,\r\n          options?: object,\r\n        ): Promise<GeoObject>;\r\n\r\n        setData(data: object | string | HTMLElement): Promise<GeoObject>;\r\n\r\n        setOptions(options: object): Promise<GeoObject>;\r\n\r\n        setPosition(position: number[]): Promise<GeoObject>;\r\n      }\r\n\r\n      class Sequence implements IGeoObject, IGeoObjectSequence {\r\n        constructor(geoObject: GeoObject);\r\n\r\n        geometry: IGeometry | null;\r\n\r\n        properties: IDataManager;\r\n\r\n        state: IDataManager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n\r\n        getMap(): Map;\r\n\r\n        each(callback: (geoObject: IGeoObject) => void, context?: object): void;\r\n\r\n        get(index: number): IGeoObject;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getIterator(): IIterator;\r\n\r\n        getLength(): number;\r\n\r\n        getPixelBounds(): number[][] | null;\r\n\r\n        indexOf(geoObject: IGeoObject): number;\r\n      }\r\n    }\r\n\r\n    namespace layout {\r\n      namespace templateBased {\r\n        class Base implements ILayout {\r\n          constructor(data: object);\r\n\r\n          events: IEventManager;\r\n\r\n          destroy(): void;\r\n\r\n          getData(): object;\r\n\r\n          getParentElement(): HTMLElement;\r\n\r\n          getShape(): IShape | null;\r\n\r\n          isEmpty(): boolean;\r\n\r\n          setData(data: object): void;\r\n\r\n          setParentElement(parent: HTMLElement | null): this;\r\n\r\n          build(): void;\r\n\r\n          clear(): void;\r\n\r\n          onSublayoutSizeChange(sublayoutInfo: object, nodeSizeByContent: object): void;\r\n\r\n          rebuild(): void;\r\n        }\r\n      }\r\n\r\n      interface IImageOptions {\r\n        imageClipRect?: number[][] | undefined;\r\n        imageHref?: string | undefined;\r\n        imageOffset?: number[] | undefined;\r\n        imageSize?: number[] | undefined;\r\n        shape?: IShape | object | null | undefined;\r\n      }\r\n\r\n      type IImageOptionsWithIconPrefix = Prefix<IImageOptions, 'icon'>;\r\n\r\n      class Image implements ILayout {\r\n        constructor(data: { options?: IImageOptions });\r\n\r\n        events: IEventManager;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object;\r\n\r\n        getParentElement(): HTMLElement;\r\n\r\n        getShape(): IShape | null;\r\n\r\n        isEmpty(): boolean;\r\n\r\n        setData(data: object): void;\r\n\r\n        setParentElement(parent: HTMLElement | null): void;\r\n      }\r\n\r\n      class ImageWithContent extends Image {}\r\n\r\n      type IImageWithContentOptionsWithIconPrefix = Prefix<\r\n        IImageOptions & {\r\n          contentLayout?: IClassConstructor<ILayout> | string | undefined;\r\n          contentOffset?: number[] | undefined;\r\n          contentSize?: number[] | undefined;\r\n        },\r\n        'icon'\r\n      >;\r\n\r\n      class PieChart extends templateBased.Base {}\r\n\r\n      interface PieChartOptions {\r\n        pieChartCaptionMaxWidth?: number | undefined;\r\n        pieChartCoreFillStyle?: string | undefined;\r\n        pieChartCoreRadius?: number | (() => number) | undefined;\r\n        pieChartStrokeStyle?: string | undefined;\r\n        pieChartStrokeWidth?: number | undefined;\r\n      }\r\n\r\n      type IPieChartOptionsWithIconPrefix = Prefix<PieChartOptions, 'icon'>;\r\n\r\n      const storage: util.Storage;\r\n    }\r\n\r\n    namespace map {\r\n      namespace action {\r\n        class Manager implements IEventEmitter {\r\n          constructor(map: Map);\r\n\r\n          events: IEventManager;\r\n\r\n          breakTick(): void;\r\n\r\n          execute(action: IMapAction): void;\r\n\r\n          getCurrentState(): object;\r\n\r\n          getMap(): Map;\r\n\r\n          setCorrection(userFunction: () => void): void;\r\n\r\n          stop(): void;\r\n        }\r\n      }\r\n\r\n      namespace behavior {\r\n        class Manager implements ICustomizable, IEventEmitter, IParentOnMap {\r\n          constructor(map: Map, behaviors?: string[][] | string[], options?: object);\r\n\r\n          options: IOptionManager;\r\n\r\n          events: IEventManager;\r\n\r\n          getMap(): Map;\r\n\r\n          disable(behaviors: string[][] | string[] | string): this;\r\n\r\n          enable(behaviors: string[][] | string[] | string): this;\r\n\r\n          get(behaviorName: string): IBehavior;\r\n\r\n          isEnabled(behaviorName: string): boolean;\r\n        }\r\n      }\r\n\r\n      namespace layer {\r\n        class Manager implements ILayer, IMapObjectCollection {\r\n          constructor(\r\n            map: Map,\r\n            options?: {\r\n              trafficImageZIndex?: number;\r\n              trafficInfoZIndex?: number;\r\n              trafficJamZIndex?: number;\r\n            },\r\n          );\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          getParent(): null | IControlParent;\r\n\r\n          setParent(parent: IControlParent): this;\r\n\r\n          add(object: object): this;\r\n\r\n          each(callback: (layer: ILayer) => void, context?: object): void;\r\n\r\n          getIterator(): IIterator;\r\n\r\n          remove(object: object): this;\r\n\r\n          getMap(): Map;\r\n\r\n          getAll(): Array<Collection<Layer>>;\r\n        }\r\n      }\r\n\r\n      namespace margin {\r\n        class Accessor {\r\n          constructor(screenArea: object);\r\n\r\n          getArea(): object;\r\n\r\n          remove(): this;\r\n\r\n          setArea(screenArea: object): this;\r\n        }\r\n\r\n        class Manager {\r\n          constructor(map: Map);\r\n\r\n          addArea(screenArea: object): Accessor;\r\n\r\n          destroy(): this;\r\n\r\n          getMargin(): number[];\r\n\r\n          getOffset(): number[];\r\n\r\n          setDefaultMargin(margin: number[][] | number[] | number): void;\r\n        }\r\n      }\r\n\r\n      namespace pane {\r\n        class Manager {\r\n          constructor(map: Map);\r\n\r\n          append(key: string, pane: IPane): void;\r\n\r\n          destroy(): void;\r\n\r\n          get(key: string): IPane | null;\r\n\r\n          getLower(): string;\r\n\r\n          getUpper(): string;\r\n\r\n          insertBefore(key: string, pane: IPane, referenceKey: string): void;\r\n\r\n          remove(pane: IPane): void;\r\n        }\r\n      }\r\n\r\n      class Balloon implements IBalloonManager<Balloon> /* , IBalloonSharingManager */ {\r\n        constructor(map: Map);\r\n\r\n        events: IEventManager;\r\n\r\n        autoPan(): Promise<Balloon>;\r\n\r\n        close(force?: boolean): Promise<Balloon>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(): boolean;\r\n\r\n        open(\r\n          position?: number[],\r\n          data?: object | string | HTMLElement,\r\n          options?: object,\r\n        ): Promise<Balloon>;\r\n\r\n        setData(data: object | string | HTMLElement): Promise<Balloon>;\r\n\r\n        setOptions(options: object): Promise<Balloon>;\r\n\r\n        setPosition(position: number[]): Promise<Balloon>;\r\n      }\r\n\r\n      class Container implements IDomEventEmitter {\r\n        constructor(parentElement: string | HTMLElement);\r\n\r\n        events: IEventManager;\r\n\r\n        enterFullscreen(): void;\r\n\r\n        exitFullscreen(): void;\r\n\r\n        fitToViewport(preservePixelPosition?: boolean): void;\r\n\r\n        getElement(): HTMLElement;\r\n\r\n        getOffset(): number[];\r\n\r\n        getParentElement(): HTMLElement;\r\n\r\n        getSize(): number[];\r\n\r\n        isFullscreen(): boolean;\r\n      }\r\n\r\n      class Converter {\r\n        constructor(map: Map);\r\n\r\n        globalToPage(globalPixelPoint: number[]): number[];\r\n\r\n        pageToGlobal(pagePixelPoint: number[]): number[];\r\n      }\r\n\r\n      class Copyrights {\r\n        constructor(map: Map);\r\n\r\n        add(\r\n          customCopyrights: string | HTMLElement | Array<string | HTMLElement>,\r\n        ): ICopyrightsAccessor;\r\n\r\n        addProvider(provider: ICopyrightsProvider): this;\r\n\r\n        get(point?: number[], zoom?: number): Promise<Array<string | HTMLElement>>;\r\n\r\n        getPromoLink(): string;\r\n\r\n        removeProvider(provider: ICopyrightsProvider): this;\r\n      }\r\n\r\n      class GeoObjects implements IGeoObjectCollection {\r\n        constructor(map: Map, options?: object);\r\n\r\n        options: IOptionManager;\r\n\r\n        events: IEventManager;\r\n\r\n        add(child: IGeoObject | ObjectManager | Clusterer, index?: number): this;\r\n\r\n        each(callback: (object: IGeoObject) => void, context?: object): void;\r\n\r\n        get(index: number): IGeoObject;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getIterator(): IIterator;\r\n\r\n        getLength(): number;\r\n\r\n        getPixelBounds(): number[][] | null;\r\n\r\n        indexOf(object: IGeoObject): number;\r\n\r\n        remove(child: IGeoObject | ObjectManager): this;\r\n\r\n        removeAll(): this;\r\n\r\n        set(index: number, child: IGeoObject): this;\r\n\r\n        splice(index: number, length: number): this;\r\n\r\n        getMap(): Map;\r\n      }\r\n\r\n      class Hint implements IHintManager<Hint> /* , IHintSharingManager */ {\r\n        constructor(map: Map);\r\n\r\n        events: IEventManager;\r\n\r\n        close(force?: boolean): Promise<Hint>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(): boolean;\r\n\r\n        open(\r\n          position?: number[],\r\n          data?: object | string | HTMLElement,\r\n          options?: object,\r\n        ): Promise<Hint>;\r\n\r\n        setData(data: object | string | HTMLElement): Promise<Hint>;\r\n\r\n        setOptions(options: object): Promise<Hint>;\r\n\r\n        setPosition(position: number[]): Promise<Hint>;\r\n      }\r\n\r\n      class ZoomRange implements IEventEmitter {\r\n        constructor(map: Map, constraints: number[]);\r\n\r\n        events: IEventManager;\r\n\r\n        get(coords?: number[]): Promise<number[]>;\r\n\r\n        getCurrent(): number[];\r\n      }\r\n    }\r\n\r\n    namespace multiRouter {\r\n      namespace driving {\r\n        class Path implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: data.Manager;\r\n\r\n          state: IDataManager;\r\n\r\n          model: PathModel;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n\r\n          getSegments(): GeoObjectCollection;\r\n        }\r\n\r\n        class PathModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          properties: data.Manager;\r\n\r\n          route: RouteModel;\r\n\r\n          destroy(): void;\r\n\r\n          getSegments(): SegmentModel[];\r\n\r\n          getType(): string;\r\n\r\n          update(pathJson: object): void;\r\n        }\r\n\r\n        class Route implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: IDataManager;\r\n\r\n          state: IDataManager;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          balloon: geoObject.Balloon;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n\r\n          getPaths(): GeoObjectCollection;\r\n        }\r\n\r\n        class RouteModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          multiRoute: MultiRouteModel;\r\n\r\n          properties: data.Manager;\r\n\r\n          destroy(): void;\r\n\r\n          getPaths(): PathModel[];\r\n\r\n          update(routeJson: object): void;\r\n\r\n          getType(): string;\r\n        }\r\n\r\n        class Segment implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: data.Manager;\r\n\r\n          state: IDataManager;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n        }\r\n\r\n        class SegmentModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          geometry: geometry.base.LineString;\r\n\r\n          path: PathModel;\r\n\r\n          destroy(): void;\r\n\r\n          getType(): string;\r\n\r\n          getViaPoints(): ViaPointModel[];\r\n\r\n          update(segmentJson: object): void;\r\n        }\r\n      }\r\n\r\n      namespace masstransit {\r\n        class Path implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: data.Manager;\r\n\r\n          state: IDataManager;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          model: PathModel;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n\r\n          getSegmentMarkers(): GeoObjectCollection;\r\n\r\n          getSegments(): GeoObjectCollection;\r\n        }\r\n\r\n        class PathModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          properties: data.Manager;\r\n\r\n          route: RouteModel;\r\n\r\n          destroy(): void;\r\n\r\n          getSegments(): Array<TransferSegmentModel | TransportSegmentModel | WalkSegmentModel>;\r\n\r\n          getType(): string;\r\n\r\n          update(pathJson: object): void;\r\n        }\r\n\r\n        class Route implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: data.Manager;\r\n\r\n          model: RouteModel;\r\n\r\n          state: IDataManager;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          balloon: geoObject.Balloon;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n\r\n          getPaths(): GeoObjectCollection;\r\n        }\r\n\r\n        class RouteModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          multiRoute: MultiRouteModel;\r\n\r\n          properties: data.Manager;\r\n\r\n          destroy(): void;\r\n\r\n          getPaths(): PathModel[];\r\n\r\n          getType(): string;\r\n\r\n          update(routeJson: object): void;\r\n        }\r\n\r\n        class StopModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          geometry: geometry.base.Point;\r\n\r\n          properties: data.Manager;\r\n\r\n          segment: TransportSegmentModel;\r\n\r\n          update(stopJson: object): void;\r\n        }\r\n\r\n        class TransferSegment implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: data.Manager;\r\n\r\n          state: IDataManager;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          model: TransferSegmentModel;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n        }\r\n\r\n        class TransferSegmentModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          geometry: geometry.base.LineString;\r\n\r\n          path: PathModel;\r\n\r\n          properties: data.Manager;\r\n\r\n          destroy(segmentJson: object): void;\r\n\r\n          getType(): string;\r\n        }\r\n\r\n        class TransportSegment implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: data.Manager;\r\n\r\n          state: IDataManager;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          model: TransportSegmentModel;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n        }\r\n\r\n        class TransportSegmentModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          geometry: geometry.base.LineString;\r\n\r\n          path: PathModel;\r\n\r\n          properties: data.Manager;\r\n\r\n          destroy(): void;\r\n\r\n          getStops(): StopModel[];\r\n\r\n          getType(): string;\r\n\r\n          update(segmentJson: object): void;\r\n        }\r\n\r\n        class WalkSegment implements IGeoObject {\r\n          geometry: IGeometry | null;\r\n\r\n          properties: data.Manager;\r\n\r\n          state: IDataManager;\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          model: WalkSegmentModel;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getParent(): object | null;\r\n\r\n          setParent(parent: object): this;\r\n\r\n          getMap(): Map;\r\n        }\r\n\r\n        class WalkSegmentModel implements IEventEmitter {\r\n          events: IEventManager;\r\n\r\n          geometry: geometry.base.LineString;\r\n\r\n          path: PathModel;\r\n\r\n          properties: data.Manager;\r\n\r\n          destroy(): void;\r\n\r\n          getType(): string;\r\n        }\r\n      }\r\n\r\n      class EditorAddon implements ICustomizable, IEventEmitter {\r\n        options: IOptionManager;\r\n\r\n        events: IEventManager;\r\n\r\n        state: data.Manager;\r\n\r\n        isActive(): boolean;\r\n\r\n        start(state: object): void;\r\n\r\n        stop(): void;\r\n      }\r\n\r\n      class MultiRoute implements IGeoObject {\r\n        constructor(model: MultiRouteModel | IMultiRouteModelJson, options?: IMultiRouteOptions);\r\n\r\n        editor: EditorAddon;\r\n\r\n        events: IEventManager;\r\n\r\n        geometry: IGeometry | null;\r\n\r\n        model: MultiRouteModel;\r\n\r\n        options: IOptionManager;\r\n\r\n        properties: IDataManager;\r\n\r\n        state: IDataManager;\r\n\r\n        getActiveRoute(): multiRouter.driving.Route | multiRouter.masstransit.Route | null;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getMap(): Map;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getParent(): object | null;\r\n\r\n        getPixelBounds(): number[][] | null;\r\n\r\n        getRoutes(): GeoObjectCollection;\r\n\r\n        getViaPoints(): GeoObjectCollection;\r\n\r\n        getWayPoints(): GeoObjectCollection;\r\n\r\n        setActiveRoute(route: driving.Route | masstransit.Route | null): void;\r\n\r\n        setParent(parent: object): this;\r\n      }\r\n\r\n      interface IMultiRouteOptions {\r\n        activeRouteAutoSelection?: boolean;\r\n        boundsAutoApply?: boolean;\r\n        dragUpdateInterval?: string | number;\r\n        preventDragUpdate?: boolean;\r\n        useMapMargin?: boolean;\r\n        zoomMargin?: number[][] | number[] | number;\r\n\r\n        [index: string]: any;\r\n      }\r\n\r\n      class MultiRouteModel implements IEventEmitter {\r\n        constructor(referencePoints: IMultiRouteReferencePoint[], params?: IMultiRouteParams);\r\n\r\n        events: IEventManager;\r\n\r\n        properties: data.Manager;\r\n\r\n        destroy(): void;\r\n\r\n        getAllPoints(): Array<WayPointModel | ViaPointModel>;\r\n\r\n        getJson(): object;\r\n\r\n        getParams(): IMultiRouteParams;\r\n\r\n        getPoints(): Array<WayPointModel | ViaPointModel>;\r\n\r\n        getReferencePointIndexes(): object;\r\n\r\n        getReferencePoints(): IMultiRouteReferencePoint[];\r\n\r\n        getRoutes(): driving.RouteModel[] | masstransit.RouteModel[];\r\n\r\n        getViaPoints(): ViaPointModel[];\r\n\r\n        getWayPoints(): WayPointModel[];\r\n\r\n        setParams(params: IMultiRouteParams, extend?: boolean, clearRequests?: boolean): void;\r\n\r\n        setReferencePoints(\r\n          referencePoints: IMultiRouteReferencePoint[],\r\n          viaIndexes?: number[],\r\n          clearRequests?: boolean,\r\n        ): void;\r\n      }\r\n\r\n      class ViaPoint implements IGeoObject {\r\n        geometry: IGeometry | null;\r\n\r\n        properties: data.Manager;\r\n\r\n        state: IDataManager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getParent(): object | null;\r\n\r\n        setParent(parent: object): this;\r\n\r\n        getMap(): Map;\r\n      }\r\n\r\n      class ViaPointModel implements IEventEmitter {\r\n        events: IEventManager;\r\n\r\n        geometry: geometry.base.Point;\r\n\r\n        multiRoute: MultiRouteModel;\r\n\r\n        properties: data.Manager;\r\n\r\n        destroy(): void;\r\n\r\n        getReferencePoint(): object;\r\n\r\n        getReferencePointIndex(): number;\r\n\r\n        setReferencePoint(referencePoint: object): void;\r\n\r\n        update(viaPointJson: object): void;\r\n      }\r\n\r\n      class WayPoint implements IGeoObject {\r\n        geometry: IGeometry | null;\r\n\r\n        properties: data.Manager;\r\n\r\n        state: IDataManager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        model: WayPointModel;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getParent(): object | null;\r\n\r\n        setParent(parent: object): this;\r\n\r\n        getMap(): Map;\r\n      }\r\n\r\n      class WayPointModel implements IEventEmitter {\r\n        events: IEventManager;\r\n\r\n        geometry: geometry.base.Point;\r\n\r\n        multiRoute: MultiRouteModel;\r\n\r\n        properties: data.Manager;\r\n\r\n        destroy(): void;\r\n\r\n        getReferencePoint(): object;\r\n\r\n        getReferencePointIndex(): number;\r\n\r\n        setReferencePoint(referencePoint: object): void;\r\n\r\n        update(wayPointJson: object): void;\r\n      }\r\n    }\r\n\r\n    namespace option {\r\n      class Manager implements IOptionManager {\r\n        constructor(options?: Record<string, any>, parent?: IOptionManager, name?: string);\r\n\r\n        events: IEventManager;\r\n\r\n        get(key: string, defaultValue?: any): any;\r\n\r\n        getAll(): Record<string, any>;\r\n\r\n        getName(): string;\r\n\r\n        getNative(key: string): object;\r\n\r\n        resolve(key: string, name?: string): object;\r\n\r\n        set(key: Record<string, any> | string, value?: any): this;\r\n\r\n        unset(keys: string[][] | string[] | string): this;\r\n\r\n        unsetAll(): this;\r\n\r\n        setName(name: string): void;\r\n\r\n        getParent(): null | IOptionManager;\r\n\r\n        setParent(parent: IOptionManager): this;\r\n\r\n        freeze(): IFreezable;\r\n\r\n        isFrozen(): boolean;\r\n\r\n        unfreeze(): IFreezable;\r\n\r\n        add(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        group(): IEventGroup;\r\n\r\n        remove(\r\n          types: string[][] | string[] | string,\r\n          callback: (event: object | IEvent) => void,\r\n          context?: object,\r\n          priority?: number,\r\n        ): this;\r\n\r\n        fire(type: string, eventObject: object | IEvent): this;\r\n      }\r\n\r\n      const presetStorage: util.Storage;\r\n    }\r\n\r\n    namespace pane {\r\n      class EventsPane implements IEventPane {\r\n        constructor(\r\n          map: Map,\r\n          params: {\r\n            className?: string;\r\n            css?: CSSStyleDeclaration;\r\n            patch?: {\r\n              selectable?: boolean;\r\n            };\r\n            transparent?: boolean;\r\n            checkContextMenu?: boolean;\r\n            zIndex?: number;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        destroy(): void;\r\n\r\n        getElement(): HTMLElement;\r\n\r\n        getMap(): Map;\r\n\r\n        getOverflow(): 'visible' | 'hidden';\r\n\r\n        getZIndex(): number;\r\n      }\r\n\r\n      class MovablePane implements IContainerPane {\r\n        constructor(\r\n          map: Map,\r\n          params: {\r\n            css?: CSSStyleDeclaration;\r\n            margin?: number;\r\n            overflow?: 'hidden' | 'visible';\r\n            zIndex?: number;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        destroy(): void;\r\n\r\n        fromClientPixels(clientPixelPoint: number[]): number[];\r\n\r\n        getElement(): HTMLElement;\r\n\r\n        getMap(): Map;\r\n\r\n        getOverflow(): 'visible' | 'hidden';\r\n\r\n        getZIndex(): number;\r\n\r\n        getZoom(): number;\r\n\r\n        toClientPixels(globalPixelPoint: number[]): number[];\r\n      }\r\n\r\n      class StaticPane implements IContainerPane {\r\n        constructor(\r\n          map: Map,\r\n          params: {\r\n            css?: CSSStyleDeclaration;\r\n            margin?: number;\r\n            overflow?: 'visible' | 'hidden';\r\n            zIndex?: number;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        destroy(): void;\r\n\r\n        fromClientPixels(clientPixelPoint: number[]): number[];\r\n\r\n        getElement(): HTMLElement;\r\n\r\n        getMap(): Map;\r\n\r\n        getOverflow(): 'visible' | 'hidden';\r\n\r\n        getZIndex(): number;\r\n\r\n        getZoom(): number;\r\n\r\n        toClientPixels(globalPixelPoint: number[]): number[];\r\n      }\r\n    }\r\n\r\n    namespace panorama {\r\n      type Layer = 'yandex#panorama' | 'yandex#airPanorama';\r\n\r\n      class Base implements IPanorama {\r\n        static createPanorama(params: {\r\n          angularBBox: number[];\r\n          coordSystem?: ICoordSystem;\r\n          name?: string;\r\n          position: number[];\r\n          tilesLevels: IPanoramaTileLevel[];\r\n          tileSize: number[];\r\n        }): IPanorama;\r\n\r\n        static getMarkerPositionFromDirection(\r\n          panorama: IPanorama,\r\n          direction: number[],\r\n          distance: number,\r\n        ): number[];\r\n\r\n        getAngularBBox(): number[];\r\n\r\n        getConnectionArrows(): IPanoramaConnectionArrow[];\r\n\r\n        getConnectionMarkers(): IPanoramaConnectionMarker[];\r\n\r\n        getConnections(): IPanoramaConnectionMarker[];\r\n\r\n        getCoordSystem(): ICoordSystem;\r\n\r\n        getDefaultDirection(): number[];\r\n\r\n        getDefaultSpan(): number[];\r\n\r\n        getGraph(): IPanoramaGraph | null;\r\n\r\n        getMarkers(): IPanoramaMarker[];\r\n\r\n        getName(): string;\r\n\r\n        getPosition(): number[];\r\n\r\n        getThoroughfares(): IPanoramaConnectionArrow[];\r\n\r\n        getTileLevels(): IPanoramaTileLevel[];\r\n\r\n        getTileSize(): number[];\r\n\r\n        validate(): void;\r\n      }\r\n\r\n      function createPlayer(\r\n        element: HTMLElement | string,\r\n        point: number[],\r\n        options?: {\r\n          direction?: number[] | string;\r\n          layer?: Layer;\r\n          span?: number[] | string;\r\n        },\r\n      ): Promise<Player>;\r\n\r\n      function isSupported(): boolean;\r\n\r\n      function locate(point: number[], options?: { layer?: Layer }): Promise<IPanorama[]>;\r\n\r\n      class Manager implements IEventEmitter {\r\n        events: IEventManager;\r\n\r\n        closePlayer(): void;\r\n\r\n        disableLookup(): void;\r\n\r\n        enableLookup(): void;\r\n\r\n        getPlayer(): Player;\r\n\r\n        isLookupEnabled(): boolean;\r\n\r\n        openPlayer(panorama: IPanorama[] | number): Promise<void>;\r\n      }\r\n\r\n      interface IPlayerOptions {\r\n        autoFitToViewport?: 'none' | 'ifNull' | 'always';\r\n        controls?: string[];\r\n        direction?: number[] | string;\r\n        hotkeysEnabled?: boolean;\r\n        scrollZoomBehavior?: boolean;\r\n        span?: number[] | string;\r\n        suppressMapOpenBlock?: boolean;\r\n      }\r\n\r\n      class Player implements IEventEmitter {\r\n        constructor(element: HTMLElement | string, panorama: IPanorama, options?: IPlayerOptions);\r\n\r\n        events: IEventManager;\r\n\r\n        destroy(): void;\r\n\r\n        fitToViewport(): void;\r\n\r\n        getDirection(): number[];\r\n\r\n        getPanorama(): IPanorama;\r\n\r\n        getSpan(): number[];\r\n\r\n        lookAt(point: number[]): this;\r\n\r\n        moveTo(\r\n          point: number[],\r\n          options?: {\r\n            direction?: number[] | string;\r\n            layer?: Layer;\r\n            span?: number[] | string;\r\n          },\r\n        ): Promise<void>;\r\n\r\n        setDirection(direction: number[] | string): this;\r\n\r\n        setPanorama(panorama: IPanorama): this;\r\n\r\n        setSpan(span: number[] | string): this;\r\n      }\r\n    }\r\n\r\n    namespace router {\r\n      class Editor implements ICustomizable, IEventEmitter {\r\n        options: IOptionManager;\r\n\r\n        events: IEventManager;\r\n\r\n        start(options?: {\r\n          addViaPoints?: boolean;\r\n          addWayPoints?: boolean;\r\n          editViaPoints?: boolean;\r\n          editWayPoints?: boolean;\r\n          removeViaPoints?: boolean;\r\n          removeWayPoints?: boolean;\r\n        }): void;\r\n\r\n        stop(): void;\r\n      }\r\n\r\n      abstract class Route implements IGeoObject {\r\n        geometry: IGeometry | null;\r\n\r\n        properties: IDataManager;\r\n\r\n        state: IDataManager;\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        editor: Editor;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getParent(): null | IControlParent;\r\n\r\n        setParent(parent: IControlParent): this;\r\n\r\n        getMap(): Map;\r\n\r\n        getHumanJamsTime(): string;\r\n\r\n        getHumanLength(): string;\r\n\r\n        getHumanTime(): string;\r\n\r\n        getJamsTime(): number;\r\n\r\n        getLength(): number;\r\n\r\n        getPaths(): GeoObjectCollection;\r\n\r\n        getTime(): number;\r\n\r\n        getViaPoints(): GeoObjectCollection;\r\n\r\n        getWayPoints(): GeoObjectCollection;\r\n      }\r\n    }\r\n\r\n    namespace shape {\r\n      class Circle implements IShape {\r\n        constructor(\r\n          pixelGeometry: IPixelCircleGeometry,\r\n          params?: {\r\n            fill?: boolean;\r\n            outline?: boolean;\r\n            strokeWidth?: number;\r\n          },\r\n        );\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        equals(shape: IShape): boolean;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getGeometry(): IPixelGeometry;\r\n\r\n        getType(): string;\r\n\r\n        scale(factor: number): IShape;\r\n\r\n        shift(offset: number[]): IShape;\r\n      }\r\n\r\n      class LineString implements IShape {\r\n        constructor(\r\n          pixelGeometry: IPixelLineStringGeometry,\r\n          params?: {\r\n            strokeWidth?: number;\r\n          },\r\n        );\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        equals(shape: IShape): boolean;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getGeometry(): IPixelGeometry;\r\n\r\n        getType(): string;\r\n\r\n        scale(factor: number): IShape;\r\n\r\n        shift(offset: number[]): IShape;\r\n      }\r\n\r\n      class MultiPolygon implements IShape {\r\n        constructor(\r\n          pixelGeometry: IPixelMultiPolygonGeometry,\r\n          params?: {\r\n            fill?: boolean;\r\n            outline?: boolean;\r\n            strokeWidth?: number;\r\n          },\r\n        );\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        equals(shape: IShape): boolean;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getGeometry(): IPixelGeometry;\r\n\r\n        getType(): string;\r\n\r\n        scale(factor: number): IShape;\r\n\r\n        shift(offset: number[]): IShape;\r\n      }\r\n\r\n      class Polygon implements IShape {\r\n        constructor(\r\n          pixelGeometry: IPixelPolygonGeometry,\r\n          params?: {\r\n            fill?: boolean;\r\n            outline?: boolean;\r\n            strokeWidth?: number;\r\n          },\r\n        );\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        equals(shape: IShape): boolean;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getGeometry(): IPixelGeometry;\r\n\r\n        getType(): string;\r\n\r\n        scale(factor: number): IShape;\r\n\r\n        shift(offset: number[]): IShape;\r\n      }\r\n\r\n      class Rectangle implements IShape {\r\n        constructor(\r\n          geometry: IPixelRectangleGeometry,\r\n          params?: {\r\n            fill?: boolean;\r\n            outline?: boolean;\r\n            strokeWidth?: number;\r\n          },\r\n        );\r\n\r\n        contains(position: number[]): boolean;\r\n\r\n        equals(shape: IShape): boolean;\r\n\r\n        getBounds(): number[][] | null;\r\n\r\n        getGeometry(): IPixelGeometry;\r\n\r\n        getType(): string;\r\n\r\n        scale(factor: number): IShape;\r\n\r\n        shift(offset: number[]): IShape;\r\n      }\r\n    }\r\n\r\n    interface Meta {\r\n      coordinatesOrder: 'latlong' | 'longlat';\r\n      countryCode: string;\r\n      languageCode: string;\r\n      mode: 'release' | 'debug';\r\n      ns: typeof ymaps;\r\n      version: string;\r\n    }\r\n\r\n    const meta: Meta;\r\n\r\n    class Balloon extends Popup<Balloon> implements IBaloon<Balloon>, IBalloonManager<Balloon> {\r\n      constructor(map: Map, options?: IBalloonOptions);\r\n\r\n      getData(): object;\r\n\r\n      close(force?: boolean): Promise<Balloon>;\r\n\r\n      getParent(): Balloon | null;\r\n\r\n      setParent(parent: Balloon): this;\r\n\r\n      autoPan(): Promise<Balloon>;\r\n\r\n      freeze(): IFreezable;\r\n\r\n      isFrozen(): boolean;\r\n\r\n      unfreeze(): IFreezable;\r\n\r\n      add(\r\n        types: string[][] | string[] | string,\r\n        callback: (event: object | IEvent) => void,\r\n        context?: object,\r\n        priority?: number,\r\n      ): this;\r\n\r\n      group(): IEventGroup;\r\n\r\n      remove(\r\n        types: string[][] | string[] | string,\r\n        callback: (event: object | IEvent) => void,\r\n        context?: object,\r\n        priority?: number,\r\n      ): this;\r\n\r\n      fire(type: string, eventObject: object | IEvent): this;\r\n\r\n      destroy(): void;\r\n\r\n      getOptions(): IOptionManager | null;\r\n\r\n      setOptions(options: object): Promise<Balloon>;\r\n    }\r\n\r\n    interface IBalloonOptions {\r\n      autoPan?: boolean;\r\n      autoPanCheckZoomRange?: boolean;\r\n      autoPanDuration?: number;\r\n      autoPanMargin?: number | number[] | undefined;\r\n      autoPanUseMapMargin?: boolean;\r\n      closeButton?: boolean;\r\n      closeTimeout?: number | undefined;\r\n      contentLayout?: IClassConstructor<ILayout> | string;\r\n      interactivityModel?: InteractivityModelKey | undefined;\r\n      layout?: IClassConstructor<ILayout> | string;\r\n      maxHeight?: number;\r\n      maxWidth?: number;\r\n      minHeight?: number;\r\n      minWidth?: number;\r\n      offset?: number[];\r\n      openTimeout?: number | undefined;\r\n      pane?: string;\r\n      panelContentLayout?: IClassConstructor<ILayout> | string;\r\n      panelMaxHeightRatio?: number;\r\n      panelMaxMapArea?: number;\r\n      shadow?: boolean;\r\n      shadowLayout?: IClassConstructor<ILayout> | string;\r\n      shadowOffset?: number[];\r\n      zIndex?: string | undefined;\r\n    }\r\n\r\n    type IBalloonOptionsWithBalloonPrefix = Prefix<IBalloonOptions, 'balloon'>;\r\n\r\n    class Circle implements GeoObject<ICircleGeometry> {\r\n      constructor(\r\n        geometry: ICircleGeometry[][][][] | number[][] | object,\r\n        properties?: object | IDataManager,\r\n        options?: ICircleOptions,\r\n      );\r\n\r\n      balloon: geoObject.Balloon;\r\n\r\n      editor: IGeometryEditor;\r\n\r\n      hint: geoObject.Hint;\r\n\r\n      events: event.Manager;\r\n\r\n      options: option.Manager;\r\n\r\n      properties: data.Manager;\r\n\r\n      state: data.Manager;\r\n\r\n      geometry: ICircleGeometry | null;\r\n\r\n      indices: ArrayBuffer;\r\n\r\n      vertices: ArrayBuffer;\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n\r\n      getParent(): null | IControlParent;\r\n\r\n      setParent(parent: IControlParent): this;\r\n\r\n      getMap(): Map;\r\n    }\r\n\r\n    interface ICircleOptions {\r\n      circleOverlay?:\r\n        | string\r\n        | ((geometry: IPixelCircleGeometry, data: object, options: object) => Promise<IOverlay>);\r\n      cursor?: string;\r\n      draggable?: boolean;\r\n      fill?: boolean;\r\n      fillColor?: string;\r\n      fillImageHref?: string;\r\n      fillMethod?: 'stretch' | 'tile';\r\n      fillOpacity?: number;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      hideIconOnBalloonOpen?: boolean;\r\n      interactiveZIndex?: boolean;\r\n      interactivityModel?: InteractivityModelKey;\r\n      opacity?: number;\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyBalloon?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      outline?: boolean;\r\n      pane?: string;\r\n      strokeColor?: string[][] | string[] | string;\r\n      strokeOpacity?: number[][] | number[] | number;\r\n      strokeStyle?: string[][][] | object[][] | string[] | object[] | string | object;\r\n      strokeWidth?: number[][] | number[] | number;\r\n      syncOverlayInit?: boolean;\r\n      useMapMarginInDragging?: boolean;\r\n      visible?: boolean;\r\n      zIndex?: number;\r\n      zIndexActive?: number;\r\n      zIndexDrag?: number;\r\n      zIndexHover?: number;\r\n    }\r\n\r\n    class Clusterer implements IChildOnMap, ICustomizable, IEventEmitter, IParentOnMap {\r\n      constructor(options?: IClustererOptions);\r\n\r\n      events: IEventManager;\r\n\r\n      options: option.Manager;\r\n\r\n      balloon: clusterer.Balloon;\r\n\r\n      hint: clusterer.Hint;\r\n\r\n      add(objects: IGeoObject | IGeoObject[]): this;\r\n\r\n      createCluster(center: number[], geoObjects: IGeoObject[]): IGeoObject;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getClusters(): IGeoObject[];\r\n\r\n      getGeoObjects(): IGeoObject[];\r\n\r\n      getMap(): Map;\r\n\r\n      getObjectState(geoObject: IGeoObject): {\r\n        isShown: boolean;\r\n        cluster: any;\r\n        isClustered: boolean;\r\n      };\r\n\r\n      getParent(): IParentOnMap | null;\r\n\r\n      remove(objects: IGeoObject | IGeoObject[]): this;\r\n\r\n      removeAll(): this;\r\n\r\n      setParent(parent: IControlParent): this;\r\n    }\r\n\r\n    interface IClustererOptionsInject {\r\n      gridSize?: number;\r\n      groupByCoordinates?: boolean;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      margin?: number[] | number | undefined;\r\n      maxZoom?: number[] | number;\r\n      minClusterSize?: number;\r\n      preset?: PresetKey;\r\n      showInAlphabeticalOrder?: boolean;\r\n      useMapMargin?: boolean;\r\n      viewportMargin?: number[] | number | undefined;\r\n      zoomMargin?: number[] | number | undefined;\r\n    }\r\n\r\n    interface IClustererOptions\r\n      extends IClustererOptionsInject, IClusterPlacemarkOptionsWithClusterPrefix {\r\n      hasBalloon?: boolean | undefined;\r\n      hasHint?: boolean | undefined;\r\n\r\n      [key: string]: any;\r\n    }\r\n\r\n    class ClusterPlacemark implements IGeoObject, collection.Item {\r\n      constructor(\r\n        geometry: number[] | object | IPointGeometry,\r\n        properties: IClusterPlacemarkProperties,\r\n        options?: IClusterPlacemarkOptions,\r\n      );\r\n\r\n      geometry: IGeometry | null;\r\n\r\n      properties: IDataManager;\r\n\r\n      events: IEventManager;\r\n\r\n      options: IOptionManager;\r\n\r\n      state: data.Manager;\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n\r\n      getParent(): null | IControlParent;\r\n\r\n      setParent(parent: IControlParent): this;\r\n\r\n      getMap(): Map;\r\n\r\n      onAddToMap(map: Map): void;\r\n\r\n      onRemoveFromMap(oldMap: Map): void;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getGeoObjects(): IGeoObject[];\r\n    }\r\n\r\n    interface IClusterPlacemarkProperties extends IDataManager {\r\n      geoObjects: IGeoObject[];\r\n    }\r\n\r\n    interface IClusterPlacemarkOptions extends IBalloonOptionsWithBalloonPrefix {\r\n      balloonContentLayout?: IClassConstructor<ILayout> | ClusterLayoutKey | undefined;\r\n      balloonContentLayoutHeight?: number;\r\n      balloonContentLayoutWidth?: number;\r\n      balloonItemContentLayout?: ILayout | ClusterContentLayoutKey | undefined;\r\n      balloonPanelContentLayout?: IClassConstructor<ILayout> | ClusterLayoutKey | undefined;\r\n      hasBalloon?: boolean;\r\n      cursor?: string;\r\n      disableClickZoom?: boolean;\r\n      hideIconOnBalloonOpen?: boolean;\r\n      iconColor?: string;\r\n      iconContentLayout?: string | IClassConstructor<ILayout>;\r\n      iconLayout?: string | IClassConstructor<ILayout>;\r\n      icons?: {\r\n        href: string;\r\n        size: number[];\r\n        offset: number[];\r\n        shape?: IShape | IGeometryJson;\r\n      }[];\r\n      iconShape?: IGeometryJson;\r\n      interactivityModel?: InteractivityModelKey;\r\n      numbers?: number[];\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      zIndexHover?: number;\r\n    }\r\n\r\n    type IClusterPlacemarkOptionsWithClusterPrefix = Prefix<IClusterPlacemarkOptions, 'cluster'>;\r\n\r\n    class Collection<T = object> implements ICollection, collection.Item {\r\n      constructor(options?: object);\r\n\r\n      events: IEventManager;\r\n\r\n      options: IOptionManager;\r\n\r\n      add(object: object): this;\r\n\r\n      getIterator(): IIterator;\r\n\r\n      remove(object: object): this;\r\n\r\n      getParent(): null | IControlParent;\r\n\r\n      setParent(parent: IControlParent): this;\r\n\r\n      getMap(): Map;\r\n\r\n      onAddToMap(map: Map): void;\r\n\r\n      onRemoveFromMap(oldMap: Map): void;\r\n\r\n      filter(filterFunction: (object: object) => boolean): object[];\r\n\r\n      get(index: number): any;\r\n\r\n      getAll(): T[];\r\n\r\n      getLength(): number;\r\n\r\n      indexOf(childToFind: object): number;\r\n\r\n      removeAll(): this;\r\n    }\r\n\r\n    class Event<OriginalEvent = object, TargetGeometry = object> implements IEvent<\r\n      OriginalEvent,\r\n      TargetGeometry\r\n    > {\r\n      constructor(originalEvent: object, sourceEvent: IEvent);\r\n\r\n      originalEvent: {\r\n        domEvent: {\r\n          originalEvent: OriginalEvent;\r\n        };\r\n        target: {\r\n          geometry?: TargetGeometry;\r\n        };\r\n      };\r\n\r\n      allowMapEvent(): void;\r\n\r\n      callMethod(name: string): void;\r\n\r\n      get<T extends OriginalEvent, K extends keyof T = keyof T>(name: K): T[K];\r\n\r\n      get(name: string): any;\r\n\r\n      getSourceEvent(): IEvent<OriginalEvent, TargetGeometry> | null;\r\n\r\n      isDefaultPrevented(): boolean;\r\n\r\n      isImmediatePropagationStopped(): boolean;\r\n\r\n      isMapEventAllowed(): boolean;\r\n\r\n      isPropagationStopped(): boolean;\r\n\r\n      preventDefault(): boolean;\r\n\r\n      stopImmediatePropagation(): boolean;\r\n\r\n      stopPropagation(): boolean;\r\n    }\r\n\r\n    class DomEvent<OriginalEvent = object, TargetGeometry = object> implements IDomEvent<\r\n      OriginalEvent,\r\n      TargetGeometry\r\n    > {\r\n      constructor(originalEvent: DomEvent, type?: object);\r\n\r\n      originalEvent: {\r\n        domEvent: {\r\n          originalEvent: OriginalEvent;\r\n        };\r\n        target: {\r\n          geometry?: TargetGeometry | undefined;\r\n        };\r\n      };\r\n\r\n      allowMapEvent(): void;\r\n\r\n      callMethod(name: string): void;\r\n\r\n      get<T extends OriginalEvent, K extends keyof T = keyof T>(name: K): T[K];\r\n\r\n      get(name: string): any;\r\n\r\n      getSourceEvent(): IDomEvent<OriginalEvent, TargetGeometry>;\r\n\r\n      isDefaultPrevented(): boolean;\r\n\r\n      isImmediatePropagationStopped(): boolean;\r\n\r\n      isMapEventAllowed(): boolean;\r\n\r\n      isPropagationStopped(): boolean;\r\n\r\n      preventDefault(): boolean;\r\n\r\n      stopImmediatePropagation(): boolean;\r\n\r\n      stopPropagation(): boolean;\r\n    }\r\n\r\n    class GeoObject<T = IGeometry, TargetGeometry = object> implements IGeoObject<T> {\r\n      constructor(feature?: IGeoObjectFeature, options?: IGeoObjectOptions);\r\n\r\n      geometry: T | null;\r\n\r\n      balloon: geoObject.Balloon;\r\n\r\n      editor: IGeometryEditor;\r\n\r\n      hint: geoObject.Hint;\r\n\r\n      events: event.Manager<TargetGeometry>;\r\n\r\n      options: option.Manager;\r\n\r\n      properties: data.Manager;\r\n\r\n      state: data.Manager;\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n\r\n      getParent(): null | IControlParent;\r\n\r\n      setParent(parent: IControlParent): this;\r\n\r\n      getMap(): Map;\r\n    }\r\n\r\n    class GeocodeResult implements IGeoObject {\r\n      events: IEventManager;\r\n      geometry: IGeometry | null;\r\n      options: IOptionManager;\r\n      properties: IDataManager;\r\n      state: IDataManager;\r\n\r\n      getAddressLine(): string;\r\n      getAdministrativeAreas(): ReadonlyArray<string>;\r\n      getCountry(): string | null;\r\n      getCountryCode(): string | null;\r\n      getLocalities(): ReadonlyArray<string>;\r\n      getMap(): Map;\r\n      getOverlay(): Promise<IOverlay | null>;\r\n      getOverlaySync(): IOverlay | null;\r\n      getParent(): object | null;\r\n      getPremise(): string | null;\r\n      getPremiseNumber(): string | null;\r\n      getThoroughfare(): string | null;\r\n      setParent(parent: object | null): this;\r\n    }\r\n\r\n    interface IGeoObjectFeature {\r\n      geometry?: IGeometry | IGeometryJson;\r\n      properties?: IDataManager | object;\r\n    }\r\n\r\n    interface IGeoObjectOptions\r\n      extends IBalloonOptionsWithBalloonPrefix, IHintOptionsWithHintPrefix {\r\n      circleOverlay?:\r\n        | string\r\n        | ((geometry: IPixelCircleGeometry, data: object, options: object) => Promise<IOverlay>);\r\n      cursor?: string;\r\n      draggable?: boolean;\r\n      fill?: boolean;\r\n      fillColor?: string;\r\n      fillImageHref?: string;\r\n      fillMethod?: 'stretch' | 'tile';\r\n      fillOpacity?: number;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      hideIconOnBalloonOpen?: boolean;\r\n      iconCaptionMaxWidth?: number;\r\n      iconColor?: string;\r\n      iconContentLayout?: string | IClassConstructor<ILayout>;\r\n      iconContentOffset?: number[];\r\n      iconContentPadding?: number[];\r\n      iconContentSize?: number[];\r\n      iconImageClipRect?: number[][];\r\n      iconImageHref?: string;\r\n      iconImageOffset?: number[];\r\n      iconImageShape?: IShape | null;\r\n      iconImageSize?: number[];\r\n      iconLayout?: string | IClassConstructor<ILayout>;\r\n      iconMaxHeight?: number;\r\n      iconMaxWidth?: number;\r\n      iconOffset?: number[];\r\n      iconShadow?: boolean;\r\n      iconShadowImageClipRect?: number[][];\r\n      iconShadowImageHref?: string;\r\n      iconShadowImageOffset?: number[];\r\n      iconShadowImageSize?: number[];\r\n      iconShadowLayout?: string | IClassConstructor<ILayout>;\r\n      iconShadowOffset?: number[];\r\n      interactiveZIndex?: boolean;\r\n      interactivityModel?: InteractivityModelKey;\r\n      lineStringOverlay?: OverlayKey;\r\n      opacity?: number;\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyBalloon?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      outline?: boolean;\r\n      pane?: string;\r\n      pointOverlay?: OverlayKey;\r\n      polygonOverlay?: OverlayKey;\r\n      preset?: PresetKey | undefined;\r\n      rectangleOverlay?: OverlayKey;\r\n      setMapCursorInDragging?: boolean;\r\n      strokeColor?: string[][] | string[] | string;\r\n      strokeOpacity?: number[][] | number[] | number;\r\n      strokeStyle?: string[][][] | object[][] | string[] | object[] | string | object;\r\n      strokeWidth?: number[][] | number[] | number;\r\n      syncOverlayInit?: boolean;\r\n      useMapMarginInDragging?: boolean;\r\n      visible?: boolean;\r\n      zIndex?: number;\r\n      zIndexActive?: number;\r\n      zIndexDrag?: number;\r\n      zIndexHover?: number;\r\n\r\n      [key: string]: any;\r\n    }\r\n\r\n    type IGeoObjectOptionsWithGeoObjectPrefix = Prefix<IGeoObjectOptions, 'geoObject'>;\r\n\r\n    class GeoObjectCollection implements IGeoObject, IGeoObjectCollection {\r\n      constructor(\r\n        feature?: {\r\n          children?: IGeoObject[];\r\n          geometry?: IGeometry | object;\r\n          properties?: IDataManager | object;\r\n        },\r\n        options?: object,\r\n      );\r\n\r\n      geometry: IGeometry | null;\r\n\r\n      properties: IDataManager;\r\n\r\n      state: IDataManager;\r\n\r\n      events: IEventManager;\r\n\r\n      options: IOptionManager;\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n\r\n      getParent(): null | IControlParent;\r\n\r\n      setParent(parent: IControlParent): this;\r\n\r\n      getMap(): Map;\r\n\r\n      add(child: IGeoObject, index?: number): this;\r\n\r\n      each(callback: (object: IGeoObject) => void, context?: object): void;\r\n\r\n      get(index: number): IGeoObject;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getIterator(): IIterator;\r\n\r\n      getLength(): number;\r\n\r\n      getPixelBounds(): number[][] | null;\r\n\r\n      indexOf(object: IGeoObject): number;\r\n\r\n      remove(child: IGeoObject): this;\r\n\r\n      removeAll(): this;\r\n\r\n      set(index: number, child: IGeoObject): this;\r\n\r\n      splice(index: number, length: number): this;\r\n\r\n      toArray(): IGeoObject[];\r\n    }\r\n\r\n    interface ILayerOptions {\r\n      brightness?: number;\r\n      notFoundTile?: string | null;\r\n      pane?: IPane | string;\r\n      projection?: any;\r\n      tileSize?: number[][];\r\n      tileTransparent?: boolean;\r\n      zIndex?: number;\r\n    }\r\n\r\n    class Layer implements ILayer, IParentOnMap, IPositioningContext {\r\n      constructor(\r\n        tileUrlTemplate: string | ((tileNumber: number[], tileZoom: number) => string),\r\n        options?: ILayerOptions,\r\n      );\r\n\r\n      events: IEventManager;\r\n\r\n      options: IOptionManager;\r\n\r\n      clientPixelsToNumber(clientPixelPoint: number, tileZoom: number): number[];\r\n\r\n      fromClientPixels(clientPixelPoint: number[]): number[];\r\n\r\n      getBrightness?(): number;\r\n\r\n      getCopyrights?(coords: number[], zoom: number): Promise<Array<string | HTMLElement>>;\r\n\r\n      getMap(): Map;\r\n\r\n      getPane(): IPane;\r\n\r\n      getParent(): null | IControlParent;\r\n\r\n      getTileSize(zoom: number): number[];\r\n\r\n      getTileStatus(): { readyTileNumber: number; totalTileNumber: number };\r\n\r\n      getTileUrl(tileNumber: number[], tileZoom: number): string | null;\r\n\r\n      getTileUrlTemplate(): string | any;\r\n\r\n      getZoom(): number;\r\n\r\n      getZoomRange?(point: number[]): Promise<number[]>;\r\n\r\n      numberToClientBounds(tileNumber: number[], tileZoom: number): number[][];\r\n\r\n      restrict(num: number[], tileZoom: number): number[] | null;\r\n\r\n      setParent(parent: IControlParent): this;\r\n\r\n      setTileUrlTemplate(tileUrlTemplate: string | any): void;\r\n\r\n      toClientPixels(globalPixelPoint: number[]): number[];\r\n\r\n      update(updateBounds: any): void;\r\n\r\n      getAlias(): string;\r\n\r\n      getElement(): HTMLElement;\r\n    }\r\n\r\n    type IHint = IPopup<IHint>;\r\n\r\n    interface IHintOptions {\r\n      closeTimeout?: number;\r\n      contentLayout?: IClassConstructor<ILayout> | string;\r\n      fitPane?: boolean;\r\n      holdByMouse?: boolean;\r\n      interactivityModel?: InteractivityModelKey;\r\n      layout?: IClassConstructor<ILayout> | string;\r\n      offset?: number[];\r\n      openTimeout?: number;\r\n      pane?: string;\r\n      zIndex?: number;\r\n    }\r\n\r\n    type IHintOptionsWithHintPrefix = Prefix<IHintOptions, 'hint'>;\r\n\r\n    class Hint extends Popup<Hint> implements IHint {\r\n      constructor(map: Map, options?: IHintOptions);\r\n    }\r\n\r\n    class Map implements IDomEventEmitter {\r\n      constructor(parentElement: HTMLElement | string, state: IMapState, options?: IMapOptions);\r\n\r\n      action: map.action.Manager;\r\n\r\n      balloon: map.Balloon;\r\n\r\n      behaviors: map.behavior.Manager;\r\n\r\n      container: map.Container;\r\n\r\n      controls: control.Manager;\r\n\r\n      converter: map.Converter;\r\n\r\n      copyrights: map.Copyrights;\r\n\r\n      cursors: util.cursor.Manager;\r\n\r\n      events: event.Manager;\r\n\r\n      geoObjects: map.GeoObjects;\r\n\r\n      hint: map.Hint;\r\n\r\n      layers: map.layer.Manager;\r\n\r\n      margin: map.margin.Manager;\r\n\r\n      options: option.Manager;\r\n\r\n      panes: map.pane.Manager;\r\n\r\n      zoomRange: map.ZoomRange;\r\n\r\n      destroy(): void;\r\n\r\n      getBounds(options?: IMapMarginOptions): number[][];\r\n\r\n      getCenter(options?: IMapMarginOptions): number[];\r\n\r\n      getGlobalPixelCenter(options?: IMapMarginOptions): number[];\r\n\r\n      getPanoramaManager(): Promise<panorama.Manager>;\r\n\r\n      getType(): string | MapType;\r\n\r\n      getZoom(): number;\r\n\r\n      panTo(center: number[] | object[], options?: IMapPanOptions): this;\r\n\r\n      setBounds(bounds: number[][], options?: IMapBoundsOptions): this;\r\n\r\n      setCenter(center: number[], zoom?: number, options?: IMapPositionOptions): this;\r\n\r\n      setGlobalPixelCenter(\r\n        globalPixelCenter: number[],\r\n        zoom?: number,\r\n        options?: IMapPositionOptions,\r\n      ): this;\r\n\r\n      setType(type: string | MapType, options?: IMapCheckZoomRangeOptions): this;\r\n\r\n      setZoom(zoom: number, options?: IMapZoomOptions): this;\r\n    }\r\n\r\n    class MapEvent<OriginalEvent = object, TargetGeometry = object> extends Event<\r\n      OriginalEvent,\r\n      TargetGeometry\r\n    > {\r\n      get(name: string): any;\r\n\r\n      get(name: 'coords' | 'globalPixels' | 'pagePixels' | 'clientPixels'): [number, number];\r\n\r\n      get(name: 'domEvent'): DomEvent<OriginalEvent, TargetGeometry> | undefined;\r\n    }\r\n\r\n    interface IMapMarginOptions {\r\n      useMapMargin?: boolean;\r\n    }\r\n\r\n    interface IMapCheckZoomRangeOptions {\r\n      checkZoomRange?: boolean;\r\n    }\r\n\r\n    interface IMapZoomOptions extends IMapMarginOptions, IMapCheckZoomRangeOptions {\r\n      duration?: number;\r\n    }\r\n\r\n    interface IMapPositionOptions extends IMapZoomOptions {\r\n      timingFunction?: string;\r\n    }\r\n\r\n    interface IMapBoundsOptions extends IMapPositionOptions {\r\n      preciseZoom?: boolean;\r\n      zoomMargin?: number[][] | number[];\r\n    }\r\n\r\n    interface IMapPanOptions extends IMapPositionOptions {\r\n      delay?: number;\r\n      flying?: boolean;\r\n      safe?: boolean;\r\n    }\r\n\r\n    class MapType {\r\n      constructor(name: string, layers: Array<IClassConstructor<Layer> | string>);\r\n    }\r\n\r\n    interface IMapState {\r\n      behaviors?: string[];\r\n      bounds?: number[][];\r\n      center?: number[];\r\n      controls?: ControlKey[];\r\n      margin?: number | number[];\r\n      type?: 'yandex#map' | 'yandex#satellite' | 'yandex#hybrid' | MapType;\r\n      zoom?: number;\r\n    }\r\n\r\n    interface IMapOptions {\r\n      autoFitToViewport?: 'none' | 'ifNull' | 'always';\r\n      avoidFractionalZoom?: boolean;\r\n      exitFullscreenByEsc?: boolean;\r\n      fullscreenZIndex?: number;\r\n      mapAutoFocus?: boolean;\r\n      maxAnimationZoomDifference?: number;\r\n      maxZoom?: number;\r\n      minZoom?: number;\r\n      nativeFullscreen?: boolean;\r\n      projection?: IProjection;\r\n      restrictMapArea?: boolean | number[][] | undefined;\r\n      suppressMapOpenBlock?: boolean;\r\n      suppressObsoleteBrowserNotifier?: boolean;\r\n      yandexMapAutoSwitch?: boolean;\r\n      yandexMapDisablePoiInteractivity?: boolean;\r\n\r\n      copyrightLogoVisible?: boolean;\r\n      copyrightProvidersVisible?: boolean;\r\n      copyrightUaVisible?: boolean;\r\n    }\r\n\r\n    class Placemark extends GeoObject<IPointGeometry, geometry.Point> {\r\n      constructor(\r\n        geometry: number[] | object | IPointGeometry,\r\n        properties?: IPlacemarkProperties | IDataManager,\r\n        options?: IPlacemarkOptions,\r\n      );\r\n    }\r\n\r\n    interface IPlacemarkProperties {\r\n      iconContent?: string;\r\n      iconCaption?: string;\r\n      hintContent?: string;\r\n      balloonContent?: string;\r\n      balloonContentHeader?: string;\r\n      balloonContentBody?: string;\r\n      balloonContentFooter?: string;\r\n      [key: string]: any;\r\n    }\r\n\r\n    interface IPlacemarkOptions\r\n      extends\r\n        layout.IImageOptionsWithIconPrefix,\r\n        layout.IImageWithContentOptionsWithIconPrefix,\r\n        layout.IPieChartOptionsWithIconPrefix,\r\n        IBalloonOptionsWithBalloonPrefix,\r\n        IHintOptionsWithHintPrefix {\r\n      cursor?: string;\r\n      draggable?: boolean;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      hideIconOnBalloonOpen?: boolean;\r\n      iconColor?: string | undefined;\r\n      iconLayout?: IClassConstructor<ILayout> | IconLayoutKey | undefined;\r\n      iconOffset?: number[];\r\n      iconShape?: IGeometryJson | null;\r\n      interactiveZIndex?: boolean;\r\n      interactivityModel?: InteractivityModelKey | undefined;\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyBalloon?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      pane?: string;\r\n      pointOverlay?: string;\r\n      preset?: PresetKey | undefined;\r\n      syncOverlayInit?: boolean;\r\n      useMapMarginInDragging?: boolean;\r\n      visible?: boolean;\r\n      zIndex?: number;\r\n      zIndexActive?: number;\r\n      zIndexDrag?: number;\r\n      zIndexHover?: number;\r\n\r\n      [key: string]: any;\r\n    }\r\n\r\n    class Polygon extends GeoObject<IPolygonGeometry> {\r\n      constructor(\r\n        geometry: number[][][] | object | IPolygonGeometry,\r\n        properties?: object | IDataManager,\r\n        options?: IPolygonOptions,\r\n      );\r\n    }\r\n\r\n    interface IPolygonOptions {\r\n      cursor?: string;\r\n      draggable?: boolean;\r\n      fill?: boolean;\r\n      fillColor?: string;\r\n      fillImageHref?: string;\r\n      fillMethod?: 'stretch' | 'tile';\r\n      fillOpacity?: number;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      interactiveZIndex?: boolean;\r\n      interactivityModel?: InteractivityModelKey | undefined;\r\n      opacity?: number;\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyBalloon?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      outline?: boolean;\r\n      pane?: string;\r\n      polygonOverlay?: string;\r\n      strokeColor?: string | string[];\r\n      strokeOpacity?: number | number[];\r\n      strokeStyle?: string | string[] | object | object[];\r\n      strokeWidth?: number | number[];\r\n      syncOverlayInit?: boolean;\r\n      useMapMarginInDragging?: boolean;\r\n      visible?: boolean;\r\n      zIndex?: number;\r\n      zIndexActive?: number;\r\n      zIndexDrag?: number;\r\n      zIndexHover?: number;\r\n    }\r\n\r\n    class Polyline extends GeoObject<ILineStringGeometry> {\r\n      constructor(\r\n        geometry: number[][] | object | ILineStringGeometry,\r\n        properties?: object | IDataManager,\r\n        options?: IPolylineOptions,\r\n      );\r\n    }\r\n\r\n    interface IPolylineOptions {\r\n      cursor?: string;\r\n      draggable?: boolean;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      interactiveZIndex?: boolean;\r\n      interactivityModel?: InteractivityModelKey | undefined;\r\n      lineStringOverlay?: () => object | string;\r\n      opacity?: number;\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyBalloon?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      pane?: string;\r\n      strokeColor?: string | string[];\r\n      strokeOpacity?: number | number[];\r\n      strokeStyle?: string | string[] | object | object[];\r\n      strokeWidth?: number | number[];\r\n      syncOverlayInit?: boolean;\r\n      useMapMarginInDragging?: boolean;\r\n      visible?: boolean;\r\n      zIndex?: number;\r\n      zIndexActive?: number;\r\n      zIndexDrag?: number;\r\n      zIndexHover?: number;\r\n    }\r\n\r\n    class Popup<T> implements IPopup<T> {\r\n      constructor(map: Map, options?: IPopupOptions);\r\n\r\n      options: IOptionManager;\r\n\r\n      events: IEventManager;\r\n\r\n      close(force?: boolean): Promise<T>;\r\n\r\n      getData(): object;\r\n\r\n      getOverlay(): Promise<IOverlay>;\r\n\r\n      getOverlaySync(): IOverlay;\r\n\r\n      getPosition(): number[];\r\n\r\n      isOpen(): boolean;\r\n\r\n      open(position: number[], data: object | string | HTMLElement): Promise<T>;\r\n\r\n      setData(data: object | string | HTMLElement): Promise<T>;\r\n\r\n      setPosition(position: number[]): Promise<T>;\r\n    }\r\n\r\n    interface IPopupOptions {\r\n      closeTimeout?: number;\r\n      interactivityModel?: InteractivityModelKey;\r\n      openTimeout?: number;\r\n      pane?: IPane | string;\r\n      projection?: IProjection;\r\n      zIndex?: number;\r\n    }\r\n\r\n    function suggest(request: string, options?: ISuggestOptions): Promise<ISuggestResult[]>;\r\n\r\n    interface ISuggestResult {\r\n      displayName: string;\r\n\r\n      value: string;\r\n\r\n      hl: number[][];\r\n\r\n      type: string;\r\n    }\r\n\r\n    interface ISuggestProvider {\r\n      suggest(\r\n        request: string,\r\n        options?: Omit<ISuggestOptions, 'provider'>,\r\n      ): Promise<ISuggestResult[]>;\r\n    }\r\n\r\n    interface ISuggestOptions {\r\n      boundedBy?: number[][];\r\n\r\n      provider?: ISuggestProvider | string;\r\n\r\n      results?: number;\r\n    }\r\n\r\n    function ready(\r\n      successCallback?: () => any | IReadyObject,\r\n      errorCallback?: () => any,\r\n      context?: object,\r\n    ): Promise<void>;\r\n\r\n    interface IReadyObject {\r\n      require?: string[];\r\n      context?: object;\r\n\r\n      successCallback?(): void;\r\n\r\n      errorCallback?(): void;\r\n    }\r\n\r\n    interface IRectangleProperties {\r\n      hintContent?: string;\r\n      balloonContent?: string;\r\n      balloonContentHeader?: string;\r\n      balloonContentBody?: string;\r\n      balloonContentFooter?: string;\r\n    }\r\n\r\n    interface IRectangleOptions\r\n      extends IBalloonOptionsWithBalloonPrefix, IHintOptionsWithHintPrefix {\r\n      cursor?: string;\r\n      draggable?: boolean;\r\n      fill?: boolean;\r\n      fillColor?: string;\r\n      fillImageHref?: string;\r\n      fillMethod?: string;\r\n      fillOpacity?: number;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      interactiveZIndex?: boolean;\r\n      interactivityModel?: InteractivityModelKey;\r\n      opacity?: number;\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyBalloon?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      outline?: boolean;\r\n      pane?: string;\r\n      rectangleOverlay?:\r\n        | OverlayKey\r\n        | ((\r\n            geometry: IPixelCircleGeometry,\r\n            data: IDataManager | object,\r\n            options: object,\r\n          ) => vow.Promise);\r\n      strokeColor?: string | string[];\r\n      strokeOpacity?: number | number[];\r\n      strokeStyle?: string | string[] | object | object[];\r\n      strokeWidth?: number | number[];\r\n      syncOverlayInit?: boolean;\r\n      useMapMarginInDragging?: boolean;\r\n      visible?: boolean;\r\n      zIndex?: number;\r\n      zIndexActive?: number;\r\n      zIndexDrag?: number;\r\n      zIndexHover?: number;\r\n\r\n      [key: string]: any;\r\n    }\r\n\r\n    interface IRectangleGeometryAccess extends IFreezable {\r\n      contains(position: number[]): boolean;\r\n\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][];\r\n\r\n      setCoordinates(coordinates: number[][]): IRectangleGeometryAccess;\r\n    }\r\n\r\n    interface IRectangleGeometry extends IGeometry, IRectangleGeometryAccess {\r\n      getType(): string;\r\n    }\r\n\r\n    class Rectangle extends GeoObject<ILineStringGeometry> {\r\n      constructor(\r\n        geometry: number[][] | object | IRectangleGeometry,\r\n        properties?: IRectangleProperties | IDataManager,\r\n        options?: IRectangleOptions,\r\n      );\r\n    }\r\n\r\n    namespace regions {\r\n      function load(\r\n        region: string,\r\n        options?: {\r\n          disputedBorders?: string;\r\n          lang?: string;\r\n          quality?: number;\r\n        },\r\n      ): vow.Promise;\r\n    }\r\n\r\n    namespace template {\r\n      const filtersStorage: util.Storage;\r\n    }\r\n\r\n    namespace templateLayoutFactory {\r\n      function createClass<O extends object = object, S extends object = object>(\r\n        template: string,\r\n        overrides?: O,\r\n        staticMethods?: S,\r\n      ): IClassConstructor<layout.templateBased.Base & O & S>;\r\n    }\r\n\r\n    type ResolveCallbackFunction = (\r\n      provide: (module: any, error?: any) => void,\r\n      ...depends: any[]\r\n    ) => void;\r\n\r\n    interface IRatioMap {\r\n      [key: string]: string;\r\n    }\r\n\r\n    namespace util {\r\n      class AsyncStorage extends Storage {\r\n        define(\r\n          key: string,\r\n          depends: string[],\r\n          resolveCallback: ResolveCallbackFunction,\r\n          context?: object,\r\n        ): this;\r\n\r\n        define(key: string, resolveCallback: ResolveCallbackFunction, context?: object): this;\r\n\r\n        isDefined(key: string): boolean;\r\n\r\n        require(\r\n          keys: string | string[],\r\n          successCallback?: (...args: any[]) => void,\r\n          errorCallback?: (error: any) => void,\r\n          context?: object,\r\n        ): vow.Promise;\r\n      }\r\n\r\n      function augment(ChildClass: any, ParentClass: any, override: object): any;\r\n\r\n      function bind(callback: any, context: object): any;\r\n\r\n      const bounds: {\r\n        areIntersecting(\r\n          bounds1: number[][],\r\n          bounds2: number[][],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): boolean;\r\n\r\n        containsBounds(\r\n          outer: number[][],\r\n          inner: number[][],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): boolean;\r\n\r\n        containsPoint(\r\n          bounds: number[][],\r\n          point: number[],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): boolean;\r\n\r\n        fromBounds(\r\n          sourceBounds: number[][],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): number[][];\r\n\r\n        fromGlobalPixelBounds(\r\n          pixelBounds: number[][],\r\n          zoom: number,\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): number[][];\r\n\r\n        fromPoints(\r\n          points: number[][],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): number[][];\r\n\r\n        getCenter(bounds: number[][], projection?: typeof ymaps.projection.wgs84Mercator): number[];\r\n\r\n        getCenterAndZoom(\r\n          bounds: number[][],\r\n          containerSize: number[],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n          params?: {\r\n            inscribe?: boolean;\r\n            margin?: number | number[];\r\n            preciseZoom?: boolean;\r\n          },\r\n        ): object;\r\n\r\n        getIntersections(\r\n          bounds1: number[][],\r\n          bounds2: number[][],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): number[][][];\r\n\r\n        getSize(bounds: number[][], projection?: typeof ymaps.projection.wgs84Mercator): number[];\r\n\r\n        toGlobalPixelBounds(\r\n          geoBounds: number[][],\r\n          zoom: number[],\r\n          projection?: typeof ymaps.projection.wgs84Mercator,\r\n        ): number[][];\r\n      };\r\n\r\n      namespace cursor {\r\n        class Accessor {\r\n          constructor(key: string);\r\n\r\n          getKey(): string;\r\n\r\n          remove(): void;\r\n\r\n          setKey(key: string): void;\r\n        }\r\n\r\n        class Manager {\r\n          constructor(element: HTMLElement);\r\n\r\n          events: event.Manager;\r\n\r\n          push(key: string): Accessor;\r\n        }\r\n      }\r\n\r\n      function defineClass(constructor: any, parentClass?: any, override?: object): any;\r\n\r\n      function defineClass(constructor: any, override?: object): any;\r\n\r\n      class Dragger implements IEventEmitter {\r\n        constructor(params?: {\r\n          autoStartElement?: HTMLElement | IDomEventEmitter;\r\n          byRightButton?: boolean;\r\n          tremor?: number;\r\n        });\r\n\r\n        events: IEventManager;\r\n\r\n        destroy(): void;\r\n\r\n        isDragging(): boolean;\r\n\r\n        start(event: IDomEvent): void;\r\n\r\n        stop(): void;\r\n      }\r\n\r\n      function extend(target: object, ...source: object[]): object;\r\n\r\n      const hd: {\r\n        getPixelRatio(): number;\r\n\r\n        selectRatio(hash: IRatioMap): number;\r\n\r\n        selectValue(hash: object | IRatioMap): object;\r\n      };\r\n\r\n      namespace math {\r\n        function areEqual(first: number[], second: number[], diff?: number): boolean;\r\n\r\n        function cycleRestrict(value: number, min: number, max: number): number;\r\n\r\n        function restrict(value: number, min: number, max: number): number;\r\n      }\r\n\r\n      const pixelBounds: {\r\n        areIntersecting(bounds1: number[][], bounds2: number[][]): boolean;\r\n\r\n        containsBounds(outer: number[][], inner: number[][]): boolean;\r\n\r\n        containsPoint(bounds: number[][], point: number[][]): boolean;\r\n\r\n        fromBounds(sourceBounds: number[][]): number[][];\r\n\r\n        fromPoints(points: number[][]): number[][];\r\n\r\n        getCenter(bounds: number[][]): number[];\r\n\r\n        getIntersection(bounds1: number[][], bounds2: number[][]): number[][] | null;\r\n\r\n        getSize(bounds: number[][]): number[];\r\n      };\r\n\r\n      function requireCenterAndZoom(\r\n        mapType: string | MapType | map.ZoomRange,\r\n        bounds: number[][],\r\n        containerSize: number[],\r\n        params?: {\r\n          inscribe?: boolean;\r\n          margin?: number | number[];\r\n          preciseZoom?: boolean;\r\n        },\r\n      ): vow.Promise;\r\n\r\n      class Storage {\r\n        add(key: string, object: Record<string, any>): this;\r\n\r\n        get(key: string | Record<string, any>): Record<string, any> | string;\r\n\r\n        remove(key: string): this;\r\n      }\r\n    }\r\n\r\n    namespace vow {\r\n      class Deferred {\r\n        promise(): vow.Promise;\r\n\r\n        reject(reason: any): void;\r\n\r\n        resolve(value: any): void;\r\n      }\r\n\r\n      class Promise {\r\n        constructor(resolver?: (resolve?: any, reject?: any) => void);\r\n\r\n        done(\r\n          onFulfilled?: (...args: any[]) => void,\r\n          onRejected?: (err?: Error | any) => void,\r\n          onProgress?: (...args: any[]) => void,\r\n          ctx?: object,\r\n        ): void;\r\n\r\n        spread(\r\n          onFulfilled?: (...args: any[]) => void,\r\n          onRejected?: (err?: Error | any) => void,\r\n          ctx?: object,\r\n        ): vow.Promise;\r\n\r\n        then(\r\n          onFulfilled?: (...args: any[]) => void,\r\n          onRejected?: (err?: Error | any) => void,\r\n          onProgress?: (...args: any[]) => void,\r\n          ctx?: object,\r\n        ): vow.Promise;\r\n\r\n        valueOf(): object;\r\n      }\r\n\r\n      function all(iterable: any): vow.Promise;\r\n\r\n      function defer(): vow.Deferred;\r\n\r\n      function reject(reason: any): vow.Promise;\r\n\r\n      function resolve(value: any): vow.Promise;\r\n    }\r\n\r\n    /* Interfaces */\r\n\r\n    interface IBaloon<T> extends IPopup<T>, ICustomizable, IChild<T>, IFreezable {\r\n      autoPan(): Promise<T>;\r\n    }\r\n\r\n    interface IBalloonManager<T> extends IPopupManager<T> {\r\n      autoPan(): Promise<T>;\r\n    }\r\n\r\n    interface IBaseGeometry extends IEventEmitter {\r\n      getBounds(): number[][] | null;\r\n\r\n      getType(): string;\r\n    }\r\n\r\n    interface IBaseLineStringGeometry extends IBaseGeometry, ILineStringGeometryAccess {}\r\n\r\n    interface IBasePointGeometry extends IBaseGeometry, IPointGeometryAccess {}\r\n\r\n    interface IBasePolygonGeometry extends IBaseGeometry, IPolygonGeometryAccess {}\r\n\r\n    interface IBehavior extends IChildOnMap, ICustomizable {\r\n      disable(): void;\r\n\r\n      enable(): void;\r\n\r\n      isEnabled(): boolean;\r\n    }\r\n\r\n    interface IChild<T> extends IEventEmitter {\r\n      getParent(): object | null;\r\n\r\n      setParent(parent: object | null): this;\r\n    }\r\n\r\n    type IChildOnMap = IChild<IControlParent>;\r\n\r\n    interface ICircleGeometry extends ICircleGeometryAccess, IGeometry {}\r\n\r\n    interface ICircleGeometryAccess extends IFreezable {\r\n      contains(position: number[]): boolean;\r\n\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[] | null;\r\n\r\n      getRadius(): number;\r\n\r\n      setCoordinates(coordinates: number[] | null): ICircleGeometryAccess;\r\n\r\n      setRadius(radius: number): ICircleGeometryAccess;\r\n    }\r\n\r\n    interface ICollection extends IEventEmitter {\r\n      add(object: object): this;\r\n\r\n      getIterator(): IIterator;\r\n\r\n      remove(object: object): this;\r\n    }\r\n\r\n    interface IContainerPane extends IPane, IPositioningContext {}\r\n\r\n    type IControl = IChildOnMap;\r\n\r\n    interface IControlParent extends IParentOnMap {\r\n      getChildElement(child: IControl): Promise<HTMLElement>;\r\n    }\r\n\r\n    interface ICoordSystem {\r\n      getDistance(point1: number[], point2: number[]): number;\r\n\r\n      solveDirectProblem(startPoint: number[], direction: number[], distance: number): object;\r\n\r\n      solveInverseProblem(\r\n        startPoint: number[],\r\n        endPoint: number[],\r\n        reverseDirection?: boolean,\r\n      ): object;\r\n    }\r\n\r\n    type ICopyrightsAccessor = ICopyrightsProvider;\r\n\r\n    interface ICopyrightsProvider extends IEventEmitter {\r\n      getCopyrights(coords: number[], zoom: number): Promise<Array<string | HTMLElement>>;\r\n\r\n      remove(): void;\r\n\r\n      setCopyrights(copyrights: string | HTMLElement | Array<string | HTMLElement>): void;\r\n    }\r\n\r\n    interface ICustomizable extends IEventEmitter {\r\n      options: IOptionManager;\r\n    }\r\n\r\n    interface IDataManager extends IEventEmitter {\r\n      set(key: Record<string, any> | string, value?: any): this;\r\n\r\n      get(path: string, defaultValue?: any): any;\r\n    }\r\n\r\n    type IDomEventEmitter = IEventEmitter;\r\n\r\n    interface IEvent<OriginalEvent = object, TargetGeometry = object> {\r\n      originalEvent: {\r\n        domEvent: {\r\n          originalEvent: OriginalEvent;\r\n        };\r\n        target: {\r\n          geometry?: TargetGeometry | undefined;\r\n        };\r\n      };\r\n\r\n      allowMapEvent(): void;\r\n\r\n      callMethod(name: string): void;\r\n\r\n      get<T extends OriginalEvent, K extends keyof T = keyof T>(name: K): T[K];\r\n\r\n      get(name: 'type'): string;\r\n\r\n      get(name: 'objectId'): string | undefined;\r\n\r\n      get(name: 'newZoom' | 'oldZoom'): number | undefined;\r\n\r\n      get(name: string): any;\r\n\r\n      getSourceEvent(): IEvent<OriginalEvent, TargetGeometry> | null;\r\n\r\n      isDefaultPrevented(): boolean;\r\n\r\n      isImmediatePropagationStopped(): boolean;\r\n\r\n      isMapEventAllowed(): boolean;\r\n\r\n      isPropagationStopped(): boolean;\r\n\r\n      preventDefault(): boolean;\r\n\r\n      stopImmediatePropagation(): boolean;\r\n\r\n      stopPropagation(): boolean;\r\n    }\r\n\r\n    interface IDomEvent<OriginalEvent = object, TargetGeometry = object> extends IEvent<\r\n      OriginalEvent,\r\n      TargetGeometry\r\n    > {\r\n      getSourceEvent(): IDomEvent<OriginalEvent, TargetGeometry>;\r\n    }\r\n\r\n    interface IEventController {\r\n      onStartListening?(events: IEventManager, type: string): void;\r\n\r\n      onStopListening?(events: IEventManager, type: string): void;\r\n    }\r\n\r\n    interface IEventEmitter {\r\n      events: IEventManager;\r\n    }\r\n\r\n    interface IEventGroup {\r\n      add<K extends keyof EventMap>(\r\n        types: K,\r\n        callback: (event: EventMap[K] | IEvent) => void,\r\n        context?: object,\r\n        priority?: number,\r\n      ): this;\r\n\r\n      add(\r\n        types: string[][] | string[] | string,\r\n        callback: (event: object | IEvent) => void,\r\n        context?: object,\r\n        priority?: number,\r\n      ): this;\r\n\r\n      remove(\r\n        types: string[][] | string[] | string,\r\n        callback: (event: object | IEvent) => void,\r\n        context?: object,\r\n        priority?: number,\r\n      ): this;\r\n\r\n      removeAll(): this;\r\n    }\r\n\r\n    interface IEventManager<TargetGeometry = object> extends IEventTrigger {\r\n      add(\r\n        types: string[][] | string[] | string,\r\n        callback: (event: IEvent) => void,\r\n        context?: object,\r\n        priority?: number,\r\n      ): this;\r\n\r\n      getParent(): object | null;\r\n\r\n      group(): IEventGroup;\r\n\r\n      remove(\r\n        types: string[][] | string[] | string,\r\n        callback: (event: object | IEvent) => void,\r\n        context?: object,\r\n        priority?: number,\r\n      ): this;\r\n\r\n      setParent(parent: object | null): this;\r\n    }\r\n\r\n    interface IEventPane extends IDomEventEmitter, IPane {}\r\n\r\n    interface IEventTrigger {\r\n      fire(type: string, eventObject?: object | IEvent): this;\r\n    }\r\n\r\n    interface IEventWorkflowController extends IEventController {\r\n      onAfterEventFiring?(events: IEventManager, type: string, event?: IEvent): void;\r\n\r\n      onBeforeEventFiring?(events: IEventManager, type: string, event?: IEvent): void;\r\n    }\r\n\r\n    type IExpandableControlLayout = ILayout;\r\n\r\n    interface IFreezable {\r\n      events: IEventManager;\r\n\r\n      freeze(): IFreezable;\r\n\r\n      isFrozen(): boolean;\r\n\r\n      unfreeze(): IFreezable;\r\n    }\r\n\r\n    interface IGeocodeProvider {\r\n      geocode(\r\n        request: string,\r\n        options?: {\r\n          boundedBy?: number[][];\r\n          results?: number;\r\n          skip?: number;\r\n          strictBounds?: boolean;\r\n        },\r\n      ): Promise<object>;\r\n\r\n      suggest(\r\n        request: string,\r\n        options?: {\r\n          boundedBy?: number[][];\r\n          results?: number;\r\n          strictBounds?: boolean;\r\n        },\r\n      ): Promise<object>;\r\n    }\r\n\r\n    function geocode(\r\n      request: string | number[],\r\n      options?: IGeocodeOptions,\r\n    ): Promise<IGeocodeResult>;\r\n\r\n    interface IGeocodeOptions {\r\n      boundedBy?: number[][];\r\n      json?: boolean;\r\n      kind?: string;\r\n      provider?: IGeocodeProvider | string;\r\n      results?: number;\r\n      searchCoordOrder?: string;\r\n      skip?: number;\r\n      strictBounds?: boolean;\r\n    }\r\n\r\n    interface IGeocodeResult {\r\n      geoObjects: GeoObjectCollection;\r\n    }\r\n\r\n    interface IGeometry extends IBaseGeometry, ICustomizable {\r\n      getMap(): Map | null;\r\n\r\n      getPixelGeometry(options?: object): IPixelGeometry;\r\n\r\n      setMap(map: Map): void;\r\n    }\r\n\r\n    interface IGeometryEditor extends ICustomizable, IEventEmitter {\r\n      geometry: IGeometry;\r\n      state: IDataManager;\r\n\r\n      startEditing(): void;\r\n\r\n      stopEditing(): void;\r\n    }\r\n\r\n    interface IGeometryEditorChildModel extends IGeometryEditorModel {\r\n      editor: IGeometryEditor;\r\n      geometry: IBaseGeometry;\r\n\r\n      getParent(): IGeometryEditorModel;\r\n\r\n      setPixels(pixels: number[]): void;\r\n    }\r\n\r\n    interface IGeometryEditorModel extends IEventEmitter {\r\n      destroy(): void;\r\n\r\n      getPixels(): number[];\r\n    }\r\n\r\n    type IGeometryEditorRootModel = IGeometryEditorModel;\r\n\r\n    interface IGeometryJson {\r\n      type: string;\r\n      coordinates: number[] | number[][] | number[][][];\r\n      fillRule?: 'evenOdd' | 'nonZero';\r\n      radius?: number;\r\n      [key: string]: any;\r\n    }\r\n\r\n    interface IGeoObject<T = IGeometry>\r\n      extends IChildOnMap, ICustomizable, IDomEventEmitter, IParentOnMap {\r\n      geometry: T | null;\r\n\r\n      properties: IDataManager;\r\n\r\n      state: IDataManager;\r\n\r\n      balloon?: geoObject.Balloon;\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n    }\r\n\r\n    interface IGeoObjectCollection extends ICustomizable, IEventEmitter, IParentOnMap {\r\n      add(child: IGeoObject, index?: number): this;\r\n\r\n      each(callback: (object: IGeoObject) => void, context?: object): void;\r\n\r\n      get(index: number): IGeoObject;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getIterator(): IIterator;\r\n\r\n      getLength(): number;\r\n\r\n      getPixelBounds(): number[][] | null;\r\n\r\n      indexOf(object: IGeoObject): number;\r\n\r\n      remove(child: IGeoObject): this;\r\n\r\n      removeAll(): this;\r\n\r\n      set(index: number, child: IGeoObject): this;\r\n\r\n      splice(index: number, length: number): this;\r\n    }\r\n\r\n    interface IGeoObjectSequence extends ICustomizable, IEventEmitter, IParentOnMap {\r\n      each(callback: (geoObject: IGeoObject) => void, context?: object): void;\r\n\r\n      get(index: number): IGeoObject;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getIterator(): IIterator;\r\n\r\n      getLength(): number;\r\n\r\n      getPixelBounds(): number[][] | null;\r\n\r\n      indexOf(geoObject: IGeoObject): number;\r\n    }\r\n\r\n    interface IPromiseProvider {\r\n      then(onResolve: () => void, onReject: (err?: Error | any) => void): this;\r\n    }\r\n\r\n    type IGeoQuerySource =\r\n      | IGeoObject\r\n      | IGeoObject[]\r\n      | ICollection\r\n      | ICollection[]\r\n      | IPromiseProvider\r\n      | vow.Promise\r\n      | GeoQueryResult\r\n      | string\r\n      | object\r\n      | object[];\r\n\r\n    class GeoQueryResult implements IPromiseProvider {\r\n      constructor(source: IGeoQuerySource);\r\n\r\n      then(onResolve: () => void, onReject?: (err?: Error | any) => void, context?: object): this;\r\n\r\n      add(source: IGeoQuerySource): this;\r\n\r\n      addEvents(events: string | string[], callback: () => void, context?: object): this;\r\n\r\n      addTo(collection: ICollection): this;\r\n\r\n      addToMap(map: Map): this;\r\n\r\n      applyBoundsToMap(\r\n        map: Map,\r\n        options?: {\r\n          checkZoomRange?: boolean;\r\n          duration?: number;\r\n          preciseZoom?: boolean;\r\n          timingFUnction?: string;\r\n          useMapMargin?: boolean;\r\n          zoomMargin?: number | number[];\r\n        },\r\n      ): this;\r\n\r\n      clusterize(options?: IClustererOptions): Clusterer;\r\n\r\n      each(callback: (e: any) => void, context?: object): this;\r\n\r\n      get(index: number): IGeoObject;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getCenter(map?: Map): number[];\r\n\r\n      getCentralObject(map: Map): IGeoObject | null;\r\n\r\n      getClosestTo(\r\n        object: IGeoObject | IGeometry | Map | number[] | object | any,\r\n      ): IGeoObject | null;\r\n\r\n      getExtreme(key: 'top' | 'right' | 'bottom' | 'left'): number;\r\n\r\n      getExtremeObject(key: 'top' | 'right' | 'bottom' | 'left'): IGeoObject;\r\n\r\n      getGlobalPixelBounds(map: Map): number[][] | null;\r\n\r\n      getGlobalPixelCenter(map: Map): number[];\r\n\r\n      getIterator(): IIterator;\r\n\r\n      getLength(): number;\r\n\r\n      getMaxZoom(map?: Map, options?: { useMapMargin?: boolean }): number;\r\n\r\n      getParent(): this | null;\r\n\r\n      indexOf(item: IGeoObject | any): number;\r\n\r\n      intersect(result: this): this;\r\n\r\n      isReady(): boolean;\r\n\r\n      map(callback: (e: any) => void, context?: object): this;\r\n\r\n      remove(\r\n        objects: IGeoObject | IGeoObject[] | ICollection | ICollection[] | this | vow.Promise | any,\r\n      ): this;\r\n\r\n      removeEvents(events: string | string[], callback: () => void, context?: object): void;\r\n\r\n      removeFrom(collection: ICollection): this;\r\n\r\n      removeFromMap(map: Map): this;\r\n\r\n      reverse(): this;\r\n\r\n      search(condition: string | ((o: object) => boolean)): this;\r\n\r\n      searchContaining(\r\n        object: IGeoObject | IGeometry | Map | number[] | number[][] | object | any,\r\n      ): this;\r\n\r\n      searchInside(object: IGeoObject | IGeometry | Map | any): this;\r\n\r\n      searchIntersect(\r\n        object: IGeoObject | IGeometry | Map | any,\r\n        options?: { considerOccurance?: boolean },\r\n      ): this;\r\n\r\n      setOptions(key: string | object, value?: any): this;\r\n\r\n      setProperties(path: string, value?: any): this;\r\n\r\n      slice(begin: number, end?: number): this;\r\n\r\n      sort(comparator: string | ((a: any, b: any) => number)): any;\r\n\r\n      sortByDistance(\r\n        object: IGeoObject | IGeometry | Map | number[] | number[][] | object | any,\r\n      ): this;\r\n\r\n      unsetOptions(keys: string | string[]): this;\r\n\r\n      unsetProperties(path: string): this;\r\n    }\r\n\r\n    function geoQuery(source: IGeoQuerySource): GeoQueryResult;\r\n\r\n    type IHintManager<T> = IPopupManager<T>;\r\n\r\n    interface IIterator {\r\n      getNext(): object | null;\r\n    }\r\n\r\n    interface ILayer extends IChildOnMap, ICustomizable, IEventEmitter {\r\n      getBrightness?(): number;\r\n\r\n      getCopyrights?(coords: number[], zoom: number): Promise<Array<string | HTMLElement>>;\r\n\r\n      getZoomRange?(point: number[]): Promise<number[]>;\r\n    }\r\n\r\n    interface ILayout extends IDomEventEmitter {\r\n      destroy(): void;\r\n\r\n      getData(): object;\r\n\r\n      getParentElement(): HTMLElement;\r\n\r\n      getShape(): IShape | null;\r\n\r\n      isEmpty(): boolean;\r\n\r\n      setData(data: object): void;\r\n\r\n      setParentElement(parent: HTMLElement | null): void;\r\n    }\r\n\r\n    interface ILinearRingGeometryAccess extends IFreezable {\r\n      contain(position: number): boolean;\r\n\r\n      freeze(): IFreezable;\r\n\r\n      get(index: number): number[];\r\n\r\n      getChildGeometry(index: number): IPointGeometryAccess;\r\n\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][];\r\n\r\n      getFillRule(): string;\r\n\r\n      getLength(): number;\r\n\r\n      insert(index: number, coordinates: number[]): ILinearRingGeometryAccess;\r\n\r\n      isFrozen(): boolean;\r\n\r\n      remove(index: number): number[];\r\n\r\n      set(index: number, coordinates: number[]): ILinearRingGeometryAccess;\r\n\r\n      setCoordinates(coordinates: number[][]): ILinearRingGeometryAccess;\r\n\r\n      setFillRule(fillRule: string): ILinearRingGeometryAccess;\r\n\r\n      splice(index: number, number: number): number[][];\r\n\r\n      unfreeze(): IFreezable;\r\n    }\r\n\r\n    interface ILineStringGeometry extends IGeometry, ILineStringGeometryAccess {}\r\n\r\n    interface ILineStringGeometryAccess extends IFreezable {\r\n      get(index: number): number[];\r\n\r\n      getChildGeometry(index: number): IPointGeometryAccess;\r\n\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][];\r\n\r\n      getLength(): number;\r\n\r\n      insert(index: number, coordinates: number[][]): ILineStringGeometryAccess;\r\n\r\n      remove(index: number): number[];\r\n\r\n      set(index: number, coordinates: number[]): ILineStringGeometryAccess;\r\n\r\n      setCoordinates(coordinates: number[][]): ILineStringGeometryAccess;\r\n\r\n      splice(index: number, length: number): number[][];\r\n    }\r\n\r\n    interface IMapAction extends IEventEmitter {\r\n      begin(mapActionManager: map.action.Manager): void;\r\n\r\n      end(): void;\r\n    }\r\n\r\n    interface IMapObjectCollection extends ICollection, ICustomizable, IParentOnMap {}\r\n\r\n    interface IMultiRouteModelJson {\r\n      params?: IMultiRouteParams;\r\n      referencePoints: IMultiRouteReferencePoint[];\r\n    }\r\n\r\n    interface IMultiRouteParams {\r\n      avoidTrafficJams?: boolean;\r\n      boundedBy?: number[][] | null;\r\n      requestSendInterval?: string | number;\r\n      results?: number;\r\n      reverseGeocoding?: boolean;\r\n      routingMode?: 'auto' | 'masstransit' | 'pedestrian' | '';\r\n      searchCoordOrder?: string;\r\n      strictBounds?: boolean;\r\n      viaIndexes?: number[];\r\n    }\r\n\r\n    type IMultiRouteReferencePoint = string | number[] | geometry.Point;\r\n\r\n    interface IOptionManager extends IChild<IOptionManager>, IEventEmitter, IFreezable {\r\n      get(key: string, defaultValue?: any): any;\r\n\r\n      getAll(): Record<string, any>;\r\n\r\n      getName(): string;\r\n\r\n      getNative(key: string): object;\r\n\r\n      resolve(key: string, name?: string): object;\r\n\r\n      set(key: Record<string, any> | string, value?: any): this;\r\n\r\n      setName(name: string): void;\r\n    }\r\n\r\n    interface IOverlay extends ICustomizable, IDomEventEmitter {\r\n      getData(): object;\r\n\r\n      getGeometry(): IPixelGeometry;\r\n\r\n      getMap(): Map | null;\r\n\r\n      getShape(): IShape | null;\r\n\r\n      isEmpty(): boolean;\r\n\r\n      setData(data: object): void;\r\n\r\n      setGeometry(geometry: IPixelGeometry): void;\r\n\r\n      setMap(map: Map | null): void;\r\n    }\r\n\r\n    interface IPane extends IEventEmitter {\r\n      destroy(): void;\r\n\r\n      getElement(): HTMLElement;\r\n\r\n      getMap(): Map;\r\n\r\n      getOverflow(): 'visible' | 'hidden';\r\n\r\n      getZIndex(): number;\r\n    }\r\n\r\n    interface IPanorama {\r\n      getAngularBBox(): number[];\r\n\r\n      getConnectionArrows(): IPanoramaConnectionArrow[];\r\n\r\n      getConnectionMarkers(): IPanoramaConnectionMarker[];\r\n\r\n      getCoordSystem(): ICoordSystem;\r\n\r\n      getDefaultDirection(): number[];\r\n\r\n      getDefaultSpan(): number[];\r\n\r\n      getGraph(): IPanoramaGraph | null;\r\n\r\n      getMarkers(): IPanoramaMarker[];\r\n\r\n      getName(): string;\r\n\r\n      getPosition(): number[];\r\n\r\n      getTileLevels(): IPanoramaTileLevel[];\r\n\r\n      getTileSize(): number[];\r\n    }\r\n\r\n    interface IPanoramaConnection {\r\n      getConnectedPanorama(): Promise<IPanorama>;\r\n    }\r\n\r\n    interface IPanoramaConnectionArrow extends IPanoramaConnection {\r\n      properties: data.Manager;\r\n\r\n      getDirection(): number[];\r\n\r\n      getPanorama(): IPanorama;\r\n    }\r\n\r\n    interface IPanoramaConnectionMarker extends IPanoramaConnection, IPanoramaMarker {}\r\n\r\n    interface IPanoramaGraph {\r\n      getEdges(): IPanoramaGraphEdge[];\r\n\r\n      getNodes(): IPanoramaGraphEdge[];\r\n\r\n      getPanorama(): IPanorama;\r\n    }\r\n\r\n    interface IPanoramaGraphEdge {\r\n      getEndNodes(): IPanoramaGraphNode[];\r\n    }\r\n\r\n    interface IPanoramaGraphNode {\r\n      getConnectedPanorama(): Promise<IPanorama>;\r\n    }\r\n\r\n    interface IPanoramaMarker {\r\n      properties: data.Manager;\r\n\r\n      getIconSet(): Promise<IPanoramaMarkerIconSet>;\r\n\r\n      getPanorama(): IPanorama;\r\n\r\n      getPosition(): number[];\r\n    }\r\n\r\n    interface IPanoramaMarkerIcon {\r\n      image: HTMLCanvasElement | HTMLImageElement;\r\n      offset: number[];\r\n    }\r\n\r\n    interface IPanoramaMarkerIconSet {\r\n      default: IPanoramaMarkerIcon | null;\r\n      expanded: IPanoramaMarkerIcon | null;\r\n      expandedHovered: IPanoramaMarkerIcon | null;\r\n      hovered: IPanoramaMarkerIcon | null;\r\n    }\r\n\r\n    interface IPanoramaTileLevel {\r\n      getImageSize(): number[];\r\n\r\n      getTileUrl(x: number, y: number): string;\r\n    }\r\n\r\n    interface IParentOnMap {\r\n      getMap(): Map;\r\n    }\r\n\r\n    interface IPixelCircleGeometry extends IPixelGeometry {\r\n      getCoordinates(): number[];\r\n\r\n      getRadius(): number;\r\n    }\r\n\r\n    interface IPixelLineStringGeometry extends IPixelGeometry {\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][];\r\n\r\n      getLength(): number;\r\n    }\r\n\r\n    interface IPixelPointGeometry extends IPixelGeometry {\r\n      getCoordinates(): number[];\r\n    }\r\n\r\n    interface IPixelMultiLineGeometry extends IPixelGeometry {\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][][];\r\n\r\n      getLength(): number;\r\n    }\r\n\r\n    interface IPixelMultiPolygonGeometry extends IPixelGeometry {\r\n      contains(position: number[]): boolean;\r\n\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][][][];\r\n\r\n      getFillRule(): 'evenOdd' | 'nonZero';\r\n\r\n      getLength(): number;\r\n    }\r\n\r\n    interface IPixelPolygonGeometry extends IPixelGeometry {\r\n      contains(position: number[]): boolean;\r\n\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][][];\r\n\r\n      getFillRule(): 'evenOdd' | 'nonZero';\r\n\r\n      getLength(): number;\r\n    }\r\n\r\n    interface IPixelRectangleGeometry extends IPixelGeometry {\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][];\r\n    }\r\n\r\n    interface IPixelGeometry extends IBaseGeometry {\r\n      equals(geometry: IPixelGeometry): boolean;\r\n\r\n      getMetaData(): object;\r\n\r\n      scale(factor: number): IPixelGeometry;\r\n\r\n      shift(offset: number[]): IPixelGeometry;\r\n    }\r\n\r\n    interface IPointGeometry extends IGeometry, IPointGeometryAccess {}\r\n\r\n    interface IPointGeometryAccess {\r\n      getCoordinates(): number[] | null;\r\n\r\n      setCoordinates(coordinates: number[] | null): this;\r\n    }\r\n\r\n    interface IPolygonGeometry extends IGeometry, IPolygonGeometryAccess {}\r\n\r\n    interface IPolygonGeometryAccess extends IFreezable {\r\n      contains(position: number[]): boolean;\r\n\r\n      get(index: number): number[][];\r\n\r\n      getChildGeometry(index: number): ILinearRingGeometryAccess;\r\n\r\n      getClosest(anchorPosition: number[]): object;\r\n\r\n      getCoordinates(): number[][][];\r\n\r\n      getFillRule(): string;\r\n\r\n      getLength(): number;\r\n\r\n      insert(index: number, path: number[][]): IPolygonGeometryAccess;\r\n\r\n      remove(index: number): ILinearRingGeometryAccess;\r\n\r\n      set(index: number, path: number[][]): IPolygonGeometryAccess;\r\n\r\n      setCoordinates(coordinates: number[][][]): IPolygonGeometryAccess;\r\n\r\n      setFillRule(fillRule: string): IPolygonGeometryAccess;\r\n\r\n      splice(index: number, number: number): ILinearRingGeometryAccess[];\r\n    }\r\n\r\n    interface IPopup<T> extends ICustomizable, IEventEmitter {\r\n      close(force?: boolean): Promise<T>;\r\n\r\n      getData(): object;\r\n\r\n      getOverlay(): Promise<IOverlay>;\r\n\r\n      getOverlaySync(): IOverlay;\r\n\r\n      getPosition(): number[];\r\n\r\n      isOpen(): boolean;\r\n\r\n      open(position: number[], data: object | string | HTMLElement): Promise<T>;\r\n\r\n      setData(data: object | string | HTMLElement): Promise<T>;\r\n\r\n      setPosition(position: number[]): Promise<T>;\r\n    }\r\n\r\n    interface IPopupManager<T> extends IEventEmitter {\r\n      close(force?: boolean): Promise<T>;\r\n\r\n      destroy(): void;\r\n\r\n      getData(): object | null;\r\n\r\n      getOptions(): IOptionManager | null;\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n\r\n      getPosition(): number[] | null;\r\n\r\n      isOpen(): boolean;\r\n\r\n      open(position?: number[], data?: object | string | HTMLElement, options?: object): Promise<T>;\r\n\r\n      setData(data: object | string | HTMLElement): Promise<T>;\r\n\r\n      setOptions(options: object): Promise<T>;\r\n\r\n      setPosition(position: number[]): Promise<T>;\r\n    }\r\n\r\n    interface IPositioningContext {\r\n      fromClientPixels(clientPixelPoint: number[]): number[];\r\n\r\n      getZoom(): number;\r\n\r\n      toClientPixels(globalPixelPoint: number[]): number[];\r\n    }\r\n\r\n    interface IProjection {\r\n      fromGlobalPixels(globalPixelPoint: number[], zoom: number): number[];\r\n\r\n      getCoordSystem(): ICoordSystem;\r\n\r\n      isCycled(): boolean[];\r\n\r\n      toGlobalPixels(coordPoint: number[], zoom: number): number[];\r\n    }\r\n\r\n    interface IRoutePanel {\r\n      options: IOptionManager;\r\n\r\n      state: IDataManager;\r\n\r\n      enable(): void;\r\n\r\n      geolocate(name: string): Promise<{ geoObjects: GeoObjectCollection }>;\r\n\r\n      getRoute(): multiRouter.MultiRoute;\r\n\r\n      getRouteAsync(): Promise<multiRouter.MultiRoute>;\r\n\r\n      isEnable(): boolean;\r\n\r\n      switchPoints(): void;\r\n    }\r\n\r\n    type ISearchControlLayout = IExpandableControlLayout;\r\n\r\n    interface ISelectableControl extends IControl {\r\n      deselect(): void;\r\n\r\n      disable(): void;\r\n\r\n      enable(): void;\r\n\r\n      isEnabled(): boolean;\r\n\r\n      isSelected(): boolean;\r\n\r\n      select(): void;\r\n    }\r\n\r\n    type ISelectableControlLayout = ILayout;\r\n\r\n    type ITrafficControlLayout = ILayout;\r\n\r\n    type IZoomControlLayout = ILayout;\r\n\r\n    interface IShape {\r\n      contains(position: number[]): boolean;\r\n\r\n      equals(shape: IShape): boolean;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getGeometry(): IPixelGeometry;\r\n\r\n      getType(): string;\r\n\r\n      scale(factor: number): IShape;\r\n\r\n      shift(offset: number[]): IShape;\r\n    }\r\n\r\n    class Monitor {\r\n      constructor(dataManager: IDataManager | IOptionManager);\r\n\r\n      add(\r\n        name: string[] | string,\r\n        changeCallback: (event: object | IEvent) => void,\r\n        context?: any,\r\n        params?: any,\r\n      ): Monitor;\r\n\r\n      forceChange(): Monitor;\r\n\r\n      get(name: string): any;\r\n\r\n      remove(name: string): Monitor;\r\n\r\n      removeAll(): Monitor;\r\n    }\r\n\r\n    class ObjectManager implements ICustomizable, IEventEmitter, IGeoObject, IParentOnMap {\r\n      constructor(options: IObjectManagerOptions);\r\n\r\n      clusters: objectManager.ClusterCollection;\r\n\r\n      events: IEventManager;\r\n\r\n      geometry: IGeometry | null;\r\n\r\n      objects: objectManager.ObjectCollection;\r\n\r\n      options: IOptionManager;\r\n\r\n      properties: IDataManager;\r\n\r\n      state: IDataManager;\r\n\r\n      add(objects: object | object[] | string): this;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getFilter(): string | ((object: object | string) => boolean) | null;\r\n\r\n      getMap(): Map;\r\n\r\n      getObjectState(id: any): {\r\n        found: boolean;\r\n        isShown: boolean;\r\n        cluster?: object;\r\n        isClustered: boolean;\r\n        isFilteredOut: boolean;\r\n      };\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n\r\n      getParent(): IParentOnMap | null;\r\n\r\n      getPixelBounds(): number[][] | null;\r\n\r\n      remove(objects: object | object[] | string): this;\r\n\r\n      removeAll(): this;\r\n\r\n      setFilter(filterFunction: ((object: object) => boolean) | string): void;\r\n\r\n      setParent(parent: IParentOnMap | null): this;\r\n    }\r\n\r\n    interface IObjectManagerOptions\r\n      extends\r\n        Omit<IClustererOptionsInject, 'hasBalloon' | 'hasHint'>,\r\n        IClusterPlacemarkOptionsWithClusterPrefix,\r\n        Omit<IGeoObjectOptionsWithGeoObjectPrefix, 'visible'> {\r\n      clusterize?: boolean | undefined;\r\n      syncOverlayInit?: boolean | undefined;\r\n      viewportMargin?: number[] | number | undefined;\r\n    }\r\n\r\n    class LoadingObjectManager implements ICustomizable, IEventEmitter, IGeoObject, IParentOnMap {\r\n      constructor(urlTemplate: string, options?: ILoadingObjectManagerOptions);\r\n\r\n      clusters: objectManager.ClusterCollection;\r\n\r\n      events: IEventManager;\r\n\r\n      geometry: IGeometry | null;\r\n\r\n      objects: objectManager.ObjectCollection;\r\n\r\n      options: IOptionManager;\r\n\r\n      properties: IDataManager;\r\n\r\n      state: IDataManager;\r\n\r\n      getBounds(): number[][] | null;\r\n\r\n      getObjectState(id: any): {\r\n        found: boolean;\r\n        isShown: boolean;\r\n        cluster?: object;\r\n        isClustered: boolean;\r\n        isFilteredOut: boolean;\r\n      };\r\n\r\n      getPixelBounds(): number[][] | null;\r\n\r\n      getTileUrl(parameters: any): string | null;\r\n\r\n      getUrlTemplate(): string;\r\n\r\n      reloadData(): void;\r\n\r\n      setUrlTemplate(urlTemplate: string): void;\r\n\r\n      getMap(): Map;\r\n\r\n      getOverlay(): Promise<IOverlay | null>;\r\n\r\n      getOverlaySync(): IOverlay | null;\r\n\r\n      getParent(): IParentOnMap | null;\r\n\r\n      setParent(parent: IParentOnMap | null): this;\r\n    }\r\n\r\n    interface ILoadingObjectManagerOptions\r\n      extends\r\n        Omit<IClustererOptionsInject, 'hasBalloon' | 'hasHint'>,\r\n        IClusterPlacemarkOptionsWithClusterPrefix,\r\n        Omit<IGeoObjectOptionsWithGeoObjectPrefix, 'visible'> {\r\n      clusterize?: boolean;\r\n      loadTileSize?: number;\r\n      paddingParamName?: string;\r\n      paddingTemplate?: string;\r\n      splitRequests?: boolean;\r\n      syncOverlayInit?: boolean;\r\n      viewportMargin?: number | number[];\r\n    }\r\n\r\n    namespace coordSystem {\r\n      const geo: ICoordSystem;\r\n    }\r\n\r\n    namespace objectManager {\r\n      class Balloon implements Omit<IBalloonManager<map.Balloon>, 'isOpen' | 'open'> {\r\n        constructor(collection: object);\r\n\r\n        events: IEventManager;\r\n\r\n        autoPan(): Promise<ymaps.Balloon>;\r\n\r\n        close(force?: boolean): Promise<ymaps.Balloon>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(id: any): boolean;\r\n\r\n        open(objectId: any, anchorPixelPosition?: boolean): Promise<ymaps.Balloon>;\r\n\r\n        setData(objectData: object | string | HTMLElement): Promise<ymaps.Balloon>;\r\n\r\n        setOptions(options: object): Promise<ymaps.Balloon>;\r\n\r\n        setPosition(position: number[]): Promise<ymaps.Balloon>;\r\n      }\r\n\r\n      class ClusterCollection implements ICustomizable, IEventEmitter {\r\n        balloon: objectManager.Balloon;\r\n\r\n        events: IEventManager;\r\n\r\n        hint: objectManager.Hint;\r\n\r\n        options: option.Manager;\r\n\r\n        overlays: objectManager.OverlayCollection;\r\n\r\n        state: data.Manager;\r\n\r\n        each(callback: (cluster: object) => void, context?: object): void;\r\n\r\n        getAll(): object[];\r\n\r\n        getById(id: string): object | null;\r\n\r\n        getIterator(): IIterator;\r\n\r\n        getLength(): number;\r\n\r\n        getObjectManager(): ObjectManager;\r\n\r\n        setClusterOptions(objectId: string, options: object): this;\r\n      }\r\n\r\n      class Hint implements Omit<IHintManager<map.Hint>, 'isOpen' | 'open'> {\r\n        constructor(collection: object);\r\n\r\n        events: IEventManager;\r\n\r\n        close(force?: boolean): Promise<map.Hint>;\r\n\r\n        destroy(): void;\r\n\r\n        getData(): object | null;\r\n\r\n        getOptions(): IOptionManager | null;\r\n\r\n        getOverlay(): Promise<IOverlay | null>;\r\n\r\n        getOverlaySync(): IOverlay | null;\r\n\r\n        getPosition(): number[] | null;\r\n\r\n        isOpen(id: any): boolean;\r\n\r\n        open(objectId: any, position?: number[]): Promise<map.Hint>;\r\n\r\n        setData(data: object | string | HTMLElement): Promise<map.Hint>;\r\n\r\n        setOptions(options: object): Promise<map.Hint>;\r\n\r\n        setPosition(position: number[]): Promise<map.Hint>;\r\n      }\r\n\r\n      class ObjectCollection implements ICollection, ICustomizable {\r\n        balloon: objectManager.Balloon;\r\n\r\n        events: IEventManager;\r\n\r\n        hint: objectManager.Hint;\r\n\r\n        options: option.Manager;\r\n\r\n        overlays: objectManager.OverlayCollection;\r\n\r\n        add(object: object): this;\r\n\r\n        each(callback: (object: object) => void, context?: object): void;\r\n\r\n        getAll(): object[];\r\n\r\n        getById(id: number): object | null;\r\n\r\n        getIterator(): IIterator;\r\n\r\n        getLength(): number;\r\n\r\n        getObjectManager(): ObjectManager;\r\n\r\n        remove(data: object | object[] | string): this;\r\n\r\n        removeAll(): objectManager.ObjectCollection;\r\n\r\n        setObjectOptions(objectId: any, options: object): ObjectCollection;\r\n      }\r\n\r\n      class OverlayCollection implements ICustomizable, IEventEmitter {\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        each(callback: (overlay: IOverlay) => void, context?: object): void;\r\n\r\n        getAll(): object[];\r\n\r\n        getById(id: number): IOverlay | null;\r\n\r\n        getId(overlay: IOverlay): number | null;\r\n\r\n        getIterator(): IIterator;\r\n\r\n        getLength(): number;\r\n      }\r\n    }\r\n\r\n    namespace modules {\r\n      function define(\r\n        module: string,\r\n        depends?: string[],\r\n        resolveCallback?: ResolveCallbackFunction,\r\n        context?: object,\r\n      ): typeof modules;\r\n\r\n      function define(\r\n        module: string,\r\n        resolveCallback?: ResolveCallbackFunction,\r\n        context?: object,\r\n      ): typeof modules;\r\n\r\n      function isDefined(module: string): boolean;\r\n\r\n      function require(\r\n        modules: string | string[],\r\n        successCallback?: (...args: any[]) => void,\r\n        errorCallback?: (error: any) => void,\r\n        context?: object,\r\n      ): vow.Promise;\r\n    }\r\n\r\n    interface IHotspotObjectSource extends ICustomizable, IEventEmitter {\r\n      cancelLastRequest(): void;\r\n\r\n      requestObjects(\r\n        layer: hotspot.Layer,\r\n        tileNumber: number[],\r\n        zoom: number,\r\n        callback: () => void,\r\n      ): void;\r\n    }\r\n\r\n    interface IHotspotLayerOptions\r\n      extends IBalloonOptionsWithBalloonPrefix, IHintOptionsWithHintPrefix {\r\n      cursor?: string;\r\n      dontChangeCursor?: boolean;\r\n      hasBalloon?: boolean;\r\n      hasHint?: boolean;\r\n      interactivityModel?: InteractivityModelKey;\r\n      openBalloonOnClick?: boolean;\r\n      openEmptyBalloon?: boolean;\r\n      openEmptyHint?: boolean;\r\n      openHintOnHover?: boolean;\r\n      pane?: IEventPane;\r\n      showEmptyBalloon?: boolean;\r\n      zIndex?: number;\r\n    }\r\n\r\n    interface IHotspotLayerObject extends ICustomizable, IDomEventEmitter {\r\n      getGeometry(): object;\r\n\r\n      getHotspot(): IHotspot;\r\n\r\n      getId(): number;\r\n\r\n      getProperties(): object;\r\n\r\n      setGeometry(geometry: object): void;\r\n\r\n      setId(id: number): void;\r\n\r\n      setProperties(properties: object): void;\r\n    }\r\n\r\n    namespace hotspot {\r\n      namespace layer {\r\n        namespace addon {\r\n          const balloon: {\r\n            get(layer: hotspot.Layer): IPopupManager<Balloon>;\r\n          };\r\n\r\n          const hint: {\r\n            get(layer: hotspot.Layer): IPopupManager<Hint>;\r\n          };\r\n        }\r\n\r\n        class Balloon implements IBalloonManager<Balloon> {\r\n          constructor(hotspotLayer: object);\r\n\r\n          events: IEventManager;\r\n\r\n          autoPan(): Promise<Balloon>;\r\n\r\n          close(force?: boolean): Promise<Balloon>;\r\n\r\n          destroy(): void;\r\n\r\n          getData(): object | null;\r\n\r\n          getOptions(): IOptionManager | null;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getPosition(): number[] | null;\r\n\r\n          isOpen(): boolean;\r\n\r\n          open(position?: number[], data?: object, options?: object): Promise<Balloon>;\r\n\r\n          setData(data: object | string | HTMLElement): Promise<Balloon>;\r\n\r\n          setOptions(options: object): Promise<Balloon>;\r\n\r\n          setPosition(position: number[]): Promise<Balloon>;\r\n        }\r\n\r\n        class Hint implements IHintManager<Hint> {\r\n          constructor(hotspotLayer: object);\r\n\r\n          events: IEventManager;\r\n\r\n          close(force?: boolean): Promise<Hint>;\r\n\r\n          destroy(): void;\r\n\r\n          getData(): object | null;\r\n\r\n          getOptions(): IOptionManager | null;\r\n\r\n          getOverlay(): Promise<IOverlay | null>;\r\n\r\n          getOverlaySync(): IOverlay | null;\r\n\r\n          getPosition(): number[] | null;\r\n\r\n          isOpen(): boolean;\r\n\r\n          open(position?: number[], data?: object, options?: object): Promise<Hint>;\r\n\r\n          setData(data: object | string | HTMLElement): Promise<Hint>;\r\n\r\n          setOptions(options: object): Promise<Hint>;\r\n\r\n          setPosition(position: number[]): Promise<Hint>;\r\n        }\r\n\r\n        class Object implements IHotspotLayerObject {\r\n          constructor(shape: IShape, feature: object, options: object);\r\n\r\n          events: IEventManager;\r\n\r\n          options: IOptionManager;\r\n\r\n          getGeometry(): object;\r\n\r\n          getHotspot(): IHotspot;\r\n\r\n          getId(): number;\r\n\r\n          getProperties(): object;\r\n\r\n          setGeometry(geometry: object): void;\r\n\r\n          setId(id: number): void;\r\n\r\n          setProperties(properties: object): void;\r\n        }\r\n      }\r\n\r\n      class Layer implements IChildOnMap, ICustomizable {\r\n        constructor(objectSource: IHotspotObjectSource, options: IHotspotLayerOptions);\r\n\r\n        balloon: hotspot.layer.Balloon;\r\n\r\n        events: IEventManager;\r\n\r\n        hint: hotspot.layer.Balloon;\r\n\r\n        options: IOptionManager;\r\n\r\n        getMap(): Map;\r\n\r\n        getObjectInPosition(coords: number[]): vow.Promise;\r\n\r\n        getObjectsInPosition(coords: number[]): vow.Promise;\r\n\r\n        getObjectSource(): ObjectSource;\r\n\r\n        getParent(): IParentOnMap | null;\r\n\r\n        setParent(parent: IParentOnMap | null): this;\r\n\r\n        update(): void;\r\n      }\r\n\r\n      class ObjectSource implements IHotspotObjectSource {\r\n        constructor(\r\n          tileUrlTemplate: string | ((tileNumber: number[], tileZoom: number) => string),\r\n          keyTemplate?: string | ((tileNumber: number[], tileZoom: number) => string),\r\n          options?: {\r\n            bounds?: number[][];\r\n            maxZoom?: number;\r\n            minZoom?: number;\r\n            noCache?: boolean;\r\n          },\r\n        );\r\n\r\n        events: IEventManager;\r\n\r\n        options: IOptionManager;\r\n\r\n        cancelLastRequest(): void;\r\n\r\n        getKey(tileNumber: number[], zoom: number): string;\r\n\r\n        getKeyTemplate(): string;\r\n\r\n        getTileUrl(tileNumber: number[], zoom: number): string;\r\n\r\n        getTileUrlTemplate(): string;\r\n\r\n        parseResponse(\r\n          layer: hotspot.Layer,\r\n          res: object,\r\n          callback: () => void,\r\n          tileNumber: number[],\r\n          zoom: number,\r\n        ): void;\r\n\r\n        requestObjects(\r\n          layer: hotspot.Layer,\r\n          tileNumber: number[],\r\n          zoom: number,\r\n          callback: () => void,\r\n        ): void;\r\n\r\n        restrict(layer: hotspot.Layer, tileNumber: number[], zoom: number): boolean;\r\n\r\n        setKeyTemplate(template: string): void;\r\n\r\n        setTileUrlTemplate(template: string): void;\r\n      }\r\n    }\r\n\r\n    class Hotspot implements IHotspot {\r\n      constructor(shape: IShape, zIndex?: number);\r\n\r\n      events: IEventManager;\r\n    }\r\n\r\n    interface IHotspot extends IDomEventEmitter {\r\n      events: IEventManager;\r\n    }\r\n\r\n    namespace geolocation {\r\n      interface IGeolocationOptions {\r\n        autoReverseGeocode?: boolean;\r\n        mapStateAutoApply?: boolean;\r\n        provider?: string;\r\n        timeout?: number;\r\n        useMapMargin?: boolean;\r\n      }\r\n\r\n      function get(options?: IGeolocationOptions): Promise<{ geoObjects: GeoObjectCollection }>;\r\n    }\r\n\r\n    interface ISuggestProvider {\r\n      suggest(\r\n        request: string,\r\n        options?: {\r\n          boundedBy?: number[][];\r\n          results?: number;\r\n        },\r\n      ): Promise<object>;\r\n    }\r\n\r\n    interface ISuggestViewOptions {\r\n      boundedBy?: number[][];\r\n      container?: HTMLElement;\r\n      layout?: string | any;\r\n      offset?: number[];\r\n      provider?: string | ISuggestProvider;\r\n      results?: number;\r\n      width?: number;\r\n      zIndex?: number;\r\n    }\r\n\r\n    class SuggestView implements ICustomizable, IEventEmitter {\r\n      constructor(element: HTMLElement | string, options?: ISuggestViewOptions);\r\n\r\n      events: IEventManager;\r\n\r\n      options: IOptionManager;\r\n\r\n      state: data.Manager;\r\n\r\n      destroy(): void;\r\n    }\r\n\r\n    interface ITile extends IEventEmitter {\r\n      events: IEventManager;\r\n\r\n      destroy(): void;\r\n\r\n      isReady(): boolean;\r\n    }\r\n\r\n    interface ICanvasTile extends ITile {\r\n      events: IEventManager;\r\n\r\n      destroy(): void;\r\n\r\n      isReady(): boolean;\r\n\r\n      renderAt(context: any, canvasSize: number[], bounds: number[][], animate?: boolean): void;\r\n    }\r\n\r\n    interface IDomTile extends ITile {\r\n      events: IEventManager;\r\n\r\n      destroy(): void;\r\n\r\n      isReady(): boolean;\r\n\r\n      renderAt(context: HTMLElement, clientBounds: number[][], animate?: boolean): void;\r\n    }\r\n\r\n    namespace layer {\r\n      const storage: util.Storage;\r\n\r\n      namespace tile {\r\n        interface ITileOptions {\r\n          notFoundTile?: string | null;\r\n          tileAnimationDuration?: number;\r\n        }\r\n\r\n        interface ITileRenderOptions {\r\n          tileNumber?: number[];\r\n          tileZoom?: number;\r\n        }\r\n\r\n        class CanvasTile implements ICanvasTile {\r\n          constructor(url: string, options?: ITileOptions, renderOptions?: ITileRenderOptions);\r\n\r\n          events: IEventManager;\r\n\r\n          destroy(): void;\r\n\r\n          isReady(): boolean;\r\n\r\n          renderAt(context: any, canvasSize: number[], bounds: number[][], animate?: boolean): void;\r\n        }\r\n\r\n        class DomTile implements IDomTile {\r\n          constructor(url: string, options?: ITileOptions, renderOptions?: ITileRenderOptions);\r\n\r\n          events: IEventManager;\r\n\r\n          destroy(): void;\r\n\r\n          isReady(): boolean;\r\n\r\n          renderAt(context: HTMLElement, clientBounds: number[][], animate?: boolean): void;\r\n        }\r\n      }\r\n\r\n      namespace tileContainer {\r\n        interface CanvasContainerOptions {\r\n          notFoundTile?: string | null;\r\n          tileClass?: ICanvasTile;\r\n          tileTransparent?: boolean;\r\n        }\r\n\r\n        class CanvasContainer implements IChildOnMap {\r\n          constructor(layer: ILayer, options?: CanvasContainerOptions);\r\n\r\n          events: IEventManager;\r\n\r\n          getMap(): Map;\r\n\r\n          getParent(): object | null;\r\n\r\n          getTile(tileNumber: number[], tileZoom: number, priority: number): ICanvasTile;\r\n\r\n          setParent(parent: object | null): this;\r\n        }\r\n\r\n        interface DomContainerOptions {\r\n          notFoundTile?: string | null;\r\n          tileClass?: IDomTile;\r\n          tileTransparent?: boolean;\r\n        }\r\n\r\n        class DomContainer implements IChildOnMap {\r\n          constructor(layer: ILayer, options?: DomContainerOptions);\r\n\r\n          events: IEventManager;\r\n\r\n          getMap(): Map;\r\n\r\n          getParent(): object | null;\r\n\r\n          getTile(tileNumber: number[], tileZoom: number, priority: number): ICanvasTile;\r\n\r\n          setParent(parent: object | null): this;\r\n        }\r\n      }\r\n    }\r\n\r\n    namespace mapType {\r\n      const storage: util.Storage;\r\n    }\r\n\r\n    namespace projection {\r\n      class Cartesian implements IProjection {\r\n        constructor(bounds: number[][], cycled?: boolean[], scale?: number | number[]);\r\n\r\n        fromGlobalPixels(globalPixelPoint: number[], zoom: number): number[];\r\n\r\n        getCoordSystem(): ICoordSystem;\r\n\r\n        isCycled(): boolean[];\r\n\r\n        toGlobalPixels(coordPoint: number[], zoom: number): number[];\r\n      }\r\n\r\n      const sphericalMercator: IProjection;\r\n\r\n      const wgs84Mercator: IProjection;\r\n    }\r\n  }\r\n}\r\n\r\n// `declare namespace ymaps` doesn't work anymore - it's not copied to the dist.\r\n// To fix this, we now use `declare global { namespace ymaps { ... } }`,\r\n// and convert this file to a module by adding `export {}`.\r\n//\r\n// I couldn't find any other working solutions that don't break backward compatibility.\r\nexport {};\r\n","/**\r\n * Copied from angular/components/google-maps and updated for Yandex.Maps API.\r\n * {@link https://github.com/angular/components/blob/main/src/google-maps/map-event-manager.ts}\r\n */\r\n\r\nimport type { NgZone } from '@angular/core';\r\nimport type { Subscriber } from 'rxjs';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\n\r\nimport type { YaEvent } from '../../types/ya-event';\r\n\r\n/**\r\n * @internal\r\n */\r\ntype EventManagerTarget = {\r\n  events: ymaps.IEventManager;\r\n};\r\n\r\n/**\r\n * Manages event on a Yandex.Maps object, ensuring that events are added only when necessary.\r\n * @internal\r\n */\r\nexport class EventManager {\r\n  /**\r\n   * Listeners that were added before the target was set.\r\n   */\r\n  private pending: {\r\n    observable: Observable<any>;\r\n    observer: Subscriber<any>;\r\n  }[] = [];\r\n\r\n  private listeners: {\r\n    name: string;\r\n    callback: (e: ymaps.Event) => void;\r\n    manager: ymaps.IEventManager;\r\n  }[] = [];\r\n\r\n  private readonly targetStream = new BehaviorSubject<EventManagerTarget | undefined>(undefined);\r\n\r\n  constructor(private readonly ngZone: NgZone) {}\r\n\r\n  /**\r\n   * Gets an observable that adds an event listener to the map when a consumer subscribes to it.\r\n   * @param name\r\n   */\r\n  getLazyEmitter(name: string): Observable<YaEvent> {\r\n    return this.targetStream.pipe(\r\n      switchMap((target) => {\r\n        const observable = new Observable<YaEvent>((observer) => {\r\n          // If the target hasn't been initialized yet, cache the observer, so it can be added later.\r\n          if (!target) {\r\n            this.pending.push({ observable, observer });\r\n            return undefined;\r\n          }\r\n\r\n          const callback = (event: ymaps.Event) => {\r\n            const e = {\r\n              event,\r\n              target,\r\n              ymaps,\r\n            };\r\n\r\n            this.ngZone.run(() => observer.next(e));\r\n          };\r\n\r\n          const listener = target.events.add(name, callback);\r\n          this.listeners.push({ name, callback, manager: listener });\r\n\r\n          // Unsubscribe function\r\n          return () => listener.remove(name, callback as any);\r\n        });\r\n\r\n        return observable;\r\n      }),\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Sets the current target that the manager should bind events to.\r\n   * @param target\r\n   */\r\n  setTarget(target: EventManagerTarget): void {\r\n    const currentTarget = this.targetStream.value;\r\n\r\n    if (target === currentTarget) {\r\n      return;\r\n    }\r\n\r\n    // Clear the listeners from the pre-existing target.\r\n    if (currentTarget) {\r\n      this.clearListeners();\r\n      this.pending = [];\r\n    }\r\n\r\n    this.targetStream.next(target);\r\n\r\n    // Add the listeners that were bound before the map was initialized.\r\n    this.pending.forEach((subscriber) => subscriber.observable.subscribe(subscriber.observer));\r\n\r\n    this.pending = [];\r\n  }\r\n\r\n  /**\r\n   * Destroys the manager and clears the event listeners.\r\n   */\r\n  destroy(): void {\r\n    this.clearListeners();\r\n    this.pending = [];\r\n    this.targetStream.complete();\r\n  }\r\n\r\n  /**\r\n   * Clears all currently-registered event listeners.\r\n   */\r\n  private clearListeners() {\r\n    this.listeners.forEach((listener) => {\r\n      const { name, callback, manager } = listener;\r\n      manager.remove(name, callback as any);\r\n    });\r\n\r\n    this.listeners = [];\r\n  }\r\n}\r\n","import { InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport type { YaConfig } from '../types/ya-config';\r\n\r\n/**\r\n * @internal\r\n */\r\nexport const YA_CONFIG = new InjectionToken<YaConfig | Observable<YaConfig>>('YaConfig', {\r\n  factory: () => ({}),\r\n});\r\n\r\n// It must be an arrow function, because compodoc cannot parse functions without issues.\r\n// TODO: convert provideYaConfig to a function + create an issue in compodoc about rawdescription.\r\n\r\n/**\r\n * Provides a YA_CONFIG token with the given configuration.\r\n *\r\n * ```ts\r\n * import { provideYaConfig, YaConfig } from 'angular8-yandex-maps';\r\n *\r\n * export const config: YaConfig = {\r\n *   apikey: 'X-X-X',\r\n * };\r\n *\r\n * export const appConfig: ApplicationConfig = {\r\n *   providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideYaConfig(config)],\r\n * };\r\n * ```\r\n */\r\nexport const provideYaConfig = (config: YaConfig | Observable<YaConfig>) => {\r\n  return makeEnvironmentProviders([\r\n    {\r\n      provide: YA_CONFIG,\r\n      useValue: config,\r\n    },\r\n  ]);\r\n};\r\n","/**\r\n * Copied from Taiga UI.\r\n * https://github.com/taiga-family/taiga-ui/blob/eafb4f498ff57f4a21eebe74aee97a72b5e8d3f8/projects/cdk/observables/zone.ts#L19\r\n */\r\n\r\nimport type { NgZone } from '@angular/core';\r\nimport type { MonoTypeOperatorFunction } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport function enterZone<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\r\n  return (source) =>\r\n    new Observable((subscriber) =>\r\n      source.subscribe({\r\n        next: (value) => zone.run(() => subscriber.next(value)),\r\n        error: (error: unknown) => zone.run(() => subscriber.error(error)),\r\n        complete: () => zone.run(() => subscriber.complete()),\r\n      }),\r\n    );\r\n}\r\n\r\nexport function exitZone<T>(zone: NgZone): MonoTypeOperatorFunction<T> {\r\n  return (source) =>\r\n    new Observable((subscriber) => zone.runOutsideAngular(() => source.subscribe(subscriber)));\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { DOCUMENT, inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport {\r\n  BehaviorSubject,\r\n  from,\r\n  fromEvent,\r\n  isObservable,\r\n  merge,\r\n  mergeMap,\r\n  NEVER,\r\n  of,\r\n  tap,\r\n  throwError,\r\n} from 'rxjs';\r\nimport { map, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { YA_CONFIG } from '../../tokens/ya-config';\r\nimport type { YaConfig } from '../../types/ya-config';\r\nimport { exitZone } from '../../utils/zone/zone';\r\nimport type { YaApiLoaderCache } from './types/ya-api-loader-cache';\r\n\r\n/**\r\n * The `YaApiLoader` service handles loading of Yandex.Maps API. Use it if you do not need `YaMapComponent`.\r\n *\r\n * Starting from `v16.1.0` the service supports dynamic configuration changes by subscribing on a `YaConfig` observable.\r\n * It stores global API objects in a local cache, and updates them in runtime if necessary.\r\n * That's why do not provide this service, it will break the synchronizations between the local cache and HTML scripts.\r\n *\r\n * ```ts\r\n * import { YaApiLoaderService } from 'angular8-yandex-maps';\r\n *\r\n * @Component()\r\n * export class AppComponent {\r\n *   constructor(private yaApiLoaderService: YaApiLoaderService) {\r\n *     // Don't forget to unsubscribe\r\n *     this.yaApiLoaderService.load()\r\n *       .subscribe(v => console.log(v))\r\n *   }\r\n * }\r\n *```\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class YaApiLoaderService {\r\n  private readonly document = inject(DOCUMENT);\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\r\n\r\n  private readonly defaultConfig: YaConfig = {\r\n    lang: 'ru_RU',\r\n    version: '2.1',\r\n  };\r\n\r\n  private readonly config$ = new BehaviorSubject<YaConfig>(this.defaultConfig);\r\n\r\n  private readonly cache = new Map<string, YaApiLoaderCache>();\r\n\r\n  constructor() {\r\n    let config = inject<YaConfig | Observable<YaConfig>>(YA_CONFIG);\r\n\r\n    if (!isObservable(config)) {\r\n      config = of(config);\r\n    }\r\n\r\n    config.subscribe((config) => {\r\n      this.config$.next({\r\n        ...this.defaultConfig,\r\n        ...config,\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Loads Yandex.Maps API.\r\n   */\r\n  load(): Observable<typeof ymaps> {\r\n    if (!this.isBrowser) {\r\n      return NEVER;\r\n    }\r\n\r\n    return this.config$.pipe(\r\n      // 3rd party libraries shouldn't be run in a zone.\r\n      // Libraries run tons of different events (requestAnimationFrame, setTimeout, etc.).\r\n      // We do not need to run change detection for these events from the library.\r\n      // Exit from a zone here, so all components are also created outside a zone.\r\n      exitZone(this.ngZone),\r\n      mergeMap((config) => {\r\n        /**\r\n         * We use a script source as a cache key, since there are a lot of parameters that affect the API.\r\n         * We can't rely only on one parameter. E.g., an enterprise flag is changed, we need to reload the API.\r\n         */\r\n        const cacheKey = this.getScriptSource(config);\r\n        const cache = this.cache.get(cacheKey) || {};\r\n\r\n        /**\r\n         * If it exists in the cache, return the ymaps from it,\r\n         * since script.onload triggers only once.\r\n         */\r\n        if (cache.ymaps) {\r\n          const apiObject: typeof ymaps = cache.ymaps;\r\n\r\n          /**\r\n           * ready confirms that the API and DOM are ready for use,\r\n           * we can return of(window.ymaps), but calling ready is safer, I believe.\r\n           */\r\n          return from(apiObject.ready()).pipe(\r\n            // Each nested operator should run outside the zone.\r\n            // Refer to the comment above for the reason why we need to exit the zone.\r\n            exitZone(this.ngZone),\r\n            /**\r\n             * Actually, we need to update it only if they are not equal,\r\n             * it happens if we change the configuration which required new window.ymaps.\r\n             */\r\n            tap(() => (window.ymaps = apiObject)),\r\n            map(() => apiObject),\r\n          );\r\n        }\r\n\r\n        let script = cache.script;\r\n\r\n        /**\r\n         * It's possible that we have a script, but do not have ymaps.\r\n         * It happens if there are concurrent requests, and the first request creates the script,\r\n         * while the second must just wait for the API to be loaded.\r\n         */\r\n        if (!script) {\r\n          script = this.createScript(config);\r\n          this.cache.set(cacheKey, { script });\r\n          this.document.body.appendChild(script);\r\n        }\r\n\r\n        /**\r\n         * The API throws an error on a script load if there is window.ymaps.\r\n         * So before changing the configuration, delete the global object.\r\n         */\r\n        if (window.ymaps) {\r\n          delete (window as any).ymaps;\r\n        }\r\n\r\n        /**\r\n         * window.ymaps is set explicitly via a script load event.\r\n         */\r\n        const load = fromEvent(script, 'load').pipe(\r\n          switchMap(() => from(ymaps.ready())),\r\n          tap(() => this.cache.set(cacheKey, { script, ymaps })),\r\n          map(() => ymaps),\r\n        );\r\n\r\n        const error = fromEvent(script, 'error').pipe(switchMap(throwError));\r\n\r\n        return merge(load, error).pipe(\r\n          // Each nested operator should run outside the zone.\r\n          // Refer to the comment above for the reason why we need to exit the zone.\r\n          exitZone(this.ngZone),\r\n          take(1),\r\n        );\r\n      }),\r\n    );\r\n  }\r\n\r\n  private createScript(config: YaConfig): HTMLScriptElement {\r\n    const script = this.document.createElement('script');\r\n\r\n    script.type = 'text/javascript';\r\n    script.src = this.getScriptSource(config);\r\n    script.id = 'yandexMapsApiScript';\r\n    script.async = true;\r\n    script.defer = true;\r\n\r\n    return script;\r\n  }\r\n\r\n  /**\r\n   * Returns a script source from a config.\r\n   * @param config parameters to add to a source\r\n   * @example\r\n   * // returns 'https://api-maps.yandex.ru/2.1/?apikey=658f67a2-fd77-42e9-b99e-2bd48c4ccad4&lang=en_US'\r\n   * getScriptSource({ apikey: '658f67a2-fd77-42e9-b99e-2bd48c4ccad4', lang: 'en_US' })\r\n   */\r\n  private getScriptSource(config: YaConfig): string {\r\n    const { enterprise, version, ...rest } = config;\r\n    const params = this.convertConfigIntoQueryParams(rest);\r\n\r\n    if (version === 'v3') {\r\n      throw new Error(\r\n        'This package does not support the Yandex.Maps API v3. See https://www.npmjs.com/package/angular-yandex-maps-v3',\r\n      );\r\n    }\r\n\r\n    return `https://${enterprise ? 'enterprise.' : ''}api-maps.yandex.ru/${version}/?${params}`;\r\n  }\r\n\r\n  /**\r\n   * Converts a config into query string parameters.\r\n   * @param config object to convert\r\n   * @example\r\n   * // returns \"lang=ru_RU&apikey=XXX\"\r\n   * convertIntoQueryParams({ lang: 'ru_RU', apikey: 'XXX' })\r\n   */\r\n  private convertConfigIntoQueryParams(config: YaConfig): string {\r\n    return Object.entries(config)\r\n      .map(([key, value]) => `${key}=${value}`)\r\n      .join('&');\r\n  }\r\n}\r\n","/**\r\n * Generates a random string based on Date in hexadecimal numeral system.\r\n * @example f175517fa4f3\r\n * @internal\r\n */\r\nexport const generateRandomId = (): string => `f${Date.now().toString(16)}`;\r\n","import type { AfterViewInit, ElementRef, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  inject,\r\n  Input,\r\n  NgZone,\r\n  Output,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { BehaviorSubject, Subject, takeUntil } from 'rxjs';\r\n\r\nimport { YaApiLoaderService } from '../../services/ya-api-loader/ya-api-loader.service';\r\nimport type { YaEvent } from '../../types/ya-event';\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { EventManager } from '../../utils/event-manager/event-manager';\r\nimport { generateRandomId } from '../../utils/generate-random-id/generate-random-id';\r\n\r\n/**\r\n * The `ya-map` component wraps `ymaps.Map` class from the Yandex.Maps API.\r\n * You can configure the map via the component's inputs.\r\n * Events can be bound using the outputs of the component.\r\n *\r\n * <example-url>https://stackblitz.com/edit/map-onload-event?embed=1&view=preview</example-url>\r\n *\r\n * ```html\r\n * <ya-map\r\n *   [center]=\"[55.751952, 37.600739]\"\r\n *   [state]=\"{type: 'yandex#satellite'}\"\r\n * ></ya-map>\r\n * ```\r\n */\r\n@Component({\r\n  selector: 'ya-map',\r\n  template: '<div #container></div>',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class YaMapComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaApiLoaderService = inject(YaApiLoaderService);\r\n\r\n  @ViewChild('container') readonly container!: ElementRef;\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private readonly eventManager = new EventManager(this.ngZone);\r\n\r\n  map$ = new BehaviorSubject<ymaps.Map | null>(null);\r\n\r\n  /**\r\n   * Geo coordinates of the map center. Default is `[0, 0]`.\r\n   * Shorthand for `[state]=\"{ center: [0, 0] }\"`.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#Map__param-state.center}\r\n   */\r\n  @Input() center: number[] = [0, 0];\r\n\r\n  /**\r\n   * Map zoom level. Default level is `10`.\r\n   * Shorthand for `[state]=\"{ zoom: 10 }\"`.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#Map__param-state.zoom}\r\n   */\r\n  @Input() zoom = 10;\r\n\r\n  /**\r\n   * Map parameters.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#Map__param-state}\r\n   */\r\n  @Input() state?: ymaps.IMapState;\r\n\r\n  /**\r\n   * Map options. The map options can be used to make settings for the map itself, as well as for objects that are added to it.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#Map__param-options}\r\n   */\r\n  @Input() options?: ymaps.IMapOptions;\r\n\r\n  /**\r\n   * Map instance is created. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<ymaps.Map>> = new EventEmitter<\r\n    YaReadyEvent<ymaps.Map>\r\n  >();\r\n\r\n  /**\r\n   * The start of a new smooth map movement.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-actionbegin}\r\n   */\r\n  @Output() actionbegin: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('actionbegin');\r\n\r\n  /**\r\n   * Event that occurs when an action step was prematurely stopped.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-actionbreak}\r\n   */\r\n  @Output() actionbreak: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('actionbreak');\r\n\r\n  /**\r\n   * The end of smooth map movement.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-actionend}\r\n   */\r\n  @Output() actionend: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('actionend');\r\n\r\n  /**\r\n   * The start of a new step of smooth movement.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-actiontick}\r\n   */\r\n  @Output() actiontick: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('actiontick');\r\n\r\n  /**\r\n   * The end of performing a step of smooth movement.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-actiontickcomplete}\r\n   */\r\n  @Output() actiontickcomplete: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('actiontickcomplete');\r\n\r\n  /**\r\n   * Closing the balloon.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-balloonclose}\r\n   */\r\n  @Output() balloonclose: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('balloonclose');\r\n\r\n  /**\r\n   * Opening a balloon on a map.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-balloonopen}\r\n   */\r\n  @Output() balloonopen: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('balloonopen');\r\n\r\n  /**\r\n   * Event for a change to the map viewport.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-boundschange}\r\n   */\r\n  @Output() boundschange: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('boundschange');\r\n\r\n  /**\r\n   * Single left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-click}\r\n   */\r\n  @Output() yaclick: Observable<YaEvent<ymaps.Map>> = this.eventManager.getLazyEmitter('click');\r\n\r\n  /**\r\n   * Calls the element's context menu.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-contextmenu}\r\n   */\r\n  @Output() yacontextmenu: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('contextmenu');\r\n\r\n  /**\r\n   * Double left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-dblclick}\r\n   */\r\n  @Output() yadblclick: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('dblclick');\r\n\r\n  /**\r\n   * The map was destroyed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-destroy}\r\n   */\r\n  @Output() destroy: Observable<YaEvent<ymaps.Map>> = this.eventManager.getLazyEmitter('destroy');\r\n\r\n  /**\r\n   * Closing the hint.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-hintclose}\r\n   */\r\n  @Output() hintclose: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('hintclose');\r\n\r\n  /**\r\n   * Opening a hint on a map.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-hintopen}\r\n   */\r\n  @Output() hintopen: Observable<YaEvent<ymaps.Map>> = this.eventManager.getLazyEmitter('hintopen');\r\n\r\n  /**\r\n   * Map margins changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-marginchange}\r\n   */\r\n  @Output() marginchange: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('marginchange');\r\n\r\n  /**\r\n   * Pressing the mouse button over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousedown}\r\n   */\r\n  @Output() yamousedown: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('mousedown');\r\n\r\n  /**\r\n   * Pointing the cursor at the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseenter}\r\n   */\r\n  @Output() yamouseenter: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('mouseenter');\r\n\r\n  /**\r\n   * Moving the cursor off of the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseleave}\r\n   */\r\n  @Output() yamouseleave: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('mouseleave');\r\n\r\n  /**\r\n   * Moving the cursor over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousemove}\r\n   */\r\n  @Output() yamousemove: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('mousemove');\r\n\r\n  /**\r\n   * Letting go of the mouse button over an object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseup}\r\n   */\r\n  @Output() yamouseup: Observable<YaEvent<ymaps.Map>> = this.eventManager.getLazyEmitter('mouseup');\r\n\r\n  /**\r\n   * End of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchend}\r\n   */\r\n  @Output() multitouchend: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('multitouchend');\r\n\r\n  /**\r\n   * Repeating event during multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchmove}\r\n   */\r\n  @Output() multitouchmove: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('multitouchmove');\r\n\r\n  /**\r\n   * Start of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchstart}\r\n   */\r\n  @Output() multitouchstart: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('multitouchstart');\r\n\r\n  /**\r\n   * Map options changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-optionschange}\r\n   */\r\n  @Output() optionschange: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('optionschange');\r\n\r\n  /**\r\n   * Map size changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-sizechange}\r\n   */\r\n  @Output() sizechange: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('sizechange');\r\n\r\n  /**\r\n   * The map type changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Map.html#event_detail__event-typechange}\r\n   */\r\n  @Output() typechange: Observable<YaEvent<ymaps.Map>> =\r\n    this.eventManager.getLazyEmitter('typechange');\r\n\r\n  /**\r\n   * Mouse wheel scrolling.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-wheel}\r\n   */\r\n  @Output() yawheel: Observable<YaEvent<ymaps.Map>> = this.eventManager.getLazyEmitter('wheel');\r\n\r\n  /**\r\n   * Handles input changes and passes them in API.\r\n   * @param changes\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // It must be run outside a zone; otherwise, all async events within this call will cause ticks.\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const map = this.map$.value;\r\n\r\n      if (map) {\r\n        const { center, zoom, state, options } = changes;\r\n\r\n        if (state) {\r\n          this.setState(this.combineState(), map);\r\n        }\r\n\r\n        if (center) {\r\n          map.setCenter(center.currentValue);\r\n        }\r\n\r\n        if (zoom) {\r\n          map.setZoom(zoom.currentValue);\r\n        }\r\n\r\n        if (options) {\r\n          map.options.set(options.currentValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.yaApiLoaderService\r\n      .load()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe(() => {\r\n        const id = generateRandomId();\r\n        const map = this.createMap(id);\r\n\r\n        /**\r\n         * Once the configuration is changed, e.g. language,\r\n         * we need to reinitialize the map.\r\n         */\r\n        if (this.map$.value) {\r\n          this.map$.value.destroy();\r\n        }\r\n\r\n        this.map$.next(map);\r\n        this.eventManager.setTarget(map);\r\n        this.ready.emit({ ymaps, target: map });\r\n      });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.eventManager.destroy();\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * Destructs state and passes it in API.\r\n   * @param state\r\n   * @param map\r\n   */\r\n  private setState(state: ymaps.IMapState, map: ymaps.Map): void {\r\n    const { behaviors, bounds, center, controls, margin, type, zoom } = state;\r\n\r\n    if (behaviors) {\r\n      map.behaviors.enable(behaviors);\r\n    }\r\n\r\n    if (bounds) {\r\n      map.setBounds(bounds);\r\n    }\r\n\r\n    if (center) {\r\n      map.setCenter(center);\r\n    }\r\n\r\n    if (controls) {\r\n      controls.forEach((control) => map.controls.add(control));\r\n    }\r\n\r\n    if (margin) {\r\n      map.margin.setDefaultMargin(margin);\r\n    }\r\n\r\n    if (type) {\r\n      map.setType(type);\r\n    }\r\n\r\n    if (zoom) {\r\n      map.setZoom(zoom);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Creates a map.\r\n   * @param id ID which will be set to the map container.\r\n   */\r\n  private createMap(id: string): ymaps.Map {\r\n    const containerElem: HTMLElement = this.container.nativeElement;\r\n\r\n    containerElem.setAttribute('id', id);\r\n    containerElem.style.cssText = 'width: 100%; height: 100%;';\r\n\r\n    return new ymaps.Map(id, this.combineState(), this.options || {});\r\n  }\r\n\r\n  /**\r\n   * Combines the center and zoom into single object.\r\n   */\r\n  private combineState(): ymaps.IMapState {\r\n    const state = this.state || {};\r\n\r\n    return {\r\n      ...state,\r\n      center: this.center || state.center || [0, 0],\r\n      zoom: this.zoom ?? state.zoom ?? 10,\r\n    };\r\n  }\r\n}\r\n","import type { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Directive, EventEmitter, inject, Input, NgZone, Output } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport type { YaEvent } from '../../types/ya-event';\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { EventManager } from '../../utils/event-manager/event-manager';\r\nimport { YaMapComponent } from '../ya-map/ya-map.component';\r\n\r\n/**\r\n * The `ya-geoobject` component wraps `ymaps.GeoObject` class from the Yandex.Maps API.\r\n * You can configure it via the component's inputs.\r\n * Events can be bound using the outputs of the component.\r\n *\r\n * <example-url>https://stackblitz.com/edit/geoobject-polygon?embed=1&view=preview</example-url>\r\n *\r\n * ```html\r\n * <ya-map [center]=\"[55.761952, 37.620739]\">\r\n *   <ya-geoobject\r\n *     [feature]=\"{ geometry: { type: 'Rectangle', coordinates: [[55.665, 37.66], [55.64,37.53]] } }\"\r\n *   ></ya-geoobject>\r\n * </ya-map>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'ya-geoobject',\r\n})\r\nexport class YaGeoObjectDirective implements OnInit, OnChanges, OnDestroy {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaMapComponent = inject(YaMapComponent);\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private readonly eventManager = new EventManager(this.ngZone);\r\n\r\n  geoObject?: ymaps.GeoObject;\r\n\r\n  /**\r\n   * Geo object description.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#GeoObject__param-feature}\r\n   */\r\n  @Input() feature?: ymaps.IGeoObjectFeature;\r\n\r\n  /**\r\n   * Geo object options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#GeoObject__param-options}\r\n   */\r\n  @Input() options?: ymaps.IGeoObjectOptions;\r\n\r\n  /**\r\n   * Geo object instance is added to a Map. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<ymaps.GeoObject>> = new EventEmitter<\r\n    YaReadyEvent<ymaps.GeoObject>\r\n  >();\r\n\r\n  /**\r\n   * Closing the balloon.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-balloonclose}\r\n   */\r\n  @Output() balloonclose: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('balloonclose');\r\n\r\n  /**\r\n   * Opening a balloon on a geo object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-balloonopen}\r\n   */\r\n  @Output() balloonopen: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('balloonopen');\r\n\r\n  /**\r\n   * Event preceding the \"drag\" event.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-beforedrag}\r\n   */\r\n  @Output() beforedrag: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('beforedrag');\r\n\r\n  /**\r\n   * Event preceding the \"dragstart\" event.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-beforedragstart}\r\n   */\r\n  @Output() beforedragstart: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('beforedragstart');\r\n\r\n  /**\r\n   * Single left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-click}\r\n   */\r\n  @Output() yaclick: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('click');\r\n\r\n  /**\r\n   * Calls the element's context menu.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-contextmenu}\r\n   */\r\n  @Output() yacontextmenu: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('contextmenu');\r\n\r\n  /**\r\n   * Double left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-dblclick}\r\n   */\r\n  @Output() yadblclick: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('dblclick');\r\n\r\n  /**\r\n   * Dragging a geo object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-drag}\r\n   */\r\n  @Output() yadrag: Observable<YaEvent<ymaps.GeoObject>> = this.eventManager.getLazyEmitter('drag');\r\n\r\n  /**\r\n   * End of geo object dragging.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-dragend}\r\n   */\r\n  @Output() yadragend: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('dragend');\r\n\r\n  /**\r\n   * Start of geo object dragging.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-dragstart}\r\n   */\r\n  @Output() yadragstart: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('dragstart');\r\n\r\n  /**\r\n   * Change in the state of the editor for the geo object's geometry.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-editorstatechange}\r\n   */\r\n  @Output() editorstatechange: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('editorstatechange');\r\n\r\n  /**\r\n   * Change to the geo object geometry.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-geometrychange}\r\n   */\r\n  @Output() geometrychange: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('geometrychange');\r\n\r\n  /**\r\n   * Closing the hint.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-hintclose}\r\n   */\r\n  @Output() hintclose: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('hintclose');\r\n\r\n  /**\r\n   * Opening a hint on a geo object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-hintopen}\r\n   */\r\n  @Output() hintopen: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('hintopen');\r\n\r\n  /**\r\n   * Map reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IParentOnMap.html#event_detail__event-mapchange}\r\n   */\r\n  @Output() mapchange: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('mapchange');\r\n\r\n  /**\r\n   * Pressing the mouse button over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousedown}\r\n   */\r\n  @Output() yamousedown: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('mousedown');\r\n\r\n  /**\r\n   * Pointing the cursor at the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseenter}\r\n   */\r\n  @Output() yamouseenter: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('mouseenter');\r\n\r\n  /**\r\n   * Moving the cursor off of the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseleave}\r\n   */\r\n  @Output() yamouseleave: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('mouseleave');\r\n\r\n  /**\r\n   * Moving the cursor over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousemove}\r\n   */\r\n  @Output() yamousemove: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('mousemove');\r\n\r\n  /**\r\n   * Letting go of the mouse button over an object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseup}\r\n   */\r\n  @Output() yamouseup: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('mouseup');\r\n\r\n  /**\r\n   * End of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchend}\r\n   */\r\n  @Output() multitouchend: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('multitouchend');\r\n\r\n  /**\r\n   * Repeating event during multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchmove}\r\n   */\r\n  @Output() multitouchmove: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('multitouchmove');\r\n\r\n  /**\r\n   * Start of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchstart}\r\n   */\r\n  @Output() multitouchstart: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('multitouchstart');\r\n\r\n  /**\r\n   * Change to the object options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/ICustomizable.html#event_detail__event-optionschange}\r\n   */\r\n  @Output() optionschange: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('optionschange');\r\n\r\n  /**\r\n   * Change to the geo object overlay.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-overlaychange}\r\n   */\r\n  @Output() overlaychange: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('overlaychange');\r\n\r\n  /**\r\n   * The parent object reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IChild.html#event_detail__event-parentchange}\r\n   */\r\n  @Output() parentchange: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('parentchange');\r\n\r\n  /**\r\n   * Change to the geo object data.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-propertieschange}\r\n   */\r\n  @Output() propertieschange: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('propertieschange');\r\n\r\n  /**\r\n   * Mouse wheel scrolling.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-wheel}\r\n   */\r\n  @Output() yawheel: Observable<YaEvent<ymaps.GeoObject>> =\r\n    this.eventManager.getLazyEmitter('wheel');\r\n\r\n  /**\r\n   * Handles input changes and passes them in API.\r\n   * @param changes\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // It must be run outside a zone; otherwise, all async events within this call will cause ticks.\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const { geoObject } = this;\r\n\r\n      if (geoObject) {\r\n        const { feature, options } = changes;\r\n\r\n        if (feature) {\r\n          this.setFeature(feature.currentValue, geoObject);\r\n        }\r\n\r\n        if (options) {\r\n          geoObject.options.set(options.currentValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.yaMapComponent.map$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((map) => {\r\n      const geoObject = this.createGeoObject();\r\n      this.geoObject = geoObject;\r\n\r\n      map.geoObjects.add(geoObject);\r\n      this.eventManager.setTarget(geoObject);\r\n      this.ready.emit({ ymaps, target: geoObject });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.geoObject) {\r\n      this.yaMapComponent?.map$.value?.geoObjects.remove(this.geoObject);\r\n      this.eventManager.destroy();\r\n    }\r\n\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * Destructs feature and passes it in API.\r\n   * @param feature\r\n   * @param geoObject\r\n   */\r\n  private setFeature(feature: ymaps.IGeoObjectFeature, geoObject: ymaps.GeoObject): void {\r\n    const { geometry, properties } = feature;\r\n\r\n    if (geometry) {\r\n      console.warn(\r\n        'The geometry can not be changed after entity init. To set it, you should recreate a GeoObject with new feature.geometry',\r\n      );\r\n    }\r\n\r\n    if (properties) {\r\n      geoObject.properties.set(properties);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Creates GeoObject.\r\n   */\r\n  private createGeoObject(): ymaps.GeoObject {\r\n    return new ymaps.GeoObject(this.feature, this.options);\r\n  }\r\n}\r\n","import type { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Directive, EventEmitter, inject, Input, NgZone, Output } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport type { YaEvent } from '../../types/ya-event';\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { EventManager } from '../../utils/event-manager/event-manager';\r\nimport { YaMapComponent } from '../ya-map/ya-map.component';\r\n\r\n/**\r\n * The `ya-placemark` directive wraps `ymaps.Placemark` class from the Yandex.Maps API.\r\n * You can configure it via the directive's inputs.\r\n * Events can be bound using the outputs of the directive.\r\n *\r\n * <example-url>https://stackblitz.com/edit/custom-placemark?embed=1&view=preview</example-url>\r\n *\r\n * ```html\r\n * <ya-map [center]=\"[55.751952, 37.600739]\">\r\n *   <ya-placemark [geometry]=\"[55.751952, 37.600739]\"></ya-placemark>\r\n * </ya-map>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'ya-placemark',\r\n})\r\nexport class YaPlacemarkDirective implements OnInit, OnChanges, OnDestroy {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaMapComponent = inject(YaMapComponent);\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private readonly eventManager = new EventManager(this.ngZone);\r\n\r\n  placemark?: ymaps.Placemark;\r\n\r\n  /**\r\n   * Coordinates of the placemark, or a hash describing the geometry, or a reference to the point geometry object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Placemark.html#Placemark__param-geometry}\r\n   */\r\n  @Input() geometry: number[] | object | ymaps.IPointGeometry = [];\r\n\r\n  /**\r\n   * Placemark properties.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Placemark.html#Placemark__param-properties}\r\n   */\r\n  @Input() properties?: ymaps.IPlacemarkProperties | ymaps.IDataManager;\r\n\r\n  /**\r\n   * Placemark options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Placemark.html#Placemark__param-options}\r\n   */\r\n  @Input() options?: ymaps.IPlacemarkOptions;\r\n\r\n  /**\r\n   * Placemark instance is added to a Map. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<ymaps.Placemark>> = new EventEmitter<\r\n    YaReadyEvent<ymaps.Placemark>\r\n  >();\r\n\r\n  /**\r\n   * Closing the balloon.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-balloonclose}\r\n   */\r\n  @Output() balloonclose: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('balloonclose');\r\n\r\n  /**\r\n   * Opening a balloon on a geo object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-balloonopen}\r\n   */\r\n  @Output() balloonopen: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('balloonopen');\r\n\r\n  /**\r\n   * Event preceding the \"drag\" event.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-beforedrag}\r\n   */\r\n  @Output() beforedrag: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('beforedrag');\r\n\r\n  /**\r\n   * Event preceding the \"dragstart\" event.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-beforedragstart}\r\n   */\r\n  @Output() beforedragstart: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('beforedragstart');\r\n\r\n  /**\r\n   * Single left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-click}\r\n   */\r\n  @Output() yaclick: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('click');\r\n\r\n  /**\r\n   * Calls the element's context menu.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-contextmenu}\r\n   */\r\n  @Output() yacontextmenu: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('contextmenu');\r\n\r\n  /**\r\n   * Double left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-dblclick}\r\n   */\r\n  @Output() yadblclick: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('dblclick');\r\n\r\n  /**\r\n   * Dragging a geo object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-drag}\r\n   */\r\n  @Output() yadrag: Observable<YaEvent<ymaps.Placemark>> = this.eventManager.getLazyEmitter('drag');\r\n\r\n  /**\r\n   * End of geo object dragging.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-dragend}\r\n   */\r\n  @Output() yadragend: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('dragend');\r\n\r\n  /**\r\n   * Start of geo object dragging.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-dragstart}\r\n   */\r\n  @Output() yadragstart: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('dragstart');\r\n\r\n  /**\r\n   * Change in the state of the editor for the geo object's geometry.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-editorstatechange}\r\n   */\r\n  @Output() editorstatechange: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('editorstatechange');\r\n\r\n  /**\r\n   * Change to the geo object geometry.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-geometrychange}\r\n   */\r\n  @Output() geometrychange: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('geometrychange');\r\n\r\n  /**\r\n   * Closing the hint.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-hintclose}\r\n   */\r\n  @Output() hintclose: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('hintclose');\r\n\r\n  /**\r\n   * Opening a hint on a geo object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/GeoObject.html#event_detail__event-hintopen}\r\n   */\r\n  @Output() hintopen: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('hintopen');\r\n\r\n  /**\r\n   * Map reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IParentOnMap.html#event_detail__event-mapchange}\r\n   */\r\n  @Output() mapchange: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('mapchange');\r\n\r\n  /**\r\n   * Pressing the mouse button over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousedown}\r\n   */\r\n  @Output() yamousedown: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('mousedown');\r\n\r\n  /**\r\n   * Pointing the cursor at the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseenter}\r\n   */\r\n  @Output() yamouseenter: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('mouseenter');\r\n\r\n  /**\r\n   * Moving the cursor off of the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseleave}\r\n   */\r\n  @Output() yamouseleave: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('mouseleave');\r\n\r\n  /**\r\n   * Moving the cursor over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousemove}\r\n   */\r\n  @Output() yamousemove: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('mousemove');\r\n\r\n  /**\r\n   * Letting go of the mouse button over an object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseup}\r\n   */\r\n  @Output() yamouseup: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('mouseup');\r\n\r\n  /**\r\n   * End of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchend}\r\n   */\r\n  @Output() multitouchend: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('multitouchend');\r\n\r\n  /**\r\n   * Repeating event during multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchmove}\r\n   */\r\n  @Output() multitouchmove: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('multitouchmove');\r\n\r\n  /**\r\n   * Start of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchstart}\r\n   */\r\n  @Output() multitouchstart: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('multitouchstart');\r\n\r\n  /**\r\n   * Change to the object options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/ICustomizable.html#event_detail__event-optionschange}\r\n   */\r\n  @Output() optionschange: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('optionschange');\r\n\r\n  /**\r\n   * Change to the geo object overlay.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-overlaychange}\r\n   */\r\n  @Output() overlaychange: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('overlaychange');\r\n\r\n  /**\r\n   * The parent object reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IChild.html#event_detail__event-parentchange}\r\n   */\r\n  @Output() parentchange: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('parentchange');\r\n\r\n  /**\r\n   * Change to the geo object data.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-propertieschange}\r\n   */\r\n  @Output() propertieschange: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('propertieschange');\r\n\r\n  /**\r\n   * Mouse wheel scrolling.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-wheel}\r\n   */\r\n  @Output() yawheel: Observable<YaEvent<ymaps.Placemark>> =\r\n    this.eventManager.getLazyEmitter('wheel');\r\n\r\n  /**\r\n   * Handles input changes and passes them in API.\r\n   * @param changes\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // It must be run outside a zone; otherwise, all async events within this call will cause ticks.\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const { placemark } = this;\r\n\r\n      if (placemark) {\r\n        const { geometry, properties, options } = changes;\r\n\r\n        if (geometry) {\r\n          placemark.geometry?.setCoordinates(geometry.currentValue);\r\n        }\r\n\r\n        if (properties) {\r\n          placemark.properties.set(properties.currentValue);\r\n        }\r\n\r\n        if (options) {\r\n          placemark.options.set(options.currentValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.yaMapComponent.map$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((map) => {\r\n      const placemark = this.createPlacemark();\r\n      this.placemark = placemark;\r\n\r\n      map.geoObjects.add(placemark);\r\n      this.eventManager.setTarget(placemark);\r\n      this.ready.emit({ ymaps, target: placemark });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.placemark) {\r\n      this.yaMapComponent?.map$.value?.geoObjects.remove(this.placemark);\r\n      this.eventManager.destroy();\r\n    }\r\n\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * Creates a placemark.\r\n   */\r\n  private createPlacemark(): ymaps.Placemark {\r\n    return new ymaps.Placemark(this.geometry, this.properties, this.options);\r\n  }\r\n}\r\n","import type { AfterContentInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChildren,\r\n  EventEmitter,\r\n  inject,\r\n  Input,\r\n  NgZone,\r\n  Output,\r\n  QueryList,\r\n} from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport type { YaEvent } from '../../types/ya-event';\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { EventManager } from '../../utils/event-manager/event-manager';\r\nimport { YaGeoObjectDirective } from '../ya-geoobject/ya-geoobject.directive';\r\nimport { YaMapComponent } from '../ya-map/ya-map.component';\r\nimport { YaPlacemarkDirective } from '../ya-placemark/ya-placemark.directive';\r\n\r\n/**\r\n * The `ya-clusterer` component wraps `ymaps.Clusterer` class from the Yandex.Maps API.\r\n * You can configure it via the component's inputs.\r\n * Events can be bound using the outputs of the component.\r\n *\r\n * <example-url>https://stackblitz.com/edit/placemark-clusterer?embed=1&view=preview</example-url>\r\n *\r\n * ```html\r\n * <ya-map [center]=\"[55.761952, 37.620739]\">\r\n *   <ya-clusterer [options]=\"{ minClusterSize: 5 }\">\r\n *     <ya-placemark [geometry]=\"[55.74, 37.5]\"></ya-placemark>\r\n *     <ya-placemark [geometry]=\"[55.64, 37.46]\"></ya-placemark>\r\n *     <ya-placemark [geometry]=\"[55.75, 37.38]\"></ya-placemark>\r\n *\r\n *     <ya-geoobject\r\n *       [feature]=\"{ geometry: { type: 'Point', coordinates: [55.81, 37.4] } }\"\r\n *      ></ya-geoobject>\r\n *\r\n *     <ya-geoobject\r\n *       [feature]=\"{ geometry: { type: 'Point', coordinates: [55.7, 37.39] } }\"\r\n *      ></ya-geoobject>\r\n *   </ya-clusterer>\r\n * </ya-map>\r\n * ```\r\n */\r\n@Component({\r\n  selector: 'ya-clusterer',\r\n  template: '<ng-content></ng-content>',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class YaClustererComponent implements AfterContentInit, OnChanges, OnDestroy {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaMapComponent = inject(YaMapComponent);\r\n\r\n  @ContentChildren(YaPlacemarkDirective)\r\n  private readonly placemarks: QueryList<YaPlacemarkDirective> = new QueryList();\r\n\r\n  @ContentChildren(YaGeoObjectDirective)\r\n  private readonly geoObjects: QueryList<YaGeoObjectDirective> = new QueryList();\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private readonly eventManager = new EventManager(this.ngZone);\r\n\r\n  private clusterer?: ymaps.Clusterer;\r\n\r\n  /**\r\n   * Clusterer options. Options for child cluster objects are set with the \"cluster\" prefix.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Clusterer.html#Clusterer__param-options}\r\n   */\r\n  @Input() options?: ymaps.IClustererOptions;\r\n\r\n  /**\r\n   * Clusterer instance is added to a Map. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<ymaps.Clusterer>> = new EventEmitter<\r\n    YaReadyEvent<ymaps.Clusterer>\r\n  >();\r\n\r\n  /**\r\n   * Closing the hint.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Clusterer.html#event_detail__event-hintclose}\r\n   */\r\n  @Output() hintclose: Observable<YaEvent<ymaps.Clusterer>> =\r\n    this.eventManager.getLazyEmitter('hintclose');\r\n\r\n  /**\r\n   * Opening a hint on a map.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/Clusterer.html#event_detail__event-hintopen}\r\n   */\r\n  @Output() hintopen: Observable<YaEvent<ymaps.Clusterer>> =\r\n    this.eventManager.getLazyEmitter('hintopen');\r\n\r\n  /**\r\n   * Map reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IParentOnMap.html#event_detail__event-mapchange}\r\n   */\r\n  @Output() mapchange: Observable<YaEvent<ymaps.Clusterer>> =\r\n    this.eventManager.getLazyEmitter('mapchange');\r\n\r\n  /**\r\n   * Change to the object options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/ICustomizable.html#event_detail__event-optionschange}\r\n   */\r\n  @Output() optionschange: Observable<YaEvent<ymaps.Clusterer>> =\r\n    this.eventManager.getLazyEmitter('optionschange');\r\n\r\n  /**\r\n   * The parent object reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IChild.html#event_detail__event-parentchange}\r\n   */\r\n  @Output() parentchange: Observable<YaEvent<ymaps.Clusterer>> =\r\n    this.eventManager.getLazyEmitter('parentchange');\r\n\r\n  /**\r\n   * Handles input changes and passes them in API.\r\n   * @param changes\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // It must be run outside a zone; otherwise, all async events within this call will cause ticks.\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const { clusterer } = this;\r\n\r\n      if (clusterer) {\r\n        const { options } = changes;\r\n\r\n        if (options) {\r\n          clusterer.options.set(options.currentValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this.yaMapComponent.map$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((map) => {\r\n      const clusterer = this.createClusterer();\r\n      this.clusterer = clusterer;\r\n\r\n      map.geoObjects.add(clusterer);\r\n      this.eventManager.setTarget(clusterer);\r\n      this.watchForPlacemarkChanges(clusterer);\r\n      this.watchForGeoObjectChanges(clusterer);\r\n      this.ready.emit({ ymaps, target: clusterer });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.eventManager.destroy();\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * Creates Clusterer.\r\n   */\r\n  private createClusterer(): ymaps.Clusterer {\r\n    return new ymaps.Clusterer(this.options);\r\n  }\r\n\r\n  private watchForPlacemarkChanges(clusterer: ymaps.Clusterer): void {\r\n    // Adds new Placemarks to the clusterer on changes.\r\n    const initialPlacemarks = this.getInternalPlacemarks(this.placemarks.toArray());\r\n    const currentPlacemarks = new Set<ymaps.Placemark>(initialPlacemarks);\r\n\r\n    clusterer.add(initialPlacemarks);\r\n\r\n    this.placemarks.changes\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((placemarkDirectives: YaPlacemarkDirective[]) => {\r\n        const newPlacemarks = new Set<ymaps.Placemark>(\r\n          this.getInternalPlacemarks(placemarkDirectives),\r\n        );\r\n\r\n        const difference = this.getDifference<ymaps.Placemark>(newPlacemarks, currentPlacemarks);\r\n\r\n        clusterer.add(difference.toAdd);\r\n        clusterer.remove(difference.toRemove);\r\n      });\r\n  }\r\n\r\n  private watchForGeoObjectChanges(clusterer: ymaps.Clusterer) {\r\n    // Adds new GeoObjects to the clusterer on changes.\r\n    const initialGeoObjects = this.getInternalGeoObjects(this.geoObjects.toArray());\r\n    const currentGeoObjects = new Set<ymaps.GeoObject>(initialGeoObjects);\r\n\r\n    clusterer.add(initialGeoObjects);\r\n\r\n    this.geoObjects.changes\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((geoObjectDirectives: YaGeoObjectDirective[]) => {\r\n        const newGeoObjects = new Set<ymaps.GeoObject>(\r\n          this.getInternalGeoObjects(geoObjectDirectives),\r\n        );\r\n\r\n        const difference = this.getDifference<ymaps.GeoObject>(newGeoObjects, currentGeoObjects);\r\n\r\n        clusterer.add(difference.toAdd);\r\n        clusterer.remove(difference.toRemove);\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Determines what should be added/removed in current set to equal new set\r\n   *\r\n   * @param newSet\r\n   * @param currentSet\r\n   */\r\n  private getDifference<T>(newSet: Set<T>, currentSet: Set<T>) {\r\n    const toAdd: T[] = [];\r\n    const toRemove: T[] = [];\r\n\r\n    newSet.forEach((component) => {\r\n      if (!currentSet.has(component)) {\r\n        toAdd.push(component);\r\n        currentSet.add(component);\r\n      }\r\n    });\r\n\r\n    currentSet.forEach((component) => {\r\n      if (!newSet.has(component)) {\r\n        toRemove.push(component);\r\n        currentSet.delete(component);\r\n      }\r\n    });\r\n\r\n    return {\r\n      toAdd,\r\n      toRemove,\r\n    };\r\n  }\r\n\r\n  private getInternalPlacemarks(placemarks: YaPlacemarkDirective[]): ymaps.Placemark[] {\r\n    return placemarks\r\n      .filter((component) => !!component.placemark)\r\n      .map((component) => component.placemark!);\r\n  }\r\n\r\n  private getInternalGeoObjects(geoObjects: YaGeoObjectDirective[]): ymaps.GeoObject[] {\r\n    return geoObjects\r\n      .filter((component) => !!component.geoObject)\r\n      .map((component) => component.geoObject!);\r\n  }\r\n}\r\n","import type { OnChanges, OnDestroy, OnInit } from '@angular/core';\r\nimport { Directive, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { YaMapComponent } from '../ya-map/ya-map.component';\r\n\r\n/**\r\n * Types for `YaControlDirective[type]` input.\r\n */\r\nexport type YaControlType =\r\n  | 'Button'\r\n  | 'FullscreenControl'\r\n  | 'GeolocationControl'\r\n  | 'ListBox'\r\n  | 'ListBoxItem'\r\n  | 'RouteButton'\r\n  | 'RouteEditor'\r\n  | 'RoutePanel'\r\n  | 'RulerControl'\r\n  | 'SearchControl'\r\n  | 'TrafficControl'\r\n  | 'TypeSelector'\r\n  | 'ZoomControl';\r\n\r\n/**\r\n * The `ya-control` component wraps `ymaps.control[YaControlType]` classes from the Yandex.Maps API.\r\n * You can configure `ymaps.control[YaControlType]` via the component's inputs.\r\n * API Events can be bound only manually. You can use `ready` event to get an instance.\r\n *\r\n * <example-url>https://stackblitz.com/edit/searchcontrol?embed=1&view=preview</example-url>\r\n *\r\n * ```html\r\n * <ya-map [center]=\"[55.761952, 37.620739]\">\r\n *   <ya-control\r\n *     type=\"RoutePanel\"\r\n *     [parameters]=\"{ options: { float: 'right' } }\"\r\n *   ></ya-control>\r\n * </ya-map>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'ya-control',\r\n})\r\nexport class YaControlDirective implements OnInit, OnChanges, OnDestroy {\r\n  private readonly yaMapComponent = inject(YaMapComponent);\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private control?: any;\r\n\r\n  /**\r\n   * Control type.\r\n   */\r\n  @Input() type?: YaControlType;\r\n\r\n  /**\r\n   * Control parameters.\r\n   */\r\n  @Input() parameters?: any;\r\n\r\n  /**\r\n   * Control instance is added to a Map. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<any>> = new EventEmitter<YaReadyEvent<any>>();\r\n\r\n  ngOnChanges(): void {\r\n    if (this.control) {\r\n      console.warn(\r\n        'Control does not support dynamic configuration. You can config it manually using ymaps or recreate the component with new configuration.',\r\n      );\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.yaMapComponent.map$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((map) => {\r\n      if (!this.type) {\r\n        throw new Error('ymaps.control[type] is invalid.');\r\n      }\r\n\r\n      const control = new ymaps.control[this.type](this.parameters);\r\n      this.control = control;\r\n\r\n      // RoutePanel ignores state in parameters. API bug\r\n      if (control instanceof ymaps.control.RoutePanel && this.parameters && this.parameters.state) {\r\n        control.routePanel.state.set({ ...this.parameters.state });\r\n      }\r\n\r\n      map.controls.add(control);\r\n      this.ready.emit({ ymaps, target: control });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.control) {\r\n      this.yaMapComponent?.map$.value?.controls.remove(this.control);\r\n    }\r\n\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n}\r\n","import type { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Directive, EventEmitter, inject, Input, NgZone, Output } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport type { YaEvent } from '../../types/ya-event';\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { EventManager } from '../../utils/event-manager/event-manager';\r\nimport { YaMapComponent } from '../ya-map/ya-map.component';\r\n\r\n/**\r\n * @internal\r\n */\r\ntype Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\r\n\r\n/**\r\n * The `ya-multiroute` component wraps `ymaps.multiRouter.MultiRoute` class from the Yandex.Maps API.\r\n * You can configure it via the component's inputs.\r\n * Events can be bound using the outputs of the component.\r\n *\r\n * ```html\r\n * <ya-map [center]=\"[55.761952, 37.620739]\">\r\n *   <ya-multiroute\r\n *     [referencePoints]=\"[[55.751952, 37.600739], 'Красные ворота, Москва']\"\r\n *     [models]=\"{ params: { routingMode: 'pedestrian' } }\"\r\n *   ></ya-multiroute>\r\n * </ya-map>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'ya-multiroute',\r\n})\r\nexport class YaMultirouteDirective implements OnInit, OnChanges, OnDestroy {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaMapComponent = inject(YaMapComponent);\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private readonly eventManager = new EventManager(this.ngZone);\r\n\r\n  private multiroute?: ymaps.multiRouter.MultiRoute;\r\n\r\n  /**\r\n   * Multi-route reference points.\r\n   * Shorthand for `[models]=\"{ referencePoints: [0, 0] }\"`.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IMultiRouteReferencePoint.html}\r\n   */\r\n  @Input() referencePoints: ymaps.IMultiRouteReferencePoint[] = [];\r\n\r\n  /**\r\n   * The data model of a multi-route, or the model description object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#multiRouter.MultiRoute__param-model}\r\n   */\r\n  @Input() model?:\r\n    | ymaps.multiRouter.MultiRouteModel\r\n    | Optional<ymaps.IMultiRouteModelJson, 'referencePoints'>;\r\n\r\n  /**\r\n   * Multi-route options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#multiRouter.MultiRoute__param-options}\r\n   */\r\n  @Input() options?: ymaps.multiRouter.IMultiRouteOptions;\r\n\r\n  /**\r\n   * Multi-route instance is added to a Map. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<ymaps.multiRouter.MultiRoute>> = new EventEmitter<\r\n    YaReadyEvent<ymaps.multiRouter.MultiRoute>\r\n  >();\r\n\r\n  /**\r\n   * Change to the active route.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#event_detail__event-activeroutechange}\r\n   */\r\n  @Output() activeroutechange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('activeroutechange');\r\n\r\n  /**\r\n   * Closing the balloon.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#event_detail__event-balloonclose}\r\n   */\r\n  @Output() balloonclose: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('balloonclose');\r\n\r\n  /**\r\n   * Opening the balloon.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#event_detail__event-balloonopen}\r\n   */\r\n  @Output() balloonopen: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('balloonopen');\r\n\r\n  /**\r\n   * The event occurs at the time of setting the map center and its zoom level for optimal display of the multi-route.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#event_detail__event-boundsautoapply}\r\n   */\r\n  @Output() boundsautoapply: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('boundsautoapply');\r\n\r\n  /**\r\n   * Changing coordinates of the geographical area covering the multi-route.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#event_detail__event-boundschange}\r\n   */\r\n  @Output() boundschange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('boundschange');\r\n\r\n  /**\r\n   * Single left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-click}\r\n   */\r\n  @Output() yaclick: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('click');\r\n\r\n  /**\r\n   * Calls the element's context menu.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-contextmenu}\r\n   */\r\n  @Output() yacontextmenu: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('contextmenu');\r\n\r\n  /**\r\n   * Double left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-dblclick}\r\n   */\r\n  @Output() yadblclick: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('dblclick');\r\n\r\n  /**\r\n   * Change to the geo object geometry.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-geometrychange}\r\n   */\r\n  @Output() geometrychange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('geometrychange');\r\n\r\n  /**\r\n   * Map reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IParentOnMap.html#event_detail__event-mapchange}\r\n   */\r\n  @Output() mapchange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('mapchange');\r\n\r\n  /**\r\n   * Pressing the mouse button over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousedown}\r\n   */\r\n  @Output() yamousedown: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('mousedown');\r\n\r\n  /**\r\n   * Pointing the cursor at the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseenter}\r\n   */\r\n  @Output() yamouseenter: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('mouseenter');\r\n\r\n  /**\r\n   * Moving the cursor off of the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseleave}\r\n   */\r\n  @Output() yamouseleave: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('mouseleave');\r\n\r\n  /**\r\n   * Moving the cursor over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousemove}\r\n   */\r\n  @Output() yamousemove: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('mousemove');\r\n\r\n  /**\r\n   * Letting go of the mouse button over an object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseup}\r\n   */\r\n  @Output() yamouseup: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('mouseup');\r\n\r\n  /**\r\n   * End of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchend}\r\n   */\r\n  @Output() multitouchend: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('multitouchend');\r\n\r\n  /**\r\n   * Repeating event during multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchmove}\r\n   */\r\n  @Output() multitouchmove: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('multitouchmove');\r\n\r\n  /**\r\n   * Start of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchstart}\r\n   */\r\n  @Output() multitouchstart: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('multitouchstart');\r\n\r\n  /**\r\n   * Change to the object options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/ICustomizable.html#event_detail__event-optionschange}\r\n   */\r\n  @Output() optionschange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('optionschange');\r\n\r\n  /**\r\n   * Change to the geo object overlay.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-overlaychange}\r\n   */\r\n  @Output() overlaychange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('overlaychange');\r\n\r\n  /**\r\n   * The parent object reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IChild.html#event_detail__event-parentchange}\r\n   */\r\n  @Output() parentchange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('parentchange');\r\n\r\n  /**\r\n   * Changing pixel coordinates of the area covering the multi-route.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#event_detail__event-pixelboundschange}\r\n   */\r\n  @Output() pixelboundschange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('pixelboundschange');\r\n\r\n  /**\r\n   * Change to the geo object data.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-propertieschange}\r\n   */\r\n  @Output() propertieschange: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('propertieschange');\r\n\r\n  /**\r\n   * Updating the multi-route.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/multiRouter.MultiRoute.html#event_detail__event-update}\r\n   */\r\n  @Output() update: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('update');\r\n\r\n  /**\r\n   * Mouse wheel scrolling.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-wheel}\r\n   */\r\n  @Output() yawheel: Observable<YaEvent<ymaps.multiRouter.MultiRoute>> =\r\n    this.eventManager.getLazyEmitter('wheel');\r\n\r\n  /**\r\n   * Handles input changes and passes them in API.\r\n   * @param changes\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // It must be run outside a zone; otherwise, all async events within this call will cause ticks.\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const { multiroute } = this;\r\n\r\n      if (multiroute) {\r\n        const { referencePoints, model, options } = changes;\r\n\r\n        if (model) {\r\n          this.setModel(model.currentValue, multiroute);\r\n        }\r\n\r\n        if (referencePoints) {\r\n          multiroute.model.setReferencePoints(referencePoints.currentValue);\r\n        }\r\n\r\n        if (options) {\r\n          multiroute.options.set(options.currentValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.yaMapComponent.map$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((map) => {\r\n      const multiroute = this.createMultiroute();\r\n      this.multiroute = multiroute;\r\n\r\n      map.geoObjects.add(multiroute);\r\n      this.eventManager.setTarget(multiroute);\r\n      this.ready.emit({ ymaps, target: multiroute });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.multiroute) {\r\n      this.yaMapComponent?.map$.value?.geoObjects.remove(this.multiroute);\r\n      this.eventManager.destroy();\r\n    }\r\n\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * Destructs state and passes them in API.\r\n   * @param model\r\n   * @param multiroute\r\n   */\r\n  private setModel(\r\n    model: ymaps.IMultiRouteModelJson,\r\n    multiroute: ymaps.multiRouter.MultiRoute,\r\n  ): void {\r\n    const { referencePoints, params } = model;\r\n\r\n    if (referencePoints) {\r\n      multiroute.model.setReferencePoints(referencePoints);\r\n    }\r\n\r\n    if (params) {\r\n      multiroute.model.setParams(params);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Creates Multiroute.\r\n   */\r\n  private createMultiroute(): ymaps.multiRouter.MultiRoute {\r\n    return new ymaps.multiRouter.MultiRoute(this.combineModel(), this.options);\r\n  }\r\n\r\n  /**\r\n   * Combines the models and reference points into single object\r\n   */\r\n  private combineModel(): ymaps.IMultiRouteModelJson {\r\n    const model = (this.model || {}) as ymaps.IMultiRouteModelJson;\r\n\r\n    return {\r\n      ...model,\r\n      referencePoints: this.referencePoints || model.referencePoints,\r\n    };\r\n  }\r\n}\r\n","import type { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Directive, EventEmitter, inject, Input, NgZone, Output } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport type { YaEvent } from '../../types/ya-event';\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { EventManager } from '../../utils/event-manager/event-manager';\r\nimport { YaMapComponent } from '../ya-map/ya-map.component';\r\n\r\n/**\r\n * The `ya-object-manager` component wraps `ymaps.ObjectManager` class from the Yandex.Maps API.\r\n * You can configure it via the component's inputs.\r\n * Events can be bound using the outputs of the component.\r\n *\r\n * <example-url>https://stackblitz.com/edit/object-manager?embed=1&view=preview</example-url>\r\n *\r\n * ```html\r\n * <ya-map [center]=\"[55.761952, 37.620739]\">\r\n *   <ya-object-manager\r\n *     [options]=\"{ clusterize: true }\"\r\n *     (ready)=\"onReady($event)\"\r\n *   ></ya-object-manager>\r\n * </ya-map>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'ya-object-manager',\r\n})\r\nexport class YaObjectManagerDirective implements OnInit, OnChanges, OnDestroy {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaMapComponent = inject(YaMapComponent);\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private readonly eventManager = new EventManager(this.ngZone);\r\n\r\n  private objectManager?: ymaps.ObjectManager;\r\n\r\n  /**\r\n   * ObjectManager options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/ObjectManager.html#ObjectManager__param-options}\r\n   */\r\n  @Input() options?: ymaps.IObjectManagerOptions;\r\n\r\n  /**\r\n   * ObjectManager instance is added to a Map. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<ymaps.ObjectManager>> = new EventEmitter<\r\n    YaReadyEvent<ymaps.ObjectManager>\r\n  >();\r\n\r\n  /**\r\n   * Single left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-click}\r\n   */\r\n  @Output() yaclick: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('click');\r\n\r\n  /**\r\n   * Calls the element's context menu.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-contextmenu}\r\n   */\r\n  @Output() yacontextmenu: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('contextmenu');\r\n\r\n  /**\r\n   * Double left-click on the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-dblclick}\r\n   */\r\n  @Output() yadblclick: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('dblclick');\r\n\r\n  /**\r\n   * Change to the geo object geometry.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-geometrychange}\r\n   */\r\n  @Output() geometrychange: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('geometrychange');\r\n\r\n  /**\r\n   * Map reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IParentOnMap.html#event_detail__event-mapchange}\r\n   */\r\n  @Output() mapchange: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('mapchange');\r\n\r\n  /**\r\n   * Pressing the mouse button over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousedown}\r\n   */\r\n  @Output() yamousedown: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('mousedown');\r\n\r\n  /**\r\n   * Pointing the cursor at the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseenter}\r\n   */\r\n  @Output() yamouseenter: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('mouseenter');\r\n\r\n  /**\r\n   * Moving the cursor off of the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseleave}\r\n   */\r\n  @Output() yamouseleave: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('mouseleave');\r\n\r\n  /**\r\n   * Moving the cursor over the object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mousemove}\r\n   */\r\n  @Output() yamousemove: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('mousemove');\r\n\r\n  /**\r\n   * Letting go of the mouse button over an object.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-mouseup}\r\n   */\r\n  @Output() yamouseup: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('mouseup');\r\n\r\n  /**\r\n   * End of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchend}\r\n   */\r\n  @Output() multitouchend: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('multitouchend');\r\n\r\n  /**\r\n   * Repeating event during multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchmove}\r\n   */\r\n  @Output() multitouchmove: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('multitouchmove');\r\n\r\n  /**\r\n   * Start of multitouch.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-multitouchstart}\r\n   */\r\n  @Output() multitouchstart: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('multitouchstart');\r\n\r\n  /**\r\n   * Change to the object options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/ICustomizable.html#event_detail__event-optionschange}\r\n   */\r\n  @Output() optionschange: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('optionschange');\r\n\r\n  /**\r\n   * Change to the geo object overlay.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-overlaychange}\r\n   */\r\n  @Output() overlaychange: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('overlaychange');\r\n\r\n  /**\r\n   * The parent object reference changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IChild.html#event_detail__event-parentchange}\r\n   */\r\n  @Output() parentchange: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('parentchange');\r\n\r\n  /**\r\n   * Change to the geo object data.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IGeoObject.html#event_detail__event-propertieschange}\r\n   */\r\n  @Output() propertieschange: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('propertieschange');\r\n\r\n  /**\r\n   * Mouse wheel scrolling.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/IDomEventEmitter.html#event_detail__event-wheel}\r\n   */\r\n  @Output() yawheel: Observable<YaEvent<ymaps.ObjectManager>> =\r\n    this.eventManager.getLazyEmitter('wheel');\r\n\r\n  /**\r\n   * Handles input changes and passes them in API.\r\n   * @param changes\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // It must be run outside a zone; otherwise, all async events within this call will cause ticks.\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const { objectManager } = this;\r\n\r\n      if (objectManager) {\r\n        const { options } = changes;\r\n\r\n        if (options) {\r\n          objectManager.options.set(options.currentValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.yaMapComponent.map$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((map) => {\r\n      const objectManager = this.createObjectManager();\r\n      this.objectManager = objectManager;\r\n\r\n      map.geoObjects.add(objectManager);\r\n      this.eventManager.setTarget(objectManager);\r\n      this.ready.emit({ ymaps, target: objectManager });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.objectManager) {\r\n      this.yaMapComponent?.map$.value?.geoObjects.remove(this.objectManager);\r\n      this.eventManager.destroy();\r\n    }\r\n\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * Creates ObjectManager.\r\n   */\r\n  private createObjectManager(): ymaps.ObjectManager {\r\n    if (!this.options) {\r\n      throw new Error('ObjectManager options are undefined.');\r\n    }\r\n\r\n    return new ymaps.ObjectManager(this.options);\r\n  }\r\n}\r\n","import type { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Directive, EventEmitter, inject, Input, NgZone, Output } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { from, Subject, takeUntil } from 'rxjs';\r\nimport { filter, map, switchMap } from 'rxjs/operators';\r\n\r\nimport type { YaEvent } from '../../types/ya-event';\r\nimport type { YaReadyEvent } from '../../types/ya-ready-event';\r\nimport { EventManager } from '../../utils/event-manager/event-manager';\r\nimport { YaMapComponent } from '../ya-map/ya-map.component';\r\n\r\n/**\r\n * The `ya-panorama` component wraps `ymaps.panorama.Player` class from the Yandex.Maps API.\r\n * You can configure it via the component's inputs.\r\n * Events can be bound using the outputs of the component.\r\n *\r\n * ```html\r\n * <ya-map>\r\n *   <ya-panorama [point]=\"[59.938557, 30.316198]\" layer=\"yandex#airPanorama\"></ya-panorama>\r\n * </ya-map>\r\n * ```\r\n */\r\n@Directive({\r\n  selector: 'ya-panorama',\r\n})\r\nexport class YaPanoramaDirective implements OnInit, OnChanges, OnDestroy {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaMapComponent = inject(YaMapComponent);\r\n\r\n  private readonly destroy$ = new Subject<void>();\r\n\r\n  private readonly eventManager = new EventManager(this.ngZone);\r\n\r\n  private player?: ymaps.panorama.Player;\r\n\r\n  /**\r\n   * The point for searching for nearby panoramas.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.locate.html#panorama.locate__param-point}\r\n   */\r\n  @Input() point: number[] = [];\r\n\r\n  /**\r\n   * The layer to search for panoramas.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.locate.html#panorama.locate__param-options.layer}\r\n   */\r\n  @Input() layer?: ymaps.panorama.Layer;\r\n\r\n  /**\r\n   * Player options.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#panorama.Player__param-options}\r\n   */\r\n  @Input() options?: ymaps.panorama.IPlayerOptions;\r\n\r\n  /**\r\n   * Panorama instance is created. This event runs outside an Angular zone.\r\n   */\r\n  @Output() ready: EventEmitter<YaReadyEvent<ymaps.panorama.Player>> = new EventEmitter<\r\n    YaReadyEvent<ymaps.panorama.Player>\r\n  >();\r\n\r\n  /**\r\n   * The player was closed by the user or destroyed using the panorama.Player.destroy method.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-destroy}\r\n   */\r\n  @Output() destroy: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('destroy');\r\n\r\n  /**\r\n   * The view direction changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-directionchange}\r\n   */\r\n  @Output() directionchange: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('directionchange');\r\n\r\n  /**\r\n   * An error occurred during operation of the player. The user will be shown the appropriate screen.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-error}\r\n   */\r\n  @Output() yaerror: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('error');\r\n\r\n  /**\r\n   * The panorama player switched to full-screen mode.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-fullscreenenter}\r\n   */\r\n  @Output() fullscreenenter: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('fullscreenenter');\r\n\r\n  /**\r\n   * The panorama player exited full-screen mode.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-fullscreenexit}\r\n   */\r\n  @Output() fullscreenexit: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('fullscreenexit');\r\n\r\n  /**\r\n   * The user clicked on an expanded marker.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-markercollapse}\r\n   */\r\n  @Output() markercollapse: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('markercollapse');\r\n\r\n  /**\r\n   * The user clicked on a collapsed marker.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-markerexpand}\r\n   */\r\n  @Output() markerexpand: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('markerexpand');\r\n\r\n  /**\r\n   * The user's cursor hovered over a marker.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-markermouseenter}\r\n   */\r\n  @Output() markermouseenter: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('markermouseenter');\r\n\r\n  /**\r\n   * The user's cursor left a marker.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-markermouseleave}\r\n   */\r\n  @Output() markermouseleave: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('markermouseleave');\r\n\r\n  /**\r\n   * The open panorama changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-panoramachange}\r\n   */\r\n  @Output() panoramachange: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('panoramachange');\r\n\r\n  /**\r\n   * The size of the viewport has been changed.\r\n   * {@link https://yandex.com/dev/maps/jsapi/doc/2.1/ref/reference/panorama.Player.html#event_detail__event-spanchange}\r\n   */\r\n  @Output() spanchange: Observable<YaEvent<ymaps.panorama.Player>> =\r\n    this.eventManager.getLazyEmitter('spanchange');\r\n\r\n  /**\r\n   * Handles input changes and passes them in API.\r\n   * @param changes\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // It must be run outside a zone; otherwise, all async events within this call will cause ticks.\r\n    this.ngZone.runOutsideAngular(() => {\r\n      const { player } = this;\r\n\r\n      if (player) {\r\n        const { point, layer, options } = changes;\r\n\r\n        /**\r\n         * player.moveTo resets values to default if any of them isn't passed.\r\n         * That's why we use value from currentValue OR previous value from input.\r\n         * With that logic it's possible to pass only point, layer or options.\r\n         */\r\n        if (point || layer) {\r\n          const combinedPoint: number[] = point?.currentValue || this.point;\r\n          const combinedLayer: ymaps.panorama.Layer = layer?.currentValue || this.layer;\r\n\r\n          player.moveTo(combinedPoint, { layer: combinedLayer });\r\n        }\r\n\r\n        if (options) {\r\n          this.setOptions(options.currentValue, player);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const panorama$ = this.yaMapComponent.map$.pipe(\r\n      filter(Boolean),\r\n      switchMap((map: ymaps.Map) => {\r\n        /**\r\n         * Maps and panoramas use the same container,\r\n         * so we need to destroy/remove this map.\r\n         */\r\n        map.destroy();\r\n\r\n        return this.createPanorama();\r\n      }),\r\n    );\r\n\r\n    panorama$.pipe(takeUntil(this.destroy$)).subscribe((panorama) => {\r\n      const { id } = this.yaMapComponent.container.nativeElement;\r\n      const player = new ymaps.panorama.Player(id, panorama, this.options);\r\n\r\n      /**\r\n       * If the panorama$ is changed, it means that the $map is changed,\r\n       * and finally it means that the configuration is changed, e.g. language,\r\n       * and we need to reinitialize the player.\r\n       */\r\n      if (this.player) {\r\n        this.player.destroy();\r\n      }\r\n\r\n      this.player = player;\r\n\r\n      /**\r\n       * The API breaks if we call destroy on a destroyed player instance.\r\n       * That's why sync states => local and API.\r\n       */\r\n      this.player.events.add('destroy', () => {\r\n        this.player = undefined;\r\n      });\r\n\r\n      this.eventManager.setTarget(player);\r\n      this.ready.emit({ ymaps, target: player });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.eventManager.destroy();\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * Destructs state and passes it in API.\r\n   * @param options\r\n   * @param player\r\n   */\r\n  private setOptions(options: ymaps.panorama.IPlayerOptions, player: ymaps.panorama.Player): void {\r\n    const {\r\n      autoFitToViewport,\r\n      controls,\r\n      direction,\r\n      hotkeysEnabled,\r\n      span,\r\n      scrollZoomBehavior,\r\n      suppressMapOpenBlock,\r\n    } = options;\r\n\r\n    if (\r\n      autoFitToViewport ||\r\n      controls ||\r\n      hotkeysEnabled ||\r\n      scrollZoomBehavior ||\r\n      suppressMapOpenBlock\r\n    ) {\r\n      console.warn(\r\n        'Only direction and span can be set after entity init. To set other options, you should recreate a Panorama with new options',\r\n      );\r\n    }\r\n\r\n    if (direction) {\r\n      player.setDirection(direction);\r\n    }\r\n\r\n    if (span) {\r\n      player.setSpan(span);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Searches for a panorama and returns first\r\n   */\r\n  private createPanorama(): Observable<ymaps.IPanorama> {\r\n    return from(ymaps.panorama.locate(this.point, { layer: this.layer })).pipe(\r\n      map((panoramas) => panoramas[0]),\r\n    );\r\n  }\r\n}\r\n","import { inject, Injectable, NgZone } from '@angular/core';\r\nimport type { Observable } from 'rxjs';\r\nimport { from } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\n\r\nimport { enterZone } from '../../utils/zone/zone';\r\nimport { YaApiLoaderService } from '../ya-api-loader/ya-api-loader.service';\r\n\r\n/**\r\n * The `YaGeocoder` service wraps `ymaps.geocode` static function from the Yandex.Maps API.\r\n *\r\n * ```ts\r\n * import { YaGeocoderService } from 'angular8-yandex-maps';\r\n *\r\n * @Component()\r\n * export class AppComponent {\r\n *   constructor(private yaGeocoderService: YaGeocoderService) {\r\n *     // Don't forget to unsubscribe\r\n *     this.yaGeocoderService.geocode('Moscow')\r\n *       .subscribe(v => console.log(v))\r\n *   }\r\n * }\r\n * ```\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class YaGeocoderService {\r\n  private readonly ngZone = inject(NgZone);\r\n  private readonly yaApiLoaderService = inject(YaApiLoaderService);\r\n\r\n  /**\r\n   * Processes geocoding requests.\r\n   * @param request the address for which coordinates need to be obtained (forward geocoding),\r\n   * or the coordinates for which the address needs to be determined (reverse geocoding).\r\n   * @param options geocode options.\r\n   */\r\n  geocode(request: string | number[], options?: ymaps.IGeocodeOptions): Observable<object> {\r\n    return this.yaApiLoaderService.load().pipe(\r\n      switchMap(() => from(ymaps.geocode(request, options))),\r\n      enterZone(this.ngZone),\r\n    );\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of angular8-yandex-maps\r\n */\r\n\r\n// Yandex.Maps typings\r\nimport './lib/types/yandex-maps';\r\n\r\n// Components\r\nexport * from './lib/components/ya-clusterer/ya-clusterer.component';\r\nexport * from './lib/components/ya-control/ya-control.directive';\r\nexport * from './lib/components/ya-geoobject/ya-geoobject.directive';\r\nexport * from './lib/components/ya-map/ya-map.component';\r\nexport * from './lib/components/ya-multiroute/ya-multiroute.directive';\r\nexport * from './lib/components/ya-object-manager/ya-object-manager.directive';\r\nexport * from './lib/components/ya-panorama/ya-panorama.directive';\r\nexport * from './lib/components/ya-placemark/ya-placemark.directive';\r\n\r\n// Services\r\nexport * from './lib/services/ya-api-loader/ya-api-loader.service';\r\nexport * from './lib/services/ya-geocoder/ya-geocoder.service';\r\n\r\n// Types\r\nexport * from './lib/types/ya-config';\r\nexport * from './lib/types/ya-event';\r\nexport * from './lib/types/ya-ready-event';\r\n\r\n// Tokens\r\nexport * from './lib/tokens/ya-config';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}