////////////////////////////////////////////////////////////////
// Abstract event
////////////////////////////////////////////////////////////////
/**
 * Abstract class for representing a tour event
 */
export class AbstractTourEvent {
}
////////////////////////////////////////////////////////////////
// Position events
////////////////////////////////////////////////////////////////
/**
 * Basic event encapsulation for a lost position
 */
export class NoPositionEvent extends AbstractTourEvent {
    constructor(lastKnownPosition) {
        super();
        this.lastKnownPosition = lastKnownPosition;
    }
}
/**
 * Basic event encapsulation for a weak position
 */
export class WeakPositionEvent extends AbstractTourEvent {
    constructor(currentPosition) {
        super();
        this.currentPosition = currentPosition;
    }
}
////////////////////////////////////////////////////////////////
// Itinerary events
////////////////////////////////////////////////////////////////
/**
 * Basic event encapsulation for itinerary updates
 */
export class ItineraryEvent extends AbstractTourEvent {
}
export class ManeuverEvent extends ItineraryEvent {
}
export class LegChangeEvent extends ItineraryEvent {
}
export class OutOfItineraryEvent extends ItineraryEvent {
}
export class PlaceEvent extends ItineraryEvent {
}
export class ItineraryContentEvent extends ItineraryEvent {
}
////////////////////////////////////////////////////////////////
// Enumerations
////////////////////////////////////////////////////////////////
/**
 * Enumeration for listing all event types
 */
export var ItineraryEventType;
(function (ItineraryEventType) {
    ItineraryEventType[ItineraryEventType["NoPositionEvent"] = 0] = "NoPositionEvent";
    ItineraryEventType[ItineraryEventType["WeakPositionEvent"] = 1] = "WeakPositionEvent";
    ItineraryEventType[ItineraryEventType["ManeuverEvent"] = 2] = "ManeuverEvent";
    ItineraryEventType[ItineraryEventType["LegChangeEvent"] = 3] = "LegChangeEvent";
    ItineraryEventType[ItineraryEventType["OutOfItineraryEvent"] = 4] = "OutOfItineraryEvent";
    ItineraryEventType[ItineraryEventType["PlaceEvent"] = 5] = "PlaceEvent";
    ItineraryEventType[ItineraryEventType["ItineraryContentEvent"] = 6] = "ItineraryContentEvent";
})(ItineraryEventType || (ItineraryEventType = {}));
