import { Style } from 'ol/style';
import { Feature } from 'ol';
import { Geometry } from 'ol/geom';
import { IStyleManager, IStyleConfigMap, IPointStyleConfig, ILineStyleConfig, IPolygonStyleConfig, GeometryType } from './interfaces';

/**
 * 样式管理器类
 * 负责管理样式配置和创建样式函数
 */
export declare class StyleManager implements IStyleManager {
    private static instance;
    private defaultStyles;
    /**
     * 获取单例实例
     */
    static getInstance(): StyleManager;
    /**
     * 私有构造函数，初始化默认样式
     */
    private constructor();
    /**
     * 初始化默认样式配置
     */
    private initDefaultStyles;
    /**
     * 设置默认样式配置
     * @param styleConfig 样式配置映射
     */
    setDefaultStyles(styleConfig: IStyleConfigMap): void;
    /**
     * 获取默认样式配置
     * @param geometryType 几何类型
     */
    getDefaultStyle(geometryType: GeometryType): IPointStyleConfig | ILineStyleConfig | IPolygonStyleConfig | undefined;
    /**
     * 合并样式配置
     * @param defaultConfig 默认配置
     * @param customConfig 自定义配置
     */
    private mergeStyleConfig;
    /**
     * 创建样式函数
     * @param styleConfig 样式配置映射
     */
    createStyleFunction(styleConfig?: IStyleConfigMap): (feature: Feature<Geometry>, resolution?: number) => Style | Style[];
    /**
     * 根据几何类型和配置创建样式
     * @param geometryType 几何类型
     * @param config 样式配置
     */
    createStyle(geometryType: GeometryType, config?: IPointStyleConfig | ILineStyleConfig | IPolygonStyleConfig): Style;
    /**
     * 创建基于属性的样式函数
     * @param propertyName 属性名称
     * @param styleMapping 属性值到样式配置的映射
     * @param defaultStyleConfig 默认样式配置
     */
    createPropertyBasedStyleFunction(propertyName: string, styleMapping: {
        [propertyValue: string]: IStyleConfigMap;
    }, defaultStyleConfig?: IStyleConfigMap): (feature: Feature<Geometry>, resolution?: number) => Style | Style[];
    /**
     * 创建聚类样式函数
     * @param clusterStyleConfig 聚类样式配置
     * @param singleFeatureStyleConfig 单个要素样式配置
     */
    createClusterStyleFunction(clusterStyleConfig?: IPointStyleConfig, singleFeatureStyleConfig?: IStyleConfigMap): (feature: Feature<Geometry>, resolution?: number) => Style | Style[];
    /**
     * 重置为默认样式配置
     */
    resetToDefaultStyles(): void;
    /**
     * 获取所有默认样式配置
     */
    getAllDefaultStyles(): IStyleConfigMap;
    getDefaultVectorTileStyle(): (feature: any, resolution?: number) => any;
}
export declare const styleManager: StyleManager;
//# sourceMappingURL=StyleManager.d.ts.map