import { Navigation } from "./navigation";
import { PathData2, PathDirection, RoadData2, Timer, TweenUtil, EventDispatcher } from "../../utils";
import { Tween } from "@tweenjs/tween.js";
import { DebouncedFuncLeading } from "lodash";
export interface PositionNavigationConfig {
    offsetDistance: number;
    offsetToResetTime: number;
    directionEmitThreshold: number;
    simulationSpeed: number;
    destinationDistanceThreshold: number;
}
export interface NavigationProcessInfo {
    distance: number;
    curRouteDistance: number;
    nextDirDistance: number;
    dir: PathDirection;
    angle: number;
    nextAngle: number;
    pos: [number, number];
    routeIndex: number;
    crossName: string;
    offset: boolean;
    reset: boolean;
    imageUrl: string | null;
    nextDir: PathDirection;
    offsetDistance: number;
}
interface PositionNavigationEvent {
    "navigation-info": {
        info: NavigationProcessInfo;
    };
}
export declare class PositionNavigation extends EventDispatcher<PositionNavigationEvent> {
    navigation: Navigation;
    offset: boolean;
    reset: boolean;
    position: [number, number];
    routeIndex: number;
    pointIndex: number;
    paths: PathData2;
    options: PositionNavigationConfig;
    timer: Timer;
    resetTimer: number | null;
    tweenUtil: TweenUtil;
    simulationTween?: Tween<any>;
    throttleUpdatePosition?: DebouncedFuncLeading<(...args: any[]) => void>;
    roadData: RoadData2[];
    paused: boolean;
    offsetDistance: number;
    constructor(navigation: Navigation, options: Partial<PositionNavigationConfig>, roadData: RoadData2[]);
    get curRoutePath(): PathData2[0] | null;
    get curRoutePathPoints(): [number, number][];
    registryEvent(): void;
    unRegistryEvent(): void;
    onAddPaths: ({ paths }: {
        paths: PathData2;
    }) => void;
    onUpdate: () => void;
    setRoadData(roadData: RoadData2[]): void;
    resetStatus(paths: PathData2): void;
    emitNavigationStatus(): void;
    adsorb(floor: string, _position: [number, number]): {
        distance: number;
        closestPoint: [number, number];
        routeIndex: number;
        pointIndex: number;
    } | null;
    toPosition(floor: string, pos: [number, number]): void;
    startSimulation(): void;
    pause(): void;
    continue(): void;
    startCurRouteSimulation(): Promise<unknown>;
    changeSimulationSpeed(speed: number): void;
    getCurRouteRemainDistance(): number;
    getCurRouteToStartDistance(): number;
    getRemainDistance(): {
        total: number;
        curRoute: number;
    };
    getNextDirDistance(): {
        dir: PathDirection;
        distance: number;
        crossName: string;
        angle: number;
        nextAngle: number;
        nextDir: PathDirection;
    } | null;
    getCurPointAreaInfo(): {
        id: string;
        name: string;
        imageUrl: string;
        type: number;
        showType: number;
        positionMode: number;
        cds: [number, number][][];
    } | {
        imageUrl: null;
    };
    private getNavigationInfo;
    dispose(): void;
}
export {};
