import { StopId } from '../stops/stops.js';
import { StopsIndex } from '../stops/stopsIndex.js';
import { Time } from '../timetable/time.js';
import { Timetable } from '../timetable/timetable.js';
import { Query } from './query.js';
import { Result } from './result.js';
import { Leg } from './route.js';
export type TripLeg = ReachingTime & {
    leg?: Leg;
};
export type ReachingTime = {
    time: Time;
    legNumber: number;
    origin: StopId;
};
export declare class Router {
    private readonly timetable;
    private readonly stopsIndex;
    constructor(timetable: Timetable, stopsIndex: StopsIndex);
    /**
     * Evaluates possible transfers for a given query on a transport
     * network, updating the earliest arrivals at various stops and marking new
     * stops that can be reached through these transfers.
     */
    private considerTransfers;
    /**
     * The main Raptor algorithm implementation.
     *
     * @param query The query containing the main parameters for the routing.
     * @returns A result object containing data structures allowing to reconstruct routes and .
     */
    route(query: Query): Result;
}
