import Source from '@antv/l7-source';
import EventEmitter from '@antv/event-emitter';
import { ICoreLayer, ILayer, LayerBlend, LayerBaseConfig, Scene, SourceOptions, ShapeAttr, ColorAttr, SizeAttr, ScaleAttr, AnimateAttr, StateAttribute, TextureAttr, ISource } from '../types';
/**
 * 核心图层的基础配置
 */
export interface CoreLayerOptions extends Partial<LayerBaseConfig> {
    /**
     * 图层 ID
     */
    id?: string;
    /**
     * 数据
     */
    source: SourceOptions | Source;
    /**
     * 图形形状
     */
    shape?: ShapeAttr<string>;
    /**
     * 图形颜色
     */
    color?: ColorAttr;
    /**
     * 图形大小
     */
    size?: SizeAttr;
    /**
     * 比例尺
     */
    scale?: ScaleAttr;
    /**
     * 纹理贴图
     */
    texture?: TextureAttr;
    /**
     * 图层样式
     */
    style?: Record<string, any>;
    /**
     * animation 配置
     */
    animate?: AnimateAttr;
    /**
     * 交互反馈
     */
    state?: StateAttribute;
}
export declare abstract class CoreLayer<O extends CoreLayerOptions> extends EventEmitter implements ICoreLayer {
    /**
     * 默认的 options 配置项
     */
    static DefaultOptions: Partial<CoreLayerOptions>;
    /**
     * 是否是复合图层
     */
    readonly isComposite = false;
    /**
     * 图层名称
     */
    readonly name: string;
    /**
     * 图层 ID
     */
    readonly id: string;
    /**
     * 图层类型
     */
    abstract readonly type: string;
    /**
     * 图层 schema 配置
     */
    options: O;
    /**
     * 图层上一次的 schema 配置
     */
    lastOptions: O;
    /**
     * Scene 实例
     */
    protected scene: Scene | undefined;
    /**
     * 图层实例
     */
    readonly layer: ILayer;
    /**
     * 图层是否初始化成功
     */
    get inited(): boolean;
    /**
     * 图层的 source 实例
     */
    get source(): ISource;
    constructor(options: O);
    /**
     * 获取默认配置
     */
    getDefaultOptions(): Partial<CoreLayerOptions>;
    /**
     * 获取创建图层配置项
     */
    protected getLayerConfig(): Partial<LayerBaseConfig>;
    /**
     * 创建图层
     */
    protected abstract createLayer(): ILayer;
    /**
     * 适配属性配置
     */
    protected adaptorAttrOptions(options: O): CoreLayerOptions;
    /**
     * 映射图层属性
     */
    protected adaptorLayerAttr(): void;
    /**
     * 设置图层数据
     * 支持 source 配置项与 source 实例更新
     */
    setSource(source: SourceOptions | ISource): void;
    /**
     * 添加到场景
     */
    addTo(scene: Scene): void;
    /**
     * 从场景移除
     */
    remove(): void;
    /**
     * 更新
     */
    update(options: Partial<O>): void;
    /**
     * 更新: 更新配置
     */
    updateOption(options: Partial<O>): void;
    updateConfig(options: Partial<CoreLayerOptions>): void;
    render(): void;
    /**
     * 更新数据
     * 支持 source 配置项
     */
    changeData(source: SourceOptions): void;
    /**
     * 设置图层 zIndex
     */
    setIndex(zIndex: number): void;
    /**
     * 设置图层 blend
     */
    setBlend(blend: LayerBlend): void;
    /**
     * 设置图层 minZoom
     */
    setMinZoom(minZoom: number): void;
    /**
     * 设置图层 maxZoom
     */
    setMaxZoom(maxZoom: number): void;
    /**
     * 显示图层
     */
    show(): void;
    /**
     * 隐藏图层
     */
    hide(): void;
    /**
     * 切换图层显隐状态
     */
    toggleVisible(): void;
    /**
     * 图层是否可见
     */
    isVisible(): boolean;
    /**
     * 图层框选数据
     */
    boxSelect(bounds: [number, number, number, number], callback: (...args: any[]) => void): void;
    /**
     * 定位到当前图层数据范围
     */
    fitBounds(fitBoundsOptions?: unknown): void;
    /**
     * 获取图例数据
     */
    getLegendItems(type: string): Record<string, any>[];
    /**
     * 事件代理: 绑定事件
     */
    on(name: string, callback: (...args: any[]) => void): this;
    /**
     * 事件代理: 绑定一次事件
     */
    once(name: string, callback: (...args: any[]) => void): this;
    /**
     * 事件代理: 解绑事件
     */
    off(name: string, callback: (...args: any[]) => void): this;
    /**
     * 摧毁
     */
    destroy(): void;
}
