/// <reference types="node" />
import React from 'react';
import { MAP_SIMULATION_REFERENCE_TYPE, SIMULATION_COMMAND_TYPE } from './CommandTypes';
import { GEOJSON_PATH_TYPE, SIMULATION_OPTIONS_TYPE, SIMULATION_STATUS_TYPE } from './JibestreamTypes';
export type PathSimulatorProps = {
    updateUserLocation: (loc: number[], heading: number) => void;
    onSimStatusChanged?: (status: SIMULATION_STATUS_TYPE) => void;
};
export type PathSimulatorState = {
    simStatus: SIMULATION_STATUS_TYPE;
    simOptions?: SIMULATION_OPTIONS_TYPE;
    path?: GEOJSON_PATH_TYPE;
    timer?: NodeJS.Timer;
};
export type PathSimulatorRef = {
    startPathSimulation: (path: GEOJSON_PATH_TYPE, options: SIMULATION_OPTIONS_TYPE) => void;
    controlSimulation: (command: SIMULATION_COMMAND_TYPE) => SIMULATION_STATUS_TYPE;
    getSimulationStatus: () => SIMULATION_STATUS_TYPE;
};
export declare class PathSimulator extends React.Component<PathSimulatorProps, PathSimulatorState> implements MAP_SIMULATION_REFERENCE_TYPE {
    updateUserLocation: (loc: number[], heading: number) => void;
    onSimStatusChanged?: (status: SIMULATION_STATUS_TYPE) => void;
    onLocationChange?: (loc: number[]) => void;
    onStatusChange?: (status: SIMULATION_STATUS_TYPE) => void;
    constructor(props: PathSimulatorProps);
    startPathSimulation(path: GEOJSON_PATH_TYPE, options: SIMULATION_OPTIONS_TYPE): void;
    controlSimulation(command: SIMULATION_COMMAND_TYPE): SIMULATION_STATUS_TYPE;
    getSimulationStatus(): SIMULATION_STATUS_TYPE;
    getPoint(p: {
        lat: number;
        lon: number;
    }): number[];
    updatePathLocation(): void;
    moveDistanceAlongPath(path: GEOJSON_PATH_TYPE, startLocation: number[], startSegment: number, distance: number): {
        loc: number[];
        leg: number;
    };
    getRandomNumber(start: number, end: number): number;
    randomizeLocation(loc: number[], radius: number): number[];
    getPointDistanceAlongPath(start: number[], end: number[], distance: number): {
        endLoc?: number[];
        remainingDist: number;
    };
    getDestinationPoint(start: number[], bearing: number, distance: number): number[];
    getBearingBetweenPoints(start: number[], end: number[]): number;
    getDistanceBetweenPoints(start: number[], end: number[]): number;
    deg2rad(deg: number): number;
    rad2deg(rad: number): number;
    render(): React.JSX.Element;
}
//# sourceMappingURL=PathSimulator.d.ts.map