/**
 * 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 { UiHeatMapDataConfig } from "./UiHeatMapDataConfig";
import { UiShapePropertiesConfig } from "./UiShapePropertiesConfig";
import { UiMapAreaConfig } from "./UiMapAreaConfig";
import { UiMapShapeType } from "./UiMapShapeType";
import { UiComponentCommandHandler } from "./UiComponentConfig";
export interface UiMap2Config extends UiComponentConfig {
    _type?: string;
    markerTemplates: {
        [name: string]: UiTemplateConfig;
    };
    baseApiUrl?: string;
    accessToken?: string;
    styleUrl?: string;
    displayAttributionControl?: boolean;
    zoomLevel?: number;
    mapPosition?: UiMapLocationConfig;
    shapes?: {
        [name: string]: AbstractUiMapShapeConfig;
    };
    markers?: UiMapMarkerClientRecordConfig[];
    markerCluster?: UiMapMarkerClusterConfig;
}
export interface UiMap2CommandHandler extends UiComponentCommandHandler {
    registerTemplate(id: string, template: UiTemplateConfig): void;
    addMarker(marker: UiMapMarkerClientRecordConfig): void;
    removeMarker(id: number): void;
    clearMarkers(): void;
    setMapMarkerCluster(cluster: UiMapMarkerClusterConfig): void;
    setHeatMap(data: UiHeatMapDataConfig): void;
    addShape(shapeId: string, shape: AbstractUiMapShapeConfig): void;
    updateShape(shapeId: string, shape: AbstractUiMapShapeConfig): void;
    removeShape(shapeId: string): void;
    clearShapes(): void;
    startDrawingShape(shapeType: UiMapShapeType, shapeProperties: UiShapePropertiesConfig): void;
    stopDrawingShape(): void;
    setZoomLevel(zoom: number): void;
    setLocation(location: UiMapLocationConfig, animationDurationMillis: number, targetZoomLevel: number): void;
    setStyleUrl(styleUrl: string): void;
    fitBounds(southWest: UiMapLocationConfig, northEast: UiMapLocationConfig): void;
}
export interface UiMap2EventSource {
    onZoomLevelChanged: TeamAppsEvent<UiMap2_ZoomLevelChangedEvent>;
    onLocationChanged: TeamAppsEvent<UiMap2_LocationChangedEvent>;
    onMapClicked: TeamAppsEvent<UiMap2_MapClickedEvent>;
    onMarkerClicked: TeamAppsEvent<UiMap2_MarkerClickedEvent>;
    onShapeDrawn: TeamAppsEvent<UiMap2_ShapeDrawnEvent>;
}
export interface UiMap2_ZoomLevelChangedEvent extends UiEvent {
    zoomLevel: number;
}
export interface UiMap2_LocationChangedEvent extends UiEvent {
    center: UiMapLocationConfig;
    displayedArea: UiMapAreaConfig;
}
export interface UiMap2_MapClickedEvent extends UiEvent {
    location: UiMapLocationConfig;
}
export interface UiMap2_MarkerClickedEvent extends UiEvent {
    markerId: number;
}
export interface UiMap2_ShapeDrawnEvent extends UiEvent {
    shapeId: string;
    shape: AbstractUiMapShapeConfig;
}
