import { default as DefaultManage } from './DefaultManage';
import { Group, GroupInfo, Topology, Node, TopologyInfo } from '../Library';
import { TopologyInfoForGml, ShortestPathInfo, ShortestPathByMultipleStartPoints, ShortestPathByMultipleEndPoints, TopologyNodeInfo, TopologyInnerNodeInfo, Position, TopologyPassableInfo } from '../Interface';
import { default as Viewport } from '../Viewport';
import { Dijkstras } from '../Math/dijkstra';
import { DijkstraWorker } from '../Math/dijkstra/DijkstraWorker';
import { ObjectsCache } from '../Cache';
declare class TopologyManage extends DefaultManage {
    readonly viewport: Viewport;
    readonly cache: ObjectsCache;
    dijkstra: Dijkstras;
    dijkstraWorker: DijkstraWorker;
    constructor(viewport: Viewport, cache: ObjectsCache);
    createFromGml(topologyInfoForGml: TopologyInfoForGml): Promise<Topology>;
    create(topologyInfo: TopologyInfo): Topology;
    /**
     * 设置路径 passable
     */
    setPassable(topology: Topology, info: TopologyPassableInfo[]): void;
    resetNodes(topology: Topology, nodes: TopologyNodeInfo[]): Topology;
    createToGroup(groupInfo: GroupInfo, topologyInfos: TopologyInfo[]): Group;
    addForGroup(group: Group | null, topologyInfos: TopologyInfo[]): Group | null;
    /**
     * 计算路径
     * @param topology
     * @param info
     * @returns
     */
    protected _getPath(topology: Topology, info: Pick<ShortestPathInfo, 'start' | 'end'>): Node[] | null;
    /**
     * @todo getPath 重复代码优化
     */
    protected _getPathAsync(topology: Topology, info: Pick<ShortestPathInfo, 'start' | 'end'>): Promise<Node[] | null>;
    protected _generateNodesInfo(nodes: Node[]): TopologyInnerNodeInfo[];
    /**
     * 根据两点获取最短路径
     * @param topology
     * @param info
     * @returns
     */
    getShortestPath(topology: Topology, info: ShortestPathInfo): Topology | null;
    /**
     * @todo getShortestPathAsync 重复代码优化
     */
    getShortestPathAsync(topology: Topology, info: ShortestPathInfo): Promise<Topology | null>;
    /**
     * 多起点或多终点最短路径
     * @param topology
     * @param info
     * @param points
     * @param point
     * @param pointsType
     * @returns
     */
    protected _getShortestPathByMultiplePoints(topology: Topology, info: ShortestPathByMultipleStartPoints | ShortestPathByMultipleEndPoints, points: Position[], point: Position, pointsType: 'start' | 'end'): Topology | null;
    /**
     * @todo getShortestPathByMultiplePointsAsync 重复代码优化
     */
    protected _getShortestPathByMultiplePointsAsync(topology: Topology, info: ShortestPathByMultipleStartPoints | ShortestPathByMultipleEndPoints, points: Position[], point: Position, pointsType: 'start' | 'end'): Promise<Topology | null>;
    getShortestPathByMultipleStartPoints(topology: Topology, info: ShortestPathByMultipleStartPoints): Topology | null;
    getShortestPathByMultipleEndPoints(topology: Topology, info: ShortestPathByMultipleEndPoints): Topology | null;
    getShortestPathByMultipleStartPointsAsync(topology: Topology, info: ShortestPathByMultipleStartPoints): Promise<Topology | null>;
    getShortestPathByMultipleEndPointsAsync(topology: Topology, info: ShortestPathByMultipleEndPoints): Promise<Topology | null>;
    private setDijkstraGraph;
    private generateLineTopologyInfoNodeGraphs;
    dispose(): void;
}
export default TopologyManage;
