import { Degrees, NauticalMiles, TurnDirection } from "../common";
import { Path } from "../path";
import { Position } from "../position";
export interface TurnTransitionInput {
    inboundCourse: Degrees;
    outboundCourse: Degrees;
    startPosition: Position;
    endPosition: Position;
    turnRadius: NauticalMiles;
    turnDirection: TurnDirection;
}
/**
 * Base class for transitions from one point to another
 */
export declare abstract class TurnTransition {
    protected _inboundCourse: Degrees;
    protected _outboundCourse: Degrees;
    protected _courseDelta: Degrees;
    protected _startPosition: Position;
    protected _endPosition: Position;
    protected _turnRadius: NauticalMiles;
    protected _turnDirection: TurnDirection;
    protected _path: Path;
    /**
     * Constructs the class
     *
     * @param inboundCourse The inbound course entering the transition
     * @param outboundCourse The outbound course leaving the transition
     * @param startPosition The position to start the transition
     * @param endPosition The position to end the transition
     */
    constructor(input: TurnTransitionInput);
    get inboundCourse(): Degrees;
    get outboundCourse(): Degrees;
    get courseDelta(): Degrees;
    get startPosition(): Position;
    get endPosition(): Position;
    get turnRadius(): NauticalMiles;
    get turnDirection(): TurnDirection;
    /**
     * @deprecated
     * @returns Path
     */
    abstract generatePath(): Path;
    abstract toPath(): Path;
}
