import { DistanceCalculator } from './calculator/DistanceCalculator';
import { LatLng } from './LatLng';
import { LengthUnit } from './LengthUnit';
/**
 * Calculates the distance between points.
 *
 * Default algorithm is [distanceWithVincenty], default radius is [EARTH_RADIUS]
 *
 *      final Distance distance = new Distance();
 *
 *      // km = 423
 *      final int km = distance.as(LengthUnit.Kilometer,
 *         new LatLng(52.518611,13.408056),new LatLng(51.519475,7.46694444));
 *
 *      // meter = 422592
 *      final int meter = distance(new LatLng(52.518611,13.408056),new LatLng(51.519475,7.46694444));
 */
export declare class Distance implements DistanceCalculator {
    private readonly roundResult;
    /** Returns either [Haversine] oder [Vincenty] calculator */
    private readonly calculator;
    readonly radius: number;
    constructor({ radius, roundResult, calculator }?: {
        radius?: number;
        roundResult?: boolean;
        calculator?: DistanceCalculator;
    });
    /**
     * Shortcut for creating a Vincenty-Distance-Calculator
     *
     * const calculator = Distance.useVincenty()
     */
    static useVincenty({ radius, roundResult, }?: {
        radius?: number;
        roundResult?: boolean;
    }): Distance;
    /**
     * Shortcut for creating a Haversine-Distance-Calculator
     *
     * const calculator = Distance.useHaversine()
     */
    static useHaversine({ radius, roundResult, }?: {
        radius?: number;
        roundResult?: boolean;
    }): Distance;
    /**
     * Converts the distance to the given [LengthUnit]
     *
     *     const km = distance.as(LengthUnit.Kilometer,
     *         new LatLng(52.518611,13.408056),new LatLng(51.519475,7.46694444));
     */
    as(unit: LengthUnit, p1: LatLng, p2: LatLng): number;
    /**
     * Computes the distance between two points.
     *
     * The function uses the [DistanceAlgorithm] specified in the CTOR
     */
    distance(p1: LatLng, p2: LatLng): number;
    /**
     * Returns the great circle bearing (direction) in degrees to the next point ([p2])
     *
     * Find out about the difference between rhumb line and
     * great circle bearing on
     * [Wikipedia](http://en.wikipedia.org/wiki/Rhumb_line#General_and_mathematical_description).
     *
     *     final Distance distance = const Distance();
     *
     *     final LatLng p1 = new LatLng(0.0, 0.0);
     *     final LatLng p2 = new LatLng(-90.0, 0.0);
     *
     *     expect(distance.direction(p1, p2), equals(180));
     */
    bearing(p1: LatLng, p2: LatLng): number;
    /**
     * Returns a destination point based on the given [distance] and [bearing]
     *
     * Given a [from] (start) point, initial [bearing], and [distance],
     * this will calculate the destination point and
     * final bearing travelling along a (shortest distance) great circle arc.
     *
     *     final Distance distance = const Distance();
     *
     *     final num distanceInMeter = (EARTH_RADIUS * math.PI / 4).round();
     *
     *     final p1 = new LatLng(0.0, 0.0);
     *     final p2 = distance.offset(p1, distanceInMeter, 180);
     *
     * Bearing: Left - 270°, right - 90°, up - 0°, down - 180°
     */
    offset(from: LatLng, distanceInMeter: number, bearing: number): LatLng;
    private round;
}
