import { Ref } from 'vue';
import { Map as OlMap } from 'ol';
import { LayerManager } from './LayerManager';
import { LayerConfig } from '../types';

/**
 * 图层分组接口
 */
export interface LayerGroup {
    id: string;
    name: string;
    layers: LayerConfig[];
}
/**
 * 树节点数据接口
 */
export interface TreeNodeData {
    id: string;
    label: string;
    type: "group" | "layer";
    layerType?: string;
    layerData?: LayerConfig;
    children?: TreeNodeData[];
}
/**
 * 图层树管理器
 * 负责管理图层树的数据结构、拖拽操作和图层定位功能
 */
export declare class LayerTreeManager {
    private map;
    private layerManager;
    readonly layerGroups: Ref<LayerGroup[]>;
    readonly defaultExpandedKeys: Ref<string[]>;
    private updateTrigger;
    /**
     * 通知更新（强制重新计算computed属性）
     */
    notifyUpdate(): void;
    readonly defaultCheckedKeys: import('vue').ComputedRef<string[]>;
    readonly treeData: import('vue').ComputedRef<TreeNodeData[]>;
    /**
     * 构建图层节点（支持递归处理children）
     * @param layer 图层配置
     * @returns 树节点数据
     */
    private buildLayerNode;
    /**
     * 初始化管理器
     * @param mapInstance OpenLayers地图实例
     * @param layerManagerInstance 图层管理器实例
     */
    initialize(mapInstance: OlMap, layerManagerInstance: LayerManager): void;
    /**
     * 设置图层分组数据
     * @param groups 图层分组数组
     */
    setLayerGroups(groups: LayerGroup[]): void;
    /**
     * 设置默认展开的节点
     * @param keys 节点ID数组
     */
    setDefaultExpandedKeys(keys: string[]): void;
    /**
     * 处理图层双击事件 - 定位到图层
     * @param data 树节点数据
     */
    handleLayerDoubleClick(data: TreeNodeData): void;
    /**
     * 处理分组双击事件 - 聚合定位到分组范围
     * @param data 分组树节点数据
     */
    private handleGroupDoubleClick;
    /**
     * 获取缓动函数
     * @param easing 缓动类型
     * @returns 缓动函数
     */
    private getEasingFunction;
    /**
     * 允许拖拽的条件
     * @param draggingNode 拖拽节点
     * @returns 是否允许拖拽
     */
    allowDrag(draggingNode: any): boolean;
    /**
     * 允许放置的条件
     * @param draggingNode 拖拽节点
     * @param dropNode 目标节点
     * @param type 放置类型
     * @returns 是否允许放置
     */
    allowDrop(draggingNode: any, dropNode: any, type: string): boolean;
    /**
     * 查找节点所属的父分组
     * @param nodeId 节点ID
     * @returns 父分组或null
     */
    findParentGroup(nodeId: string): LayerGroup | null;
    /**
     * 在 layerGroups 中递归查找指定 ID 的图层配置
     */
    private findLayerConfigById;
    /**
     * 查找节点所属的父“容器”节点（分组或带children的图层）
     * @param nodeId 节点ID
     * @returns 父容器的树节点，或null
     */
    private findParentContainerNode;
    /**
     * 节点拖拽完成事件
     * @param draggingNode 拖拽节点
     * @param dropNode 目标节点
     * @param dropType 放置类型
     * @param ev 事件对象
     */
    onNodeDrop(draggingNode: any, dropNode: any, dropType: string, _ev: any): void;
    /**
     * 获取图层图标类名
     * @param layerType 图层类型
     * @returns 图标类名
     */
    getLayerIcon(layerType: string): string;
}
export declare const layerTreeManager: LayerTreeManager;
//# sourceMappingURL=LayerTreeManager.d.ts.map