export interface IEntityWithOptionalTimestamp { millisecondsSinceEpoch?: number; } export interface IEntityWithId { id: string; } export interface IPassioSystem extends IEntityWithId, IEntityWithOptionalTimestamp { name: string; } export interface ICoordinates { latitude: number; longitude: number; } export interface IRoute extends IEntityWithId, IEntityWithOptionalTimestamp { name: string; color: string; polylineCoordinates: ICoordinates[]; systemId: string; } export interface IStop extends IEntityWithId, IEntityWithOptionalTimestamp { name: string; systemId: string; coordinates: ICoordinates; } export interface IShuttle extends IEntityWithId, IEntityWithOptionalTimestamp { coordinates: ICoordinates; name: string; routeId: string; systemId: string; orientationInDegrees: number; } export interface IEta extends IEntityWithOptionalTimestamp { secondsRemaining: number; shuttleId: string; stopId: string; systemId: string; } export interface IOrderedStop extends IEntityWithOptionalTimestamp { nextStop?: IOrderedStop; previousStop?: IOrderedStop; routeId: string; stopId: string; position: number; systemId: string; }