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

/**
 * 军事符号类型
 */
export type MilitarySymbolType = "infantry" | "armor" | "artillery" | "aviation" | "navy" | "airforce" | "base" | "airport" | "port" | "radar" | "command" | "supply" | "attack" | "defend" | "retreat" | "advance" | "patrol" | "recon" | "hill" | "valley" | "river" | "bridge" | "road" | "border" | "enemy" | "friendly" | "neutral" | "unknown";
/**
 * 军事标绘样式配置
 */
export interface MilitaryStyleConfig extends DrawingStyleConfig {
    symbolType: MilitarySymbolType;
    symbolSize?: number;
    symbolColor?: string;
    affiliation?: "friendly" | "hostile" | "neutral" | "unknown";
    status?: "present" | "planned" | "suspected";
    echelon?: "team" | "squad" | "platoon" | "company" | "battalion" | "regiment" | "brigade" | "division";
    showEchelon?: boolean;
    showAffiliation?: boolean;
    unitDesignation?: string;
    showDesignation?: boolean;
    tacticalNumber?: string;
    showTacticalNumber?: boolean;
    direction?: number;
    showDirection?: boolean;
    customSymbolUrl?: string;
}
/**
 * 军事标绘配置
 */
export interface MilitaryDrawingConfig extends DrawingConfig {
    type: "military";
    coordinates: Coordinate | Coordinate[];
    geometryType?: "point" | "line" | "polygon";
    style: MilitaryStyleConfig;
}
/**
 * 军事标绘类
 * 支持各种军事符号、战术标识、单位标记等
 */
export declare class MilitaryDrawing extends BaseDrawing<MilitaryDrawingConfig, MilitaryStyleConfig> {
    private _symbolCanvas;
    constructor(config: MilitaryDrawingConfig);
    /**
     * 创建符号画布
     */
    private createSymbolCanvas;
    /**
     * 绘制军事符号
     */
    private drawSymbol;
    /**
     * 绘制主符号
     */
    private drawMainSymbol;
    /**
     * 绘制隶属关系框架
     */
    private drawAffiliationFrame;
    /**
     * 绘制等级指示器
     */
    private drawEchelonIndicator;
    /**
     * 获取等级指示器数量
     */
    private getEchelonIndicators;
    /**
     * 绘制单位代号
     */
    private drawDesignation;
    /**
     * 绘制战术编号
     */
    private drawTacticalNumber;
    /**
     * 绘制方向指示器
     */
    private drawDirectionIndicator;
    /**
     * 获取隶属关系颜色
     */
    private getAffiliationColor;
    /**
     * 创建要素
     */
    protected createFeature(): void;
    /**
     * 创建样式
     */
    protected createStyle(): Style | Style[];
    /**
     * 创建点样式
     */
    private createPointStyle;
    /**
     * 创建几何样式
     */
    private createGeometryStyle;
    /**
     * 创建中心符号样式
     */
    private createCenterSymbolStyle;
    /**
     * 创建文字样式
     */
    private createTextStyle;
    /**
     * 更新要素几何
     */
    protected updateFeatureGeometry(): void;
    /**
     * 更新选中状态的样式
     */
    protected updateSelectionStyle(): void;
    /**
     * 设置符号类型
     */
    setSymbolType(type: MilitarySymbolType): void;
    /**
     * 设置隶属关系
     */
    setAffiliation(affiliation: "friendly" | "hostile" | "neutral" | "unknown"): void;
    /**
     * 设置等级
     */
    setEchelon(echelon: "team" | "squad" | "platoon" | "company" | "battalion" | "regiment" | "brigade" | "division"): void;
    /**
     * 设置方向
     */
    setDirection(direction: number): void;
    /**
     * 设置单位代号
     */
    setUnitDesignation(designation: string): void;
    /**
     * 设置战术编号
     */
    setTacticalNumber(number: string): void;
    /**
     * 创建实例
     */
    protected createInstance(config: MilitaryDrawingConfig): BaseDrawing<MilitaryDrawingConfig, MilitaryStyleConfig>;
    /**
     * 从JSON反序列化
     */
    static fromJSON(data: any): MilitaryDrawing;
    /**
     * 添加透明度到颜色
     */
    private addOpacityToColor;
}
/**
 * 军事标绘工厂
 */
export declare class MilitaryDrawingFactory {
    static create(config: MilitaryDrawingConfig): MilitaryDrawing;
    static getType(): string;
    static getSupportedTypes(): string[];
    /**
     * 创建预设的军事符号
     */
    static createPreset(coordinates: Coordinate | Coordinate[], symbolType: MilitarySymbolType, preset: "friendly-unit" | "hostile-unit" | "neutral-facility" | "tactical-line", options?: {
        name?: string;
        text?: string;
        echelon?: "team" | "squad" | "platoon" | "company" | "battalion" | "regiment" | "brigade" | "division";
        designation?: string;
        tacticalNumber?: string;
        direction?: number;
    }): MilitaryDrawing;
}
//# sourceMappingURL=MilitaryDrawing.d.ts.map