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

/**
 * 图标标绘样式配置
 */
export interface IconStyleConfig extends DrawingStyleConfig {
    iconUrl: string;
    iconScale?: number;
    iconRotation?: number;
    iconOpacity?: number;
    iconAnchor?: [number, number];
    iconOffset?: [number, number];
    iconSize?: [number, number];
    iconColor?: ColorLike;
    iconCrosOrigin?: string;
    iconImgSize?: [number, number];
    iconDisplacement?: [number, number];
}
/**
 * 图标标绘配置
 */
export interface IconDrawingConfig extends DrawingConfig {
    type: "icon";
    coordinates: Coordinate;
    style: IconStyleConfig;
}
/**
 * 图标标绘类
 * 专门用于在地图上绘制各种图标，支持PNG、JPG、SVG等格式
 */
export declare class IconDrawing extends BaseDrawing<IconDrawingConfig, IconStyleConfig> {
    private _iconCache;
    constructor(config: IconDrawingConfig);
    /**
     * 创建要素
     */
    protected createFeature(): void;
    /**
     * 创建样式
     */
    protected createStyle(): Style;
    /**
     * 更新要素几何
     */
    protected updateFeatureGeometry(): void;
    /**
     * 更新选中样式
     */
    protected updateSelectionStyle(): void;
    /**
     * 设置坐标
     */
    setCoordinates(coordinates: Coordinate): void;
    /**
     * 获取坐标
     */
    getCoordinates(): Coordinate;
    /**
     * 设置图标URL
     */
    setIconUrl(url: string): void;
    /**
     * 获取图标URL
     */
    getIconUrl(): string;
    /**
     * 设置图标缩放
     */
    setIconScale(scale: number): void;
    /**
     * 设置图标旋转
     */
    setIconRotation(rotation: number): void;
    /**
     * 设置图标透明度
     */
    setIconOpacity(opacity: number): void;
    /**
     * 设置图标锚点
     */
    setIconAnchor(anchor: [number, number]): void;
    /**
     * 设置图标偏移
     */
    setIconOffset(offset: [number, number]): void;
    /**
     * 设置图标大小
     */
    setIconSize(size: [number, number]): void;
    /**
     * 设置图标颜色（适用于SVG图标）
     */
    setIconColor(color: ColorLike): void;
    /**
     * 设置图标样式
     */
    setIconStyle(options: {
        url?: string;
        scale?: number;
        rotation?: number;
        opacity?: number;
        anchor?: [number, number];
        offset?: [number, number];
        size?: [number, number];
        color?: ColorLike;
    }): void;
    /**
     * 预加载图标
     */
    preloadIcon(): Promise<void>;
    /**
     * 获取图标尺寸
     */
    getIconDimensions(): Promise<{
        width: number;
        height: number;
    }>;
    /**
     * 检查图标是否已加载
     */
    isIconLoaded(): boolean;
    /**
     * 清除图标缓存
     */
    clearIconCache(): void;
    /**
     * 创建实例
     */
    protected createInstance(config: IconDrawingConfig): BaseDrawing<IconDrawingConfig, IconStyleConfig>;
    /**
     * 从JSON数据创建图标标绘
     */
    static fromJSON(data: any): IconDrawing;
    /**
     * 转换为JSON数据
     */
    toJSON(): any;
}
/**
 * 图标标绘工厂类
 */
export declare class IconDrawingFactory {
    static create(config: IconDrawingConfig): IconDrawing;
    static getType(): string;
    static getSupportedTypes(): string[];
    /**
     * 创建预设图标标绘
     */
    static createPreset(coordinates: Coordinate, iconType: "marker" | "pin" | "flag" | "star" | "heart" | "warning" | "info" | "success" | "danger" | "home" | "office" | "shop" | "hospital" | "school", options?: {
        name?: string;
        scale?: number;
        rotation?: number;
        opacity?: number;
        color?: string;
    }): IconDrawing;
    /**
     * 从URL创建图标标绘
     */
    static createFromUrl(coordinates: Coordinate, iconUrl: string, options?: {
        name?: string;
        scale?: number;
        rotation?: number;
        opacity?: number;
        anchor?: [number, number];
        offset?: [number, number];
        size?: [number, number];
        color?: string;
    }): IconDrawing;
    /**
     * 批量创建图标标绘
     */
    static createBatch(coordinatesList: Coordinate[], iconUrl: string, options?: {
        namePrefix?: string;
        scale?: number;
        rotation?: number;
        opacity?: number;
        anchor?: [number, number];
        offset?: [number, number];
        size?: [number, number];
        color?: string;
    }): IconDrawing[];
}
//# sourceMappingURL=IconDrawing.d.ts.map