import { Timer, EventDispatcher } from "../../utils";
import { KalmanFilter } from "../../utils/kalman-filter";
export interface CarPosition {
    position: [number, number];
    time: number;
    clientTime: number;
    type: "vision" | "beacon" | "pdr";
}
export interface CarPosInfo {
    success: boolean;
    pos: [number, number];
    compass: null | number;
    speed: number;
}
interface CarInertialPositionEventMap {
    "change-compass": {
        value: number;
    };
    "change-position-compass": {
        value: number;
    };
    "change-pos": {
        value: CarPosInfo;
    };
}
export declare class CarInertialPosition extends EventDispatcher<CarInertialPositionEventMap> {
    history: CarPosition[];
    visionHistory: CarPosition[];
    speed: number;
    angle: null | number;
    timer: Timer;
    positionTimer: number | null;
    speedFilter: KalmanFilter;
    visionExcessesCount: number;
    beaconExcessesCount: number;
    angleExcessesCount: number;
    pathAngle: number;
    constructor();
    setPathAngle(angle: number): void;
    changeSpeed(): void;
    changeAngle(histories?: CarPosition[]): void;
    setAngle(angle: number, dispatch?: boolean): void;
    /**
     * 添加视觉结果
     * @param position
     * @param time
     * @param duration
     * @returns
     */
    setPosition(position: CarPosition["position"], time: number, duration: number): void;
    resetPdrPosition(): void;
    /**
     * 获取 最后一个视觉坐标在加了pdr惯性的坐标
     */
    getLastVisionPdrPos(): CarPosition | null;
    private _setVisionHistoryForAngle;
    addHistory(data: CarPosition): void;
    setBeaconPosition(position: CarPosition["position"], time: number, duration: number): void;
    startPositionTimer(): void;
    stopPositionTimer(): void;
    changePosition(from?: string): void;
    getPosition(from: string): CarPosInfo;
    dispose(): void;
}
export {};
