import { ColorLike } from 'ol/colorlike';

/**
 * 基础样式配置接口
 */
export interface IBaseStyleConfig {
    /** 是否可见 */
    visible?: boolean;
    /** 透明度 (0-1) */
    opacity?: number;
    /** Z-index */
    zIndex?: number;
}
/**
 * 填充样式配置
 */
export interface IFillConfig {
    /** 填充颜色 */
    color?: ColorLike;
}
/**
 * 描边样式配置
 */
export interface IStrokeConfig {
    /** 描边颜色 */
    color?: ColorLike;
    /** 线宽 */
    width?: number;
    /** 线型样式 */
    lineDash?: number[];
    /** 线型偏移 */
    lineDashOffset?: number;
    /** 线帽样式 */
    lineCap?: CanvasLineCap;
    /** 线连接样式 */
    lineJoin?: CanvasLineJoin;
    /** 斜接限制 */
    miterLimit?: number;
}
/**
 * 文本样式配置
 */
export interface ITextConfig {
    /** 文本内容 */
    text?: string;
    /** 文本来源的要素属性名（如 name、Shape_Area） */
    field?: string;
    /** 模板字符串，支持 {属性名} 占位符（如 "{name} 面积:{Shape_Area}"） */
    template?: string;
    /** 字体 */
    font?: string;
    /** 字体大小 */
    fontSize?: number;
    /** 字体族 */
    fontFamily?: string;
    /** 字体粗细 */
    fontWeight?: string;
    /** 文本填充 */
    fill?: IFillConfig;
    /** 文本描边 */
    stroke?: IStrokeConfig;
    /** 文本偏移 */
    offsetX?: number;
    /** 文本偏移 */
    offsetY?: number;
    /** 文本对齐 */
    textAlign?: CanvasTextAlign;
    /** 文本基线 */
    textBaseline?: CanvasTextBaseline;
    /** 文本旋转角度 */
    rotation?: number;
    /** 背景填充 */
    backgroundFill?: IFillConfig;
    /** 背景描边 */
    backgroundStroke?: IStrokeConfig;
    /** 背景内边距 */
    padding?: [number, number, number, number];
    /** 是否允许文本溢出 */
    overflow?: boolean;
}
/**
 * 图标样式配置
 */
export interface IIconConfig {
    /** 图标源 */
    src?: string;
    /** 图标锚点 */
    anchor?: [number, number];
    /** 锚点单位 */
    anchorXUnits?: "fraction" | "pixels";
    /** 锚点单位 */
    anchorYUnits?: "fraction" | "pixels";
    /** 图标颜色 */
    color?: ColorLike;
    /** 图标尺寸 */
    size?: [number, number];
    /** 图标缩放 */
    scale?: number;
    /** 图标旋转角度 */
    rotation?: number;
    /** 图标透明度 */
    opacity?: number;
    /** 图标偏移 */
    offset?: [number, number];
    /** 图标偏移原点 */
    offsetOrigin?: "bottom-left" | "bottom-right" | "top-left" | "top-right";
}
/**
 * 圆形样式配置
 */
export interface ICircleConfig {
    /** 半径 */
    radius?: number;
    /** 填充样式 */
    fill?: IFillConfig;
    /** 描边样式 */
    stroke?: IStrokeConfig;
}
/**
 * 正多边形样式配置
 */
export interface IRegularShapeConfig {
    /** 填充样式 */
    fill?: IFillConfig;
    /** 描边样式 */
    stroke?: IStrokeConfig;
    /** 顶点数 */
    points?: number;
    /** 半径 */
    radius?: number;
    /** 内半径 */
    radius2?: number;
    /** 角度 */
    angle?: number;
}
/**
 * 点样式配置
 */
export interface IPointStyleConfig extends IBaseStyleConfig {
    /** 圆形样式 */
    circle?: ICircleConfig;
    /** 图标样式 */
    icon?: IIconConfig;
    /** 正多边形样式 */
    regularShape?: IRegularShapeConfig;
    /** 文本样式 */
    text?: ITextConfig;
}
/**
 * 线样式配置
 */
export interface ILineStyleConfig extends IBaseStyleConfig {
    /** 描边样式 */
    stroke?: IStrokeConfig;
    /** 文本样式 */
    text?: ITextConfig;
}
/**
 * 面样式配置
 */
export interface IPolygonStyleConfig extends IBaseStyleConfig {
    /** 填充样式 */
    fill?: IFillConfig;
    /** 描边样式 */
    stroke?: IStrokeConfig;
    /** 文本样式 */
    text?: ITextConfig;
}
/**
 * 几何类型枚举
 */
export declare enum GeometryType {
    POINT = "Point",
    LINE_STRING = "LineString",
    POLYGON = "Polygon",
    MULTI_POINT = "MultiPoint",
    MULTI_LINE_STRING = "MultiLineString",
    MULTI_POLYGON = "MultiPolygon",
    GEOMETRY_COLLECTION = "GeometryCollection",
    CIRCLE = "Circle"
}
/**
 * 样式配置映射
 */
export interface IStyleConfigMap {
    [GeometryType.POINT]?: IPointStyleConfig;
    [GeometryType.MULTI_POINT]?: IPointStyleConfig;
    [GeometryType.LINE_STRING]?: ILineStyleConfig;
    [GeometryType.MULTI_LINE_STRING]?: ILineStyleConfig;
    [GeometryType.POLYGON]?: IPolygonStyleConfig;
    [GeometryType.MULTI_POLYGON]?: IPolygonStyleConfig;
    [GeometryType.CIRCLE]?: IPolygonStyleConfig;
    [GeometryType.GEOMETRY_COLLECTION]?: IPointStyleConfig | ILineStyleConfig | IPolygonStyleConfig;
}
/**
 * 样式管理器接口
 */
export interface IStyleManager {
    /**
     * 设置默认样式配置
     * @param styleConfig 样式配置映射
     */
    setDefaultStyles(styleConfig: IStyleConfigMap): void;
    /**
     * 获取默认样式配置
     * @param geometryType 几何类型
     */
    getDefaultStyle(geometryType: GeometryType): IPointStyleConfig | ILineStyleConfig | IPolygonStyleConfig | undefined;
    /**
     * 创建样式函数
     * @param styleConfig 样式配置
     */
    createStyleFunction(styleConfig?: IStyleConfigMap): (feature: any, resolution?: number) => any;
    /**
     * 根据几何类型和配置创建样式
     * @param geometryType 几何类型
     * @param config 样式配置
     */
    createStyle(geometryType: GeometryType, config?: IPointStyleConfig | ILineStyleConfig | IPolygonStyleConfig): any;
    getDefaultVectorTileStyle(): (feature: any, resolution?: number) => any;
}
//# sourceMappingURL=interfaces.d.ts.map