import { EventDispatcher, PathData2, Timer } from "../../utils";
import { Socket } from "./socket";
import { PdrPosition, Sensor } from "../pdr-position";
import { CarInertialPosition } from "../car-inertial-position";
import { BMap } from "../../bmap";
export interface BeaconInfo {
    uuid: string;
    major: number;
    minor: number;
    rssi: number;
    accuracy: number;
    txPower: number;
}
export interface PositionOptions {
    place_id: string | number;
    access_token: string;
    env: string;
    type: number;
    wss_position_url: string;
    wss_sensor_url: string;
    get_gps_floor_url: string;
    use_sensor: boolean;
    ext_position_params: Record<string, any>;
    ext_sensor_params: Record<string, any>;
    use_gps: boolean;
    use_pdr: boolean;
    upload_position: boolean;
    use_default_permission: boolean;
}
export interface PositionEvent {
    "position": {
        floor: string;
        x: number;
        y: number;
        time: number;
        speed?: number;
    };
    'check-sensor': {
        deviceOrientation: boolean;
    };
    "ws-position": {
        floor: string;
        x: number;
        y: number;
        time: string;
    };
    'floor': {
        floor: string;
        time: string;
    };
    'compass': {
        value: number;
    };
}
export declare class Position extends EventDispatcher<PositionEvent> {
    bmap: BMap;
    options: PositionOptions;
    positionWebSocket: Socket | null;
    sensorWebSocket: Socket | null;
    pdrPosition: PdrPosition | null;
    carInertialPosition: CarInertialPosition | null;
    private gpsFloor;
    private positionFloor;
    private useGpsFloorTimer;
    private uploadIndex;
    private path;
    timer: Timer;
    constructor(bmap: BMap, options: Partial<PositionOptions>);
    initPositionWebSocket(): void;
    initSensorWebSocket(): void;
    initPdr(): void;
    setSensor(sensor: Sensor): void;
    requestDeviceOrientationPermission(): Promise<{
        deviceOrientation: boolean;
    } | null>;
    getGpsFloor(): Promise<void>;
    pausePdr(): void;
    continuePdr(): void;
    setPathAngle(angle: number): void;
    getForwardAngle(): number | null;
    resetPdr(): void;
    setPath(path: PathData2): void;
    sendBeacon(beaconInfo: BeaconInfo[]): void;
    dispose(): void;
}
