import { IEta, IOrderedStop, IRoute, IShuttle, IStop } from "../../entities/ShuttleRepositoryEntities"; /** * Shuttle getter repository to be linked to a system. */ export interface ShuttleGetterRepository { getStops(): Promise; getStopById(stopId: string): Promise; getRoutes(): Promise; getRouteById(routeId: string): Promise; getShuttles(): Promise; getShuttleById(shuttleId: string): Promise; getShuttlesByRouteId(routeId: string): Promise; getEtasForShuttleId(shuttleId: string): Promise; getEtasForStopId(stopId: string): Promise; getEtaForShuttleAndStopId(shuttleId: string, stopId: string): Promise; /** * Subscribe to all updates in ETA data. * The subscriber persists even if the ETA data does not * exist within the repository, and may fire again * if ETA data is restored. * @param listener */ subscribeToEtaUpdates( listener: (eta: IEta) => void, ): void; /** * Unsubscribe from all ETA updates for the given callback. * Callback must be passed by reference. * @param listener */ unsubscribeFromEtaUpdates(listener: (eta: IEta) => void): void; getOrderedStopByRouteAndStopId(routeId: string, stopId: string): Promise; /** * Get ordered stops with the given stop ID. * Returns an empty array if no ordered stops found. * @param stopId */ getOrderedStopsByStopId(stopId: string): Promise; /** * Get ordered stops with the given route ID. * Returns an empty array if no ordered stops found. * @param routeId */ getOrderedStopsByRouteId(routeId: string): Promise; }