import { Map } from '../map';
import { TextLayer } from '../../layers/text-layer';
import { PlotType, PlotOptions, LabelOptions, Source, SourceOptions, Scene, PlotLayerOptions } from '../../types';
import { LayerGroup } from '../layer/layer-group';
export declare abstract class Plot<O extends PlotOptions> extends Map<O> {
    /**
     * 默认的 options 配置项
     */
    static DefaultOptions: Partial<PlotOptions>;
    /**
     * 地图图表类型
     */
    static PlotType: typeof PlotType;
    /**
     * 图表类型名称
     */
    abstract readonly type: PlotType | string;
    /**
     * 数据
     */
    source: Source;
    constructor(container: O);
    constructor(container: string | HTMLDivElement, options: O);
    /**
     * 初始化数据
     */
    protected initSource(): void;
    /**
     * 初始化图层事件
     */
    protected initLayersEvent(): void;
    /**
     * 获取默认配置
     */
    protected getDefaultOptions(): Partial<PlotOptions>;
    /**
     * 创建 source 实例
     */
    protected createSource(): Source;
    /**
     * 创建图层
     */
    protected abstract createLayers(source: Source): LayerGroup;
    /**
     * 更新图层
     */
    protected abstract updateLayers(options: Partial<O>): void;
    /**
     * 创建数据标签图层
     */
    protected createLabelLayer(source: Source, label: LabelOptions, plotLayerConfig?: PlotLayerOptions): TextLayer;
    /**
     * 更新数据标签图层
     */
    protected updateLabelLayer(source: Source, label?: false | LabelOptions, plotLayerConfig?: PlotLayerOptions, labelLayer?: TextLayer): void;
    /**
     * 渲染
     */
    render(): void;
    /**
     * scene 加载成功回调
     */
    protected onSceneLoaded(): void;
    /**
     * 图层加载成功回调
     */
    protected onLayersLoaded(): void;
    /**
     * 挂载到容器
     * 用于高级图表 L7Plot 挂载单个图表示例
     */
    attachToScene(scene: Scene, theme?: Record<string, any>): void;
    /**
     * 取消挂载到容器上的 scene
     * 用于高级图表 L7Plot 挂载单个图表示例
     */
    unattachFromScene(): void;
    /**
     * 添加到容器
     * 用于 L7 Scene 与图表混合使用场景
     */
    addToScene(scene: Scene): void;
    /**
     * 从容器上移除
     * 用于 L7 Scene 与图表混合使用场景
     */
    removeFromScene(): void;
    /**
     * 更新: 更新配置且重新渲染
     */
    update(options: Partial<O>): void;
    /**
     * 更新: 更新数据
     */
    changeData(data: any, cfg?: Omit<SourceOptions, 'data'>): void;
}
