import { IVPTripsLastPositionContext } from "../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
import { IScheduleDto } from "../../../../../schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto";
import { Feature, Point } from "@turf/turf";
import { GTFSRouteTypeEnum } from "../../../../../helpers/RouteTypeEnums";
import { IComputationTrip, ICurrentPositionProperties, IPositionToUpdate, IProcessedPositions, IShapeAnchorPoint, IUpdatePositionsIteratorOptions } from "../interfaces/VPInterfaces";
import { BasePositionsManager } from "./BasePositionsManager";
import { ValidToCalculator } from "./ValidToCalculator";
import { ILogger } from "@golemio/core/dist/helpers";
export declare class PositionsManager extends BasePositionsManager {
    private logger;
    protected validToCalculator: ValidToCalculator;
    constructor(logger: ILogger, validToCalculator: ValidToCalculator);
    /**
     * Takes position one by one, set proper handler for type of position, and do the process of position
     *
     * @param {IUpdatePositionsIteratorOptions} options - Initial options
     * @param {number} cb - Callback function of iterator
     * @returns {IProcessedPositions} - Returns computed/updated positions
     */
    updatePositions: (options: IUpdatePositionsIteratorOptions, schedule: IScheduleDto[] | undefined) => IProcessedPositions;
    /**
     * Picks only one closest point for multiple possible points based on delay of last position and stop times
     *
     * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
     * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
     * @param {number} startDayTimestamp - Unix timestamp of start of the day
     * @param {IShapeAnchorPoint[]} closestPts - All closest points of possible segments
     * @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
     * @returns {IPositionToUpdate} - Result point as position to update in DB
     */
    protected getClosestPoint: (currentPosition: Feature<Point, ICurrentPositionProperties>, context: IVPTripsLastPositionContext | null, startDayTimestamp: number, thisClosestPoint: IShapeAnchorPoint, tripGtfsData: IComputationTrip, gtfsRouteType: GTFSRouteTypeEnum) => IPositionToUpdate;
    private detectBacktracking;
    private getStateAndStopSequences;
    private hasTcpEventOrCancel;
    private isAfterTrack;
}
