/**
 * THIS IS GENERATED CODE!
 * PLEASE DO NOT MODIFY - ALL YOUR WORK WOULD BE LOST!
 */
export declare const typescriptDeclarationFixConstant = 1;
import { UiEvent } from "./UiEvent";
import { TeamAppsEvent } from "../modules/util/TeamAppsEvent";
import { UiComponentConfig } from "./UiComponentConfig";
import { UiTemplateConfig } from "./UiTemplateConfig";
import { UiMapLocationConfig } from "./UiMapLocationConfig";
import { AbstractUiMapShapeConfig } from "./AbstractUiMapShapeConfig";
import { UiMapMarkerClientRecordConfig } from "./UiMapMarkerClientRecordConfig";
import { UiMapMarkerClusterConfig } from "./UiMapMarkerClusterConfig";
import { UiShapePropertiesConfig } from "./UiShapePropertiesConfig";
import { UiHeatMapDataConfig } from "./UiHeatMapDataConfig";
import { UiMapAreaConfig } from "./UiMapAreaConfig";
import { UiMapType } from "./UiMapType";
import { UiMapShapeType } from "./UiMapShapeType";
import { UiComponentCommandHandler } from "./UiComponentConfig";
export interface UiMapConfig extends UiComponentConfig {
    _type?: string;
    markerTemplates: {
        [name: string]: UiTemplateConfig;
    };
    accessToken?: string;
    mapType?: UiMapType;
    zoomLevel?: number;
    mapPosition?: UiMapLocationConfig;
    shapes?: {
        [name: string]: AbstractUiMapShapeConfig;
    };
    markers?: UiMapMarkerClientRecordConfig[];
    markerCluster?: UiMapMarkerClusterConfig;
}
export interface UiMapCommandHandler extends UiComponentCommandHandler {
    registerTemplate(id: string, template: UiTemplateConfig): void;
    addMarker(marker: UiMapMarkerClientRecordConfig): void;
    removeMarker(id: number): void;
    setMapMarkerCluster(cluster: UiMapMarkerClusterConfig): void;
    addShape(shapeId: string, shape: AbstractUiMapShapeConfig): void;
    updateShape(shapeId: string, shape: AbstractUiMapShapeConfig): void;
    removeShape(shapeId: string): void;
    startDrawingShape(shapeType: UiMapShapeType, shapeProperties: UiShapePropertiesConfig): void;
    stopDrawingShape(): void;
    setZoomLevel(zoom: number): void;
    setLocation(location: UiMapLocationConfig): void;
    setMapType(mapType: UiMapType): void;
    setHeatMap(data: UiHeatMapDataConfig): void;
    fitBounds(southWest: UiMapLocationConfig, northEast: UiMapLocationConfig): void;
}
export interface UiMapEventSource {
    onZoomLevelChanged: TeamAppsEvent<UiMap_ZoomLevelChangedEvent>;
    onLocationChanged: TeamAppsEvent<UiMap_LocationChangedEvent>;
    onMapClicked: TeamAppsEvent<UiMap_MapClickedEvent>;
    onMarkerClicked: TeamAppsEvent<UiMap_MarkerClickedEvent>;
    onShapeDrawn: TeamAppsEvent<UiMap_ShapeDrawnEvent>;
}
export interface UiMap_ZoomLevelChangedEvent extends UiEvent {
    zoomLevel: number;
}
export interface UiMap_LocationChangedEvent extends UiEvent {
    center: UiMapLocationConfig;
    displayedArea: UiMapAreaConfig;
}
export interface UiMap_MapClickedEvent extends UiEvent {
    location: UiMapLocationConfig;
}
export interface UiMap_MarkerClickedEvent extends UiEvent {
    markerId: number;
}
export interface UiMap_ShapeDrawnEvent extends UiEvent {
    shapeId: string;
    shape: AbstractUiMapShapeConfig;
}
