import '@amap/amap-jsapi-types';
declare global {
    namespace AMap {
        type Anchor = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
        class LabelsLayer_2 extends LabelsLayer {
            constructor(opts?: LabelsLayerOptions);
            /**
             * 获取标注层是否支持避让
             * @name getCollision
             * @returns {any}
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            getCollision(): any;
            /**
             * 设置标注层是否支持避让
             * @name setCollision
             * @param {boolean} collision
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            setCollision(collision?: boolean): void;
            /**
             * 获取标注层是否允许其它层标注避让
             * @name getAllowCollision
             * @returns {boolean}
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            getAllowCollision(): any;
            /**
             * 设置标注层是否允许其它层标注避让
             * @name setAllowCollision
             * @param {boolean} allowCollision
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            setAllowCollision(allowCollision?: boolean): void;
            /**
             * 获取标注层透明度
             * @name getOpacity
             * @returns {number}
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            getOpacity(): any;
            /**
             * 设置标注层透明度
             * @name setOpacity
             * @param {number} opacity
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            setOpacity(opacity: number): void;
            /**
             * 获取标注层显示层级范围
             * @name getZooms
             * @returns {any}
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            getZooms(): any;
            /**
             * 设置标注层显示层级范围
             * @name setZooms
             * @param {[number]} zooms
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            setZooms(zooms: [number, number]): void;
            /**
             * 获取标注层叠加顺序
             * @name getzIndex
             * @returns {number}
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            getzIndex(): any;
            /**
             * 设置标注层叠加顺序
             * @name setzIndex
             * @param {number} zIndex
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            setzIndex(zIndex: number): void;
            /**
             * 将 labelMarker 添加到标注层上
             * @name add
             * @param {LabelMarker[]} labelMarkers
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            add(labelMarkers: LabelMarker[]): void;
            /**
             * 将 labelMarker 从标注层上移除
             * @name remove
             * @param {LabelMarker | LabelMarker[]} labelMarkers
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            remove(labelMarkers: LabelMarker | LabelMarker[]): void;
            /**
             * 清空标注层上的标注
             * @name clear
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            clear(): void;
            /**
             * 显示标注层
             * @name show
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            show(): void;
            /**
             * 隐藏标注层
             * @name hide
             * @memberof LabelsLayer
             * @instance
             * @function
             */
            hide(): void;
            getAllOverlays(): LabelMarker[];
        }
        interface VectorLayerOptions {
            visible?: boolean;
        }
        class VectorLayer {
            constructor(opts?: VectorLayerOptions);
            add: (vectorOverlay: any | any[]) => void;
            remove: (vectorOverlay: any | any[]) => void;
        }
        interface ScaleOptions extends Pick<ControlConfig, 'position' | 'offset'> {
        }
        class Scale extends Control {
            constructor(opts?: ScaleOptions);
        }
        interface ToolBarOptions extends Pick<ControlConfig, 'position' | 'offset'> {
        }
        class ToolBar extends Control {
            constructor(opts?: ToolBarOptions);
        }
        interface ControlBarOptions extends Pick<ControlConfig, 'position' | 'offset' | 'showControlButton'> {
        }
        class ControlBar extends Control {
            constructor(opts?: ControlBarOptions);
        }
        interface MapTypeOptions extends Pick<ControlConfig, 'position' | 'offset' | 'showControlButton'> {
            defaultType?: 0 | 1;
            showTraffic?: boolean;
            showRoad?: boolean;
        }
        class MapType extends Control {
            constructor(opts?: MapTypeOptions);
        }
        interface GeoJSONOptions {
            geoJSON: GeoJSON.GeoJSON;
            getMarker?: (geoJson: GeoJSON.GeoJSON, lnglat: AMap.Vector2[]) => void;
            getPolyline?: (geoJson: GeoJSON.GeoJSON, lnglat: AMap.Vector2[]) => void;
            getPolygon?: (geoJson: GeoJSON.GeoJSON, lnglat: AMap.Vector2[]) => void;
        }
        class GeoJSON {
            constructor(opts?: GeoJSONOptions);
            importData(geoJson: GeoJSON.GeoJSON): void;
            toGeoJSON(): GeoJSON.GeoJSON;
        }
    }
}
