interface Route { id: string; gtfsId: string; shortName: string; longName: string; color: string; textColor: string; mode: string; type: string; timeSheet: boolean; pdfTimeSheet: boolean; pdfMap: boolean; } interface Cluster { city: string; code: string; id: string; lat: number; lon: number; name: string; visible: boolean; } interface StopTimesPattern { pattern: { id: string; desc: string; dir: number; shortDesc: string; lastStop: string; lastStopName: string; }; times: StopTimes[]; } interface StopTimes { stopId: string; stopName: string; scheduledArrival: number; scheduledDeparture: number; realtimeArrival: number; realtimeDeparture: number; arrivalDelay: number; departureDelay: number; timepoint: boolean; realtime: boolean; realtimeState: string; serviceDay: number; tripId: string; pickupType: string; occupancy: string; occupancyId: number; } interface PlannerResource extends Record { routerId: string; fromPlace: string; toPlace: string; arriveBy: string; time: string; date: string; routerId: string; optimize: OptimizeType; walkSpeed: string; walkReluctance: string; locale: string; mode: string; showIntermediateStops?: string; minTransferTime?: string; transferPenalty?: string; numItineraries?: string; walkBoardCost?: string; bannedAgencies?: string; } type OptimizeType = "FLAT" | "GREENWAYS" | "QUICK" | "SAFE" | "TRANSFERS" | "TRIANGLE"; type PlannerModes = "WALK" | "TRANSIT"; interface OTPPlace { name: string; lon: number; lat: number; vertedType: "NORMAL"; } interface OTPItineraries { duration: number; startTime: number; endTime: number; walkTime: number; transitTime: number; waitingTime: number; walkDistance: number; walkLimitExceeded: boolean; generalizedCost: number; elevationLost: number; elevationGained: number; transfers: number; legs: OTPLegs[]; } interface OTPLegs { startTime: number; endTime: number; departureDelay: number; arrivalDelay: number; realTime: boolean; distance: number; generalizedCost: number; pathway: boolean; mode: PlannerModes; transitLeg: boolean; route: string; routeColor?: string; routeId?: string; routeLongName?: string; routeShortName?: string; routeTextColor?: string; routeType?: number; agencyTimeZoneOffset: number; interlineWithPreviousLeg: boolean; from: OTPPlace; to: OTPPlace; legGeometry: { points: "string"; }; legElevation: string; steps: OTPStep[]; duration: number; } interface OTPStep { distance: number; relativeDirection: string; streetName: string; absoluteDirection: string; stayOn: boolean; area: boolean; bogusName: boolean; lon: numbeer; lat: numbeer; elevation: string; walkingBike: boolean; } interface OTPPlanOutput { plan: { date: number; from: OTPPlace; to: OTPPlace; itineraries: OTPItineraries[]; }; }