import { Style } from 'ol/style';
import { Coordinate } from 'ol/coordinate';
import { BaseDrawing, DrawingConfig, DrawingStyleConfig } from './BaseDrawing';

/**
 * 多点标绘样式配置
 */
export interface MultiPointStyleConfig extends DrawingStyleConfig {
    color?: string;
    size?: number;
    opacity?: number;
    strokeColor?: string;
    strokeWidth?: number;
    pointStyle?: "circle" | "square" | "triangle" | "star" | "cross" | "x" | "icon" | "ripple" | "gif" | "diffusion";
    iconSrc?: string;
    iconScale?: number;
    iconAnchor?: [number, number];
    iconOffset?: [number, number];
    iconRotation?: number;
    rippleRadius?: number;
    rippleColor?: string;
    rippleOpacity?: number;
    rippleSpeed?: number;
    gifSrc?: string;
    gifScale?: number;
    gifAnchor?: [number, number];
    shapePoints?: number;
    shapeRadius?: number;
    shapeRadius2?: number;
    shapeAngle?: number;
    showPointIndex?: boolean;
    indexFontSize?: number;
    indexColor?: string;
    indexOffset?: [number, number];
    showConnectingLines?: boolean;
    connectingLineColor?: string;
    connectingLineWidth?: number;
    connectingLineDash?: number[];
    connectingLineOpacity?: number;
    enableClustering?: boolean;
    clusterDistance?: number;
    clusterMinSize?: number;
    clusterMaxSize?: number;
    clusterColor?: string;
    showCoordinates?: boolean;
    coordinateFormat?: "decimal" | "dms" | "utm";
    coordinatePrecision?: number;
}
/**
 * 多点标绘配置
 */
export interface MultiPointDrawingConfig extends DrawingConfig {
    type: "multipoint";
    coordinates: Coordinate[];
    style?: MultiPointStyleConfig;
}
/**
 * 多点标绘类
 * 支持多个点的绘制和管理
 */
export declare class MultiPointDrawing extends BaseDrawing<MultiPointDrawingConfig, MultiPointStyleConfig> {
    private _animationFrame?;
    private _rippleAnimations;
    constructor(config: MultiPointDrawingConfig);
    /**
     * 创建要素
     */
    protected createFeature(): void;
    /**
     * 创建多点几何
     */
    private createMultiPointGeometry;
    /**
     * 创建样式
     */
    protected createStyle(): Style | Style[];
    /**
     * 创建简化的点样式（用于性能优化）
     */
    private createSimplifiedPointStyles;
    /**
     * 创建点样式
     */
    private createPointStyles;
    /**
     * 创建单个点样式
     */
    private createSinglePointStyle;
    /**
     * 创建扩散样式
     */
    private createRippleStyles;
    /**
     * 创建连接线样式
     */
    private createConnectingLineStyles;
    /**
     * 创建索引标注样式
     */
    private createIndexStyles;
    /**
     * 创建坐标标注样式
     */
    private createCoordinateStyles;
    /**
     * 创建文字样式
     */
    private createTextStyle;
    /**
     * 更新要素几何
     */
    protected updateFeatureGeometry(): void;
    /**
     * 创建选择样式
     */
    protected createSelectionStyles(): Style[];
    /**
     * 获取多点中心
     */
    private getMultiPointCenter;
    /**
     * 格式化坐标显示
     */
    private formatCoordinate;
    /**
     * 转换为度分秒格式
     */
    private toDMS;
    /**
     * 十进制度转度分秒
     */
    private decimalToDMS;
    /**
     * 转换为UTM格式（简化版）
     */
    private toUTM;
    /**
     * 设置坐标
     */
    setCoordinates(coordinates: Coordinate[]): void;
    /**
     * 获取坐标
     */
    getCoordinates(): Coordinate[];
    /**
     * 获取点数量
     */
    getPointCount(): number;
    /**
     * 添加点
     */
    addPoint(coordinate: Coordinate): void;
    /**
     * 移除点
     */
    removePoint(index: number): boolean;
    /**
     * 更新点坐标
     */
    updatePoint(index: number, coordinate: Coordinate): boolean;
    /**
     * 获取边界框
     */
    getBounds(): [number, number, number, number] | null;
    /**
     * 计算总距离（连接线长度）
     */
    getTotalDistance(unit?: "m" | "km" | "mi" | "ft"): number;
    /**
     * 设置点样式
     */
    setPointStyle(options: {
        style?: "circle" | "square" | "triangle" | "star" | "cross" | "x" | "icon" | "ripple" | "gif";
        color?: string;
        size?: number;
        opacity?: number;
    }): void;
    /**
     * 设置连接线显示
     */
    setConnectingLinesVisible(visible: boolean, options?: {
        color?: string;
        width?: number;
        dash?: number[];
        opacity?: number;
    }): void;
    /**
     * 设置点索引显示
     */
    setPointIndexVisible(visible: boolean, options?: {
        fontSize?: number;
        color?: string;
        offset?: [number, number];
    }): void;
    /**
     * 设置坐标显示
     */
    setCoordinatesVisible(visible: boolean, options?: {
        format?: "decimal" | "dms" | "utm";
        precision?: number;
    }): void;
    /**
     * 创建实例
     */
    protected createInstance(config: MultiPointDrawingConfig): BaseDrawing<MultiPointDrawingConfig, MultiPointStyleConfig>;
    /**
     * 从JSON反序列化
     */
    static fromJSON(data: any): MultiPointDrawing;
    /**
     * 从GeoJSON创建MultiPointDrawing
     */
    static fromGeoJSON(geoJsonFeature: any): MultiPointDrawing;
    /**
     * 添加透明度到颜色
     */
    private addOpacityToColor;
}
/**
 * 多点标绘工厂
 */
export declare class MultiPointDrawingFactory {
    static create(config: MultiPointDrawingConfig): MultiPointDrawing;
    static getType(): string;
    static getSupportedTypes(): string[];
    /**
     * 从GeoJSON创建
     */
    static fromGeoJSON(geoJsonFeature: any): MultiPointDrawing;
    /**
     * 创建预设样式的多点
     */
    static createPreset(coordinates: Coordinate[], preset: "default" | "highlight" | "warning" | "success" | "danger", options?: {
        name?: string;
        text?: string;
        showIndex?: boolean;
        showConnectingLines?: boolean;
        showCoordinates?: boolean;
        pointStyle?: "circle" | "square" | "triangle" | "star" | "cross" | "x" | "icon" | "ripple" | "gif";
    }): MultiPointDrawing;
}
//# sourceMappingURL=MultiPointDrawing.d.ts.map