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

/**
 * 多多边形标绘样式配置
 */
export interface MultiPolygonStyleConfig extends DrawingStyleConfig {
    fillColor?: string;
    strokeColor?: string;
    strokeWidth?: number;
    strokeDash?: number[];
    strokeOpacity?: number;
    fillOpacity?: number;
    showVertices?: boolean;
    vertexSize?: number;
    vertexColor?: string;
    showArea?: boolean;
    areaUnit?: "m²" | "km²" | "ha" | "acre" | "ft²";
    areaPrecision?: number;
    showPerimeter?: boolean;
    perimeterUnit?: "m" | "km" | "mi" | "ft";
    perimeterPrecision?: number;
    showPolygonIndex?: boolean;
    indexFontSize?: number;
    indexColor?: string;
}
/**
 * 多多边形标绘配置
 */
export interface MultiPolygonDrawingConfig extends DrawingConfig {
    type: "multipolygon";
    coordinates: Coordinate[][][];
    style?: MultiPolygonStyleConfig;
}
/**
 * 多多边形标绘类
 * 支持多个多边形的绘制和管理
 */
export declare class MultiPolygonDrawing extends BaseDrawing<MultiPolygonDrawingConfig, MultiPolygonStyleConfig> {
    constructor(config: MultiPolygonDrawingConfig);
    /**
     * 创建要素
     */
    protected createFeature(): void;
    /**
     * 创建多多边形几何
     */
    private createMultiPolygonGeometry;
    /**
     * 创建样式
     */
    protected createStyle(): Style | Style[];
    /**
     * 创建主多边形样式
     */
    private createMultiPolygonStyle;
    /**
     * 创建顶点样式
     */
    private createVertexStyles;
    /**
     * 创建面积标注样式
     */
    private createAreaStyles;
    /**
     * 创建周长标注样式
     */
    private createPerimeterStyles;
    /**
     * 创建索引标注样式
     */
    private createIndexStyles;
    /**
     * 创建文字样式
     */
    private createTextStyle;
    /**
     * 更新要素几何
     */
    protected updateFeatureGeometry(): void;
    /**
     * 创建选择样式
     */
    protected createSelectionStyles(): Style[];
    /**
     * 创建编辑控制点样式
     */
    private createEditHandleStyles;
    /**
     * 获取多边形中心点
     */
    private getPolygonCenter;
    /**
     * 获取多多边形中心点
     */
    private getMultiPolygonCenter;
    /**
     * 计算多边形面积
     */
    private calculatePolygonArea;
    /**
     * 计算多边形周长
     */
    private calculatePolygonPerimeter;
    /**
     * 格式化面积显示
     */
    private formatArea;
    /**
     * 格式化周长显示
     */
    private formatPerimeter;
    /**
     * 设置坐标
     */
    setCoordinates(coordinates: Coordinate[][][]): void;
    /**
     * 获取坐标
     */
    getCoordinates(): Coordinate[][][];
    /**
     * 获取多边形数量
     */
    getPolygonCount(): number;
    /**
     * 添加多边形
     */
    addPolygon(polygonCoordinates: Coordinate[][]): void;
    /**
     * 移除多边形
     */
    removePolygon(index: number): boolean;
    /**
     * 获取总面积
     */
    getTotalArea(unit?: "m²" | "km²" | "ha" | "acre" | "ft²"): number;
    /**
     * 获取总周长
     */
    getTotalPerimeter(unit?: "m" | "km" | "mi" | "ft"): number;
    /**
     * 设置填充样式
     */
    setFillStyle(options: {
        color?: string;
        opacity?: number;
    }): void;
    /**
     * 设置边框样式
     */
    setStrokeStyle(options: {
        color?: string;
        width?: number;
        dash?: number[];
        opacity?: number;
    }): void;
    /**
     * 设置多边形索引显示
     */
    setPolygonIndexVisible(visible: boolean, options?: {
        fontSize?: number;
        color?: string;
    }): void;
    /**
     * 创建实例
     */
    protected createInstance(config: MultiPolygonDrawingConfig): BaseDrawing<MultiPolygonDrawingConfig, MultiPolygonStyleConfig>;
    /**
     * 从JSON反序列化
     */
    static fromJSON(data: any): MultiPolygonDrawing;
    /**
     * 从GeoJSON创建MultiPolygonDrawing
     */
    static fromGeoJSON(geoJsonFeature: any): MultiPolygonDrawing;
    /**
     * 添加透明度到颜色
     */
    private addOpacityToColor;
}
/**
 * 多多边形标绘工厂
 */
export declare class MultiPolygonDrawingFactory {
    static create(config: MultiPolygonDrawingConfig): MultiPolygonDrawing;
    static getType(): string;
    static getSupportedTypes(): string[];
    /**
     * 从GeoJSON创建
     */
    static fromGeoJSON(geoJsonFeature: any): MultiPolygonDrawing;
    /**
     * 创建预设样式的多多边形
     */
    static createPreset(coordinates: Coordinate[][][], preset: "default" | "highlight" | "warning" | "success" | "danger", options?: {
        name?: string;
        text?: string;
        showArea?: boolean;
        showPerimeter?: boolean;
        showIndex?: boolean;
    }): MultiPolygonDrawing;
}
//# sourceMappingURL=MultiPolygonDrawing.d.ts.map