import { Graph, Link, Node } from "ngraph.graph";
import path from "ngraph.path";
import { IPosition, DoorInfo } from "./definitions/adventureland";
import { Grids, Grid, LinkData, NodeData } from "./definitions/pathfinder";
import { GData2, MapName } from "./definitions/adventureland-data";
export declare class Pathfinder {
    protected static G: GData2;
    protected static FIRST_MAP: MapName;
    protected static TRANSPORT_COST: number;
    protected static TOWN_COST: number;
    protected static grids: Grids;
    protected static graph: Graph<NodeData, LinkData>;
    protected static pathWithoutTown: path.PathFinder<NodeData>;
    protected static pathWithTown: path.PathFinder<NodeData>;
    protected static doorDistance(a: {
        x: number;
        y: number;
        map?: MapName;
    }, b: DoorInfo): number;
    protected static addLinkToGraph(from: Node<NodeData>, to: Node<NodeData>, data?: LinkData): Link<LinkData>;
    protected static addNodeToGraph(map: MapName, x: number, y: number): Node<NodeData>;
    static canStand(location: IPosition): boolean;
    static canWalkPath(from: IPosition, to: IPosition): boolean;
    static computePathCost(path: LinkData[]): number;
    static getGrid(map: MapName): Grid;
    static findClosestNode(map: MapName, x: number, y: number): Node<NodeData>;
    static findClosestSpawn(map: MapName, x: number, y: number): {
        map: MapName;
        x: number;
        y: number;
        distance: number;
    };
    static getPath(from: NodeData, to: NodeData, avoidTownWarps?: boolean): LinkData[];
    static getSafeWalkTo(from: IPosition, to: IPosition): IPosition;
    static prepare(startMap?: MapName): Promise<void>;
}
