import { LayerEvent } from "../event";
import { Overlay } from "../overlay";
/**
 * 图层的基类，其子类是实例化后需添加到三维场景中方可展示各类三维数据
 */
declare abstract class Layer {
    protected _id: string;
    protected _delegate: any;
    protected _viewer: any;
    protected _state: any;
    protected _show: boolean;
    protected _isGround: boolean;
    protected _cache: Map<string, Overlay>;
    protected _attr: {};
    protected _layerEvent: LayerEvent;
    constructor(options: any);
    /**
     * 唯一标识
     */
    get id(): string;
    /**
     * 项目类型
     */
    get type(): any;
    /**
     *
     */
    get delegate(): any;
    /**
     * 是否显示
     */
    set show(show: boolean);
    /**
     * 业务属性
     */
    get show(): boolean;
    get layerEvent(): LayerEvent;
    set attr(attr: {});
    get attr(): {};
    /**
     * 图层状态
     */
    get state(): any;
    /**
     * The hook for added
     */
    protected _addedHook(): void;
    /**
     * The hook for removed
     */
    protected _removedHook(): void;
    /**
     * The layer added callback function
     * Subclasses need to be overridden
     * @param viewer
     */
    protected _onAdd(viewer: any): void;
    /**
     * The layer added callback function
     * Subclasses need to be overridden
     */
    protected _onRemove(): void;
    /**
     * The layer add overlay
     * @param overlay
     */
    protected _addOverlay(overlay: Overlay): void;
    /**
     * The layer remove overlay
     * @param overlay
     */
    protected _removeOverlay(overlay: Overlay): void;
    /**
     * 添加覆盖物
     * @param overlay 覆盖物
     * @returns {Layer}
     */
    addOverlay(overlay: Overlay): Layer;
    /**
     * 添加覆盖物数组
     * @param overlays 覆盖物数组
     * @returns {Layer}
     */
    addOverlays(overlays: Overlay[]): Layer;
    /**
     * 删除覆盖物
     * @param overlay 覆盖物
     * @returns {Layer}
     */
    removeOverlay(overlay: Overlay): Layer;
    /**
     * 根据 Id 获取覆盖物
     * @param overlayId
     * @returns 覆盖物
     */
    getOverlay(overlayId: string): Overlay | undefined;
    /**
     * 根据业务 Id 获取覆盖物
     * @param id 覆盖物业务唯一标识
     */
    getOverlayById(id: string): Overlay | undefined;
    /**
     * 根据覆盖物属性获取覆盖物
     * @param attrName 属性名称
     * @param attrVal 属性值
     * @returns 覆盖物数组
     */
    getOverlaysByAttr(attrName: string, attrVal: any): Overlay[];
    /**
     * 遍历覆盖物
     * @param method 回调函数，参数为每一个覆盖物
     * @param context 上下文
     * @returns {Layer}
     */
    eachOverlay(method: (item: Overlay) => void, context: any): Layer;
    /**
     * 获取所有覆盖物
     */
    getOverlays(): Overlay[];
    /**
     * 清空图层
     */
    abstract clear(): void;
    /**
     * 删除图层
     */
    remove(): void;
    /**
     * 添加图层到场景
     * @param viewer
     * @returns {Layer}
     */
    addTo(viewer: any): Layer;
    /**
     * 设置样式, 样式将会应用到图层的每一个覆盖物上
     * @param style
     */
    abstract setStyle(style: any): any;
    /**
     * 事件订阅
     * @param type 订阅类型
     * @param callback 订阅回调
     * @param context 上下文
     * @returns {Layer}
     */
    on(type: any, callback: any, context: any): Layer;
    /**
     * 取消事件订阅
     * @param type 订阅类型
     * @param callback 订阅回调
     * @param context 上下文
     * @returns {Layer}
     */
    off(type: any, callback: any, context: any): Layer;
    /**
     * 触发事件
     * @param type 订阅类型
     * @param params 参数
     * @returns {Layer}
     */
    fire(type: any, params: any): Layer;
    /**
     * 注册图层类型
     * @param type - 图层类型
     */
    static registerType(type: string): void;
    /**
     * 获取图层类型
     * @param type
     * @returns 图层类型
     */
    static getLayerType(type: string): string;
}
export default Layer;
