import { Scene, Mapbox, GaodeMap, GaodeMapV1, Map as L7Map, Scale, Zoom } from '@antv/l7';
import EventEmitter from '@antv/event-emitter';
import { Tooltip } from '../../component/tooltip';
import { Legend } from '../../component/legend';
import type { MapOptions, MapInstance, AMapInstance, MapboxInstance, ZoomControlOptions, LayerMenuControlOptions, ScaleControlOptions, LegendOptions, IPlotLayer, UpdateMapConfig, Bounds, MapStatusOptions } from '../../types';
import { LayerGroup } from '../layer/layer-group';
export declare abstract class Map<O extends MapOptions> extends EventEmitter {
    /**
     * 默认的 options 配置项
     */
    static DefaultOptions: Partial<MapOptions>;
    /**
     * 是否初始化成功
     */
    inited: boolean;
    /**
     * 是否场景加载完成
     */
    sceneLoaded: boolean;
    /**
     * 是否所有图层加载完成
     */
    layersLoaded: boolean;
    /**
     * 是否场景与所有图层加载完成
     */
    loaded: boolean;
    /**
     * map 的 schema 配置
     */
    options: O;
    /**
     * map 上一次的 schema 配置
     */
    protected lastOptions: O;
    /**
     * map 绘制的 dom
     */
    container: HTMLDivElement;
    /**
     * scene 实例
     */
    scene: Scene;
    /**
     * 图层组
     */
    layerGroup: LayerGroup;
    /**
     * 主题配置
     */
    protected theme: Record<string, any>;
    /**
     * zoom 放缩器 Control
     */
    zoomControl: Zoom | undefined;
    /**
     * scale 比例尺 Control
     */
    scaleControl: Scale | undefined;
    /**
     * layerMenu 图层列表 Control
     */
    /**
     * legend 图例 Control
     */
    legendControl: Legend | undefined;
    /**
     * tooltip 悬浮提示
     */
    tooltip: Tooltip | undefined;
    constructor(options: O);
    /**
     * 获取默认配置
     */
    protected getDefaultOptions(): Partial<MapOptions>;
    /**
     * 创建 DOM 容器
     */
    protected createContainer(container: string | HTMLDivElement): HTMLDivElement;
    /**
     * 注册主题
     */
    protected createTheme(): any;
    /**
     * 创建 map 容器
     */
    protected createMap(): L7Map | GaodeMap | GaodeMapV1 | Mapbox;
    /**
     * 创建 scene 实例
     */
    protected createScene(): Scene;
    /**
     * 渲染
     */
    abstract render(): void;
    /**
     * 注册静态资源
     */
    protected registerResources(): void;
    /**
     * 更新: 更新配置且重新渲染
     */
    update(options: Partial<O>): void;
    /**
     * 更新: 更新配置
     */
    updateOption(options: Partial<O>): void;
    /**
     * 更新: 地图底图配置
     */
    updateMap(updateMapConfig: UpdateMapConfig): void;
    /**
     * 修改容器大小
     */
    changeSize(width: number, height: number): void;
    /**
     * 事件代理: 绑定事件
     */
    on(name: string, callback: (...args: any[]) => void, once?: boolean): this;
    /**
     * 事件代理: 绑定一次事件
     */
    once(name: string, callback: (...args: any[]) => void): this;
    /**
     * 事件代理: 解绑事件
     */
    off(name: string, callback: (...args: any[]) => void): this;
    /**
     * 事件代理: 事件处理
     */
    private proxyEventHander;
    /**
     * 获取 scene 实例
     */
    getScene(): Scene;
    /**
     * 获取 map 实例
     */
    getMap(): MapboxInstance | AMapInstance | MapInstance | unknown;
    /**
     * 添加图层
     */
    addLayer(layer: IPlotLayer): void;
    /**
     * 获取所有图层
     *  @deprecate
     */
    getLayes(): IPlotLayer[];
    /**
     * 获取所有图层
     */
    getLayers(): IPlotLayer[];
    /**
     * 根据图层名称获取图层
     */
    getLayerByName(name: string): IPlotLayer | undefined;
    /**
     * 移除图层
     */
    removeLayer(layer: IPlotLayer): boolean;
    /**
     * 移除内置所有的图层
     */
    removeAllLayer(): void;
    /**
     * 地图放大一级
     */
    zoomIn(): void;
    /**
     * 地图缩小一级
     */
    zoomOut(): void;
    /**
     * 设置地图倾角
     */
    setPitch(pitch: number): void;
    /**
     * 设置地图缩放范围
     */
    fitBounds(bound: Bounds): void;
    /**
     * 设置地图状态
     * 可用来关闭地图的一些交互操作
     */
    setMapStatus(status: MapStatusOptions): void;
    /**
     * 设置场景的背景色
     */
    setBgColor(color: string): void;
    /**
     * 初始化组件
     */
    protected initComponents(): void;
    /**
     * 更新化组件
     */
    protected updateComponents(): void;
    /**
     * 初始化控件
     */
    protected initControls(): void;
    /**
     * 更新控件
     */
    protected updateControls(): void;
    /**
     * 添加 zoom 控件
     */
    addZoomControl(options: ZoomControlOptions): void;
    /**
     * 更新 zoom 控件
     */
    updateZoomControl(options: ZoomControlOptions): void;
    /**
     * 移除 zoom 控件
     */
    removeZoomControl(): void;
    /**
     * 添加 scale 控件
     */
    addScaleControl(options: ScaleControlOptions): void;
    /**
     * 更新 scale 控件
     */
    updateScaleControl(options: ScaleControlOptions): void;
    /**
     * 移除 scale 控件
     */
    removeScaleControl(): void;
    /**
     * 添加 layerMenu 控件
     */
    addLayerMenuControl(options: LayerMenuControlOptions): void;
    /**
     * 更新 layerMenu 控件
     */
    updateLayerMenuControl(options: LayerMenuControlOptions): void;
    /**
     * 移除 layerMenu 控件
     */
    removeLayerMenuControl(): void;
    /**
     * 获取 legend 配置项
     * 由各图各自实现，不同的图 legend 可能不同
     */
    getLegendOptions(): LegendOptions;
    /**
     * 添加 legend 控件
     */
    addLegendControl(options: LegendOptions): void;
    /**
     * 更新 legend 控件
     */
    updateLegendControl(options: LegendOptions): void;
    /**
     * 移除 legend 控件
     */
    removeLegendControl(): void;
    /**
     * 初始化 tooltip
     */
    protected initTooltip(): void;
    /**
     * 导出地图图片
     */
    exportPng(type?: 'png' | 'jpg'): string;
    /**
     * 销毁
     */
    destroy(): void;
}
