import { BMap } from "../../bmap";
import { Plugin } from "../base";
import { MulPath } from "./path";
import { PathData2, TweenUtil } from "../../utils";
import { Poi2 } from "../../elements";
import { Tween } from "@tweenjs/tween.js";
import { MulFloors } from "../mul-floors";
import { StartModel, StartModelOptions } from "./start-model";
interface EventMap {
    "fetch-road-status": {
        status: boolean;
    };
    "path-animation": {
        pathIndex: number;
    };
    "path-animation-end": {};
    "render-path": {
        path: MulPath;
    };
    "add-path": {
        paths: PathData2;
    };
}
interface MulFloorNavigationOptions {
    startModel?: Partial<StartModelOptions>;
}
export declare class MulFloorNavigation extends Plugin<EventMap> {
    mulFloor: MulFloors;
    path: MulPath | null;
    fetchRoadStatus: boolean;
    paths: PathData2;
    curFloorPath: PathData2[0] | null;
    translatePath: PathData2[0]["points"] | null;
    currentPathPosition: [number, number] | null;
    pathTween: Tween<any> | null;
    startPoi: Poi2 | null;
    movedDistance: number;
    tweenUtil: TweenUtil;
    simulationTween?: Tween<any>;
    animationPathOptions: {
        cPathIndex: number;
    };
    cPath: [number, number, number][];
    startModel: StartModel;
    constructor(bmap: BMap, mulFloor: MulFloors, options?: Partial<MulFloorNavigationOptions>);
    registryEvent(): void;
    pauseAnimation(): void;
    continueAnimation(): void;
    clearTween(): void;
    unRegistryEvent(): void;
    onUpdate: () => void;
    clearPath(): void;
    addPath(paths: PathData2): void;
    translatePoints(points: [number, number][]): [number, number][];
    renderPath(paths: PathData2): Promise<void>;
    catmullRomCurve3(points: [number, number][]): [number, number][];
    getPathDirection(points: [number, number][], pos: [number, number]): number | null;
    startSimulation(speed?: number): Promise<unknown>;
    setStartPoiRotate(rotate: number): void;
    dispose(): void;
}
export {};
