import { Schedule } from "./Schedule"; import { ScheduleCalendar } from "./ScheduleCalendar"; import { CRS } from "../file/Stop"; import { IdGenerator, OverlayRecord, STP, TUID } from "./OverlayRecord"; import { StopTime } from "../file/StopTime"; export declare class Association implements OverlayRecord { readonly id: number; readonly baseTUID: TUID; readonly assocTUID: TUID; readonly assocLocation: CRS; readonly dateIndicator: DateIndicator; readonly assocType: AssociationType; readonly calendar: ScheduleCalendar; readonly stp: STP; constructor(id: number, baseTUID: TUID, assocTUID: TUID, assocLocation: CRS, dateIndicator: DateIndicator, assocType: AssociationType, calendar: ScheduleCalendar, stp: STP); get tuid(): TUID; get hash(): string; /** * Clone the association with a different calendar */ clone(calendar: ScheduleCalendar, id: number): Association; /** * Apply the join or split to the associated schedule. Check for any days that the associated service runs but the * association does not and create additional schedules to cover those periods. */ apply(base: Schedule, assoc: Schedule, idGenerator: IdGenerator): Schedule[]; /** * Apply the split or join to the given schedules */ private mergeSchedules; /** * Take the arrival time of the first stop and the departure time of the second stop and put them into a new stop */ mergeAssociationStop(arrivalStop: StopTime, departureStop: StopTime): StopTime; } export declare enum DateIndicator { Same = "S", Next = "N", Previous = "P" } export declare enum AssociationType { Split = "VV", Join = "JJ", NA = "" }