import { IPositionToUpdate } from "../../../interfaces/VPInterfaces";
import { IVPTripsPositionAttributes } from "../../../../../../../schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes";
import { IVPTripsLastPositionContext } from "../../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
export default abstract class AbstractDelayAtStop {
    abstract updateContext(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null, position: IVPTripsPositionAttributes): IVPTripsLastPositionContext;
    abstract updatePosition(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate, position: IVPTripsPositionAttributes | undefined): IPositionToUpdate;
    protected calcDelayAtStop(actualTimestamp: number, scheduledTimestamp: Date | undefined | null): number | null;
    protected resetContext(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null, position: IVPTripsPositionAttributes | undefined): IVPTripsLastPositionContext;
    protected isContextChange(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null, position: IVPTripsPositionAttributes | undefined): boolean;
    protected didVehicleArriveAtTheLastStop(positionToUpdate: IPositionToUpdate, context: IVPTripsLastPositionContext): boolean;
    protected isValidUntrackedPosition(positionToUpdate: IPositionToUpdate): boolean;
}
