import { Layer } from 'ol/layer';
import { Source } from 'ol/source';
import { LayerConfig, LayerFilter, FilterLogic, FilterOperator } from '../../types';
import { Map as OLMap } from 'ol';

/**
 * 基础图层类，定义所有图层类型的通用属性和方法
 */
export declare abstract class BaseLayer {
    protected config: LayerConfig;
    protected layer: Layer<Source> | null;
    protected map: OLMap | null;
    /** 图层过滤器集合 */
    protected filters: Map<string, LayerFilter>;
    constructor(config: LayerConfig);
    /**
     * 获取过滤组合逻辑，默认 'AND'
     */
    protected getFilterLogic(): FilterLogic;
    /**
     * 根据过滤组合逻辑计算布尔结果
     * @param results 单个过滤条件的判定结果数组
     */
    protected combineByLogic(results: boolean[]): boolean;
    /**
     * 处理图层配置，包括透明度转换等通用逻辑
     */
    protected processConfig(): void;
    /**
     * 注册自定义投影
     * @returns 注册的投影代码，如果没有注册则返回 undefined
     */
    protected registerCustomProjection(): string | undefined;
    /**
     * 创建图层的抽象方法，由子类实现
     * 支持同步和异步两种方式
     */
    abstract createLayer(): Layer<Source> | Promise<Layer<Source>>;
    /**
     * 获取图层实例（同步方法，用于向后兼容）
     */
    getLayer(): Layer<Source>;
    /**
     * 异步获取图层实例
     */
    getLayerAsync(): Promise<Layer<Source>>;
    /**
     * 应用通用属性到图层
     */
    protected applyCommonProperties(): void;
    /**
     * 设置地图实例
     */
    setMap(map: OLMap): void;
    /**
     * 获取图层配置
     */
    getConfig(): LayerConfig;
    /**
     * 更新图层配置
     */
    updateConfig(newConfig: Partial<LayerConfig>): void;
    /**
     * 设置图层透明度
     */
    setOpacity(opacity: number): void;
    /**
     * 设置图层可见性
     */
    setVisible(visible: boolean): void;
    /**
     * 设置图层层级
     */
    setZIndex(zIndex: number): void;
    /**
     * 根据配置或加载顺序设置图层层级
     * @param baseIndex 基础索引值，默认为0
     * @param increment 递增值，默认为1
     */
    setZIndexByOrder(baseIndex?: number, increment?: number): void;
    /**
     * 获取当前图层的层级
     */
    getZIndex(): number | undefined;
    /**
     * 应用图层样式和滤镜
     */
    protected applyLayerStyles(retryCount?: number): void;
    /**
     * 更新图层样式
     */
    updateLayerStyles(style?: LayerConfig["style"], customCss?: string): void;
    /**
     * 清除图层样式
     */
    clearLayerStyles(): void;
    /**
     * 销毁图层
     */
    destroy(): void;
    /**
     * 添加过滤器
     * @param filter 过滤器配置
     */
    addFilter(filter: LayerFilter): void;
    /**
     * 移除过滤器
     * @param filterId 过滤器ID
     */
    removeFilter(filterId: string): void;
    /**
     * 更新过滤器
     * @param filterId 过滤器ID
     * @param updates 更新的配置
     */
    updateFilter(filterId: string, updates: Partial<LayerFilter>): void;
    /**
     * 获取过滤器
     * @param filterId 过滤器ID
     */
    getFilter(filterId: string): LayerFilter | undefined;
    /**
     * 获取所有过滤器
     */
    getAllFilters(): LayerFilter[];
    /**
     * 获取启用的过滤器
     */
    getEnabledFilters(): LayerFilter[];
    /**
     * 清除所有过滤器
     */
    clearAllFilters(): void;
    /**
     * 启用/禁用过滤器
     * @param filterId 过滤器ID
     * @param enabled 是否启用
     */
    toggleFilter(filterId: string, enabled: boolean): void;
    /**
     * 应用过滤器（抽象方法，由子类实现具体逻辑）
     * 不同类型的图层有不同的过滤实现方式
     */
    protected abstract applyFilters(): void;
    /**
     * 便捷方法：添加属性过滤器
     * @param id 过滤器ID
     * @param property 属性名
     * @param value 过滤值
     * @param operator 操作符
     * @param name 过滤器名称
     */
    addAttributeFilter(id: string, property: string, value: any, operator?: FilterOperator, name?: string): void;
    /**
     * 便捷方法：添加CQL过滤器（主要用于WMS图层）
     * @param id 过滤器ID
     * @param expression CQL表达式
     * @param name 过滤器名称
     */
    addCQLFilter(id: string, expression: string, name?: string): void;
    /**
     * 便捷方法：添加自定义过滤器
     * @param id 过滤器ID
     * @param filterFunction 过滤函数
     * @param name 过滤器名称
     * @param params 过滤器参数
     */
    addCustomFilter(id: string, filterFunction: (feature: any) => boolean, name?: string): void;
}
//# sourceMappingURL=BaseLayer.d.ts.map