import Graph from "node-dijkstra";
export interface RoadData {
    floor: string;
    lines: Array<{
        id: string;
        to: string;
        from: string;
        color: string;
        opacity: number;
        visible: boolean;
        userData: Record<string, string>;
        direction: "double" | "single" | "no";
    }>;
    points: Array<{
        id: string;
        cds: [number, number];
        name: string;
        type: "normal" | "graph" | "straightLadder" | "staircase" | "escalator" | "facility";
        floor: string;
        nodeId: string;
        visible: boolean;
        targetId: string;
        userData: Record<string, string>;
        escalatorType: "" | "single" | "double" | "jd";
        escalatorDirection: "" | "up" | "down" | "exit";
    }>;
}
export interface Start {
    floor: string;
    nodeId?: string;
    coord?: [number, number];
}
type FacilityEnd = {
    floor?: string;
    facility?: string;
};
export type End = Start & FacilityEnd;
export type RouteType = "" | "escalator" | "straightLadder";
export type PathData = {
    floor: string;
    points: [number, number][];
    endType: string;
    destId: string;
    distance: number;
}[];
export declare class RoadNetwork {
    private lift_priority;
    roadInfo: RoadData[];
    pointMap: Map<string, {
        id: string;
        cds: [number, number];
        name: string;
        type: "normal" | "graph" | "straightLadder" | "staircase" | "escalator" | "facility";
        floor: string;
        nodeId: string;
        visible: boolean;
        targetId: string;
        userData: Record<string, string>;
        escalatorType: "" | "single" | "double" | "jd";
        escalatorDirection: "" | "up" | "down" | "exit";
    }>;
    nodeMap: Map<string, string>;
    facilityMap: Map<string, {
        id: string;
        cds: [number, number];
        name: string;
        type: "normal" | "graph" | "straightLadder" | "staircase" | "escalator" | "facility";
        floor: string;
        nodeId: string;
        visible: boolean;
        targetId: string;
        userData: Record<string, string>;
        escalatorType: "" | "single" | "double" | "jd";
        escalatorDirection: "" | "up" | "down" | "exit";
    }[]>;
    straightLadderMap: Map<string, {
        id: string;
        cds: [number, number];
        name: string;
        type: "normal" | "graph" | "straightLadder" | "staircase" | "escalator" | "facility";
        floor: string;
        nodeId: string;
        visible: boolean;
        targetId: string;
        userData: Record<string, string>;
        escalatorType: "" | "single" | "double" | "jd";
        escalatorDirection: "" | "up" | "down" | "exit";
    }[]>;
    escalatorMap: Map<string, {
        start: RoadData["points"][0];
        end: RoadData["points"][0];
    }>;
    staircaseMap: Map<string, {
        id: string;
        cds: [number, number];
        name: string;
        type: "normal" | "graph" | "straightLadder" | "staircase" | "escalator" | "facility";
        floor: string;
        nodeId: string;
        visible: boolean;
        targetId: string;
        userData: Record<string, string>;
        escalatorType: "" | "single" | "double" | "jd";
        escalatorDirection: "" | "up" | "down" | "exit";
    }[]>;
    lineMap: Map<string, Map<string, number>>;
    baseRoute: Graph;
    escalatorRoute: Graph;
    straightLadderRoute: Graph;
    constructor(lift_priority?: number);
    initRoute(roadInfo: RoadData[]): void;
    addLineItem(start: string, end: string, distance: number, lineMap?: Map<string, Map<string, number>>): void;
    /**
     * 把设施添加的路网图中
     * @param escalatorPriority 扶梯权重
     * @param straightLadderPriority  直梯权重
     * @param staircasePriority 步行梯权重
     * @param lineMap 路网
     */
    addFacilityToLineMap(escalatorPriority: number, straightLadderPriority: number, staircasePriority: number, lineMap: Map<string, Map<string, number>>): void;
    initBaseRoute(): void;
    initEscalatorRoute(): void;
    initStraightLadderRoute(): void;
    checkStart(start: Start): boolean;
    checkEnd(end: End): boolean;
    transformStart(start: Start): {
        floor: string;
        id: string;
    } | null;
    transformEnd(end: End): {
        floor: string;
        id: string;
    } | {
        facility: string;
    } | null;
    /**
     *
     * @param start 起点
     * @param end 终点
     * @param type '' 最短路径 escalator 扶梯优先 straightLadder 直梯优先
     * @returns
     */
    getPath(start: Start, end: End, type?: RouteType): "start-error" | "end-error" | "no-start" | "no-end" | PathData | null | undefined;
    private getRoutePath;
    private getBasePath;
    private getEscalatorPath;
    private getStraightLadderPath;
    clear(): void;
}
export {};
