import { default as OlMap } from 'ol/Map';
import { IShowOpenDriveFromFileParams } from 'packages/components/src/types';
export default class SumoRenderer {
    private map;
    private readonly trafficLightImage;
    /** 路口点与信号灯点 */
    private nodePointSource;
    /** 路口面 */
    private nodePolygonSource;
    /** 路口内连接段车道 */
    private connectorLaneSource;
    /** 主路车道 */
    private polygonLaneSource;
    /** 车道导向箭头 */
    private laneArrowSource;
    /** 车道停止线 */
    private stopLineSource;
    /** 路口面图层（受 showJunctionPolygon 控制） */
    private nodePolygonLayer;
    /** 路口点与信号灯点图层（受 showJunctionPoint 控制） */
    private nodePointLayer;
    /** 箭头图标 canvas 缓存（按箭头类型） */
    private readonly arrowCanvasCache;
    /** 路口点样式缓存（按 scale 量化后缓存，避免每帧重复创建 Style/Canvas） */
    private readonly nodeStyleCache;
    /** 信号灯点样式缓存（按 scale 量化后缓存，避免每帧重复创建 Style/Canvas） */
    private readonly trafficLightStyleCache;
    /** 车道停止线样式缓存（按 color 缓存，避免重复创建 Style） */
    private readonly stopLineStyleCache;
    constructor(map: OlMap);
    private setupLayers;
    private getNodeStyle;
    /**
     * 显示 SUMO 路网数据
     * @param params 显示 SUMO 路网数据的参数
     * @param params.server 解析 SUMO 文件的后端服务地址
     * @param params.file 待解析的 SUMO 文件 URL
     * @param params.options 可选，显示选项配置
     * @param params.options.showJunctionPolygon 是否显示路口多边形
     * @param params.options.showJunctionPoint 可选，是否显示路口点
     * @param params.options.showJunctionLane 是否显示路口车道
     * @param params.options.showRoadName 是否显示道路名称
     * @param params.options.needZoom 可选，是否将地图缩放到显示所有车道，默认 true
     * @param params.selectedCallback 可选，要素选中时的回调函数
     * @returns 显示结果，包含状态码和消息
     */
    showSumoFromFile(params: IShowOpenDriveFromFileParams): Promise<{
        status: number;
        message: string;
    }>;
    /**
     * 显示 SUMO 节点
     * @param nodes
     */
    private showNodes;
    /**
     * 显示 SUMO 边（车道、连接段、转向箭头）
     * @param edges
     * @returns
     */
    private showEdges;
    private showStopLines;
    /**
     * 计算当前缩放级别下的箭头图标 scale：
     * zoom<=18 时为 0.035，zoom>=21 时为 0.6，中间线性插值
     */
    private getArrowScale;
    private getNodeScale;
    /** 获取（并按箭头类型缓存）箭头图标 canvas */
    private getArrowCanvas;
    /**
     * 清空 SUMO 渲染结果
     * 清空路口点、路口面、连接段车道、车道面图层的所有要素
     * 但不清除图层本身，也不清除地图上其他图层的要素
     */
    clearSumo(): void;
}
