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

/**
 * 多线段标绘样式配置
 */
export interface MultiLineStringStyleConfig extends DrawingStyleConfig {
    strokeColor?: string;
    strokeWidth?: number;
    strokeOpacity?: number;
    strokeDash?: number[];
    strokeLineCap?: "butt" | "round" | "square";
    strokeLineJoin?: "bevel" | "round" | "miter";
    strokeMiterLimit?: number;
    showArrows?: boolean;
    arrowSize?: number;
    arrowColor?: string;
    arrowSpacing?: number;
    arrowStyle?: "triangle" | "circle" | "square";
    showStartPoint?: boolean;
    showEndPoint?: boolean;
    startPointStyle?: "circle" | "square" | "triangle" | "star" | "icon";
    endPointStyle?: "circle" | "square" | "triangle" | "star" | "icon";
    pointSize?: number;
    pointColor?: string;
    startPointColor?: string;
    endPointColor?: string;
    showVertices?: boolean;
    vertexSize?: number;
    vertexColor?: string;
    vertexStyle?: "circle" | "square";
    showLineIndex?: boolean;
    indexFontSize?: number;
    indexColor?: string;
    indexOffset?: [number, number];
    showLength?: boolean;
    lengthUnit?: "m" | "km" | "mi" | "ft";
    lengthPrecision?: number;
    lengthPosition?: "start" | "middle" | "end";
    enableGradient?: boolean;
    gradientColors?: string[];
    gradientDirection?: "horizontal" | "vertical" | "diagonal";
    enableAnimation?: boolean;
    animationType?: "flow" | "dash" | "pulse";
    animationSpeed?: number;
    animationDirection?: "forward" | "backward" | "alternate";
    groupColors?: string[];
    groupWidths?: number[];
    groupDashes?: number[][];
}
/**
 * 多线段标绘配置
 */
export interface MultiLineStringDrawingConfig extends DrawingConfig {
    type: "multilinestring";
    coordinates: Coordinate[][];
    style?: MultiLineStringStyleConfig;
}
/**
 * 多线段标绘类
 * 支持多条线段的绘制和管理
 */
export declare class MultiLineStringDrawing extends BaseDrawing<MultiLineStringDrawingConfig, MultiLineStringStyleConfig> {
    private _animationFrame?;
    private _animationStartTime?;
    constructor(config: MultiLineStringDrawingConfig);
    /**
     * 创建要素
     */
    protected createFeature(): void;
    /**
     * 创建多线段几何
     */
    private createMultiLineStringGeometry;
    /**
     * 创建样式
     */
    protected createStyle(): Style | Style[];
    /**
     * 创建线条样式
     */
    private createLineStyles;
    /**
     * 创建渐变样式
     */
    private createGradientStyles;
    /**
     * 创建箭头样式
     */
    private createArrowStyles;
    /**
     * 创建单个箭头样式
     */
    private createArrowStyle;
    /**
     * 创建端点样式
     */
    private createEndPointStyles;
    /**
     * 创建点样式
     */
    private createPointStyle;
    /**
     * 创建顶点样式
     */
    private createVertexStyles;
    /**
     * 创建索引标注样式
     */
    private createIndexStyles;
    /**
     * 创建长度标注样式
     */
    private createLengthStyles;
    /**
     * 创建文字样式
     */
    private createTextStyle;
    /**
     * 更新要素几何
     */
    protected updateFeatureGeometry(): void;
    /**
     * 创建选择样式
     */
    protected createSelectionStyles(): Style[];
    /**
     * 获取线条颜色（支持分组）
     */
    private getLineColor;
    /**
     * 获取线条宽度（支持分组）
     */
    private getLineWidth;
    /**
     * 获取线条虚线样式（支持分组）
     */
    private getLineDash;
    /**
     * 计算线段长度
     */
    private calculateLineLength;
    /**
     * 获取线段中心点
     */
    private getLineCenter;
    /**
     * 获取多线段中心点
     */
    private getMultiLineStringCenter;
    /**
     * 根据比例获取线上的点
     */
    private getPointAtRatio;
    /**
     * 根据比例获取线上的角度
     */
    private getAngleAtRatio;
    /**
     * 颜色插值
     */
    private interpolateColor;
    /**
     * 格式化长度显示
     */
    private formatLength;
    /**
     * 设置坐标
     */
    setCoordinates(coordinates: Coordinate[][]): void;
    /**
     * 获取坐标
     */
    getCoordinates(): Coordinate[][];
    /**
     * 获取线段数量
     */
    getLineCount(): number;
    /**
     * 添加线段
     */
    addLine(lineCoordinates: Coordinate[]): void;
    /**
     * 移除线段
     */
    removeLine(index: number): boolean;
    /**
     * 获取总长度
     */
    getTotalLength(unit?: "m" | "km" | "mi" | "ft"): number;
    /**
     * 获取边界框
     */
    getBounds(): [number, number, number, number] | null;
    /**
     * 设置线条样式
     */
    setStrokeStyle(options: {
        color?: string;
        width?: number;
        dash?: number[];
        opacity?: number;
        lineCap?: "butt" | "round" | "square";
        lineJoin?: "bevel" | "round" | "miter";
    }): void;
    /**
     * 设置箭头显示
     */
    setArrowsVisible(visible: boolean, options?: {
        size?: number;
        color?: string;
        spacing?: number;
        style?: "triangle" | "circle" | "square";
    }): void;
    /**
     * 设置端点显示
     */
    setEndPointsVisible(options: {
        showStart?: boolean;
        showEnd?: boolean;
        startStyle?: "circle" | "square" | "triangle" | "star";
        endStyle?: "circle" | "square" | "triangle" | "star";
        size?: number;
        startColor?: string;
        endColor?: string;
    }): void;
    /**
     * 设置线段索引显示
     */
    setLineIndexVisible(visible: boolean, options?: {
        fontSize?: number;
        color?: string;
        offset?: [number, number];
    }): void;
    /**
     * 设置长度显示
     */
    setLengthVisible(visible: boolean, options?: {
        unit?: "m" | "km" | "mi" | "ft";
        precision?: number;
        position?: "start" | "middle" | "end";
    }): void;
    /**
     * 设置分组样式
     */
    setGroupStyles(options: {
        colors?: string[];
        widths?: number[];
        dashes?: number[][];
    }): void;
    /**
     * 创建实例
     */
    protected createInstance(config: MultiLineStringDrawingConfig): BaseDrawing<MultiLineStringDrawingConfig, MultiLineStringStyleConfig>;
    /**
     * 从JSON反序列化
     */
    static fromJSON(data: any): MultiLineStringDrawing;
    /**
     * 从GeoJSON创建MultiLineStringDrawing
     */
    static fromGeoJSON(geoJsonFeature: any): MultiLineStringDrawing;
    /**
     * 添加透明度到颜色
     */
    private addOpacityToColor;
}
/**
 * 多线段标绘工厂
 */
export declare class MultiLineStringDrawingFactory {
    static create(config: MultiLineStringDrawingConfig): MultiLineStringDrawing;
    static getType(): string;
    static getSupportedTypes(): string[];
    /**
     * 从GeoJSON创建
     */
    static fromGeoJSON(geoJsonFeature: any): MultiLineStringDrawing;
    /**
     * 创建预设样式的多线段
     */
    static createPreset(coordinates: Coordinate[][], preset: "default" | "highlight" | "warning" | "success" | "danger", options?: {
        name?: string;
        text?: string;
        showArrows?: boolean;
        showEndPoints?: boolean;
        showLength?: boolean;
        showIndex?: boolean;
    }): MultiLineStringDrawing;
}
//# sourceMappingURL=MultiLineStringDrawing.d.ts.map