import type { BBox, FeatureCollection, Geometry, LineString } from '@turf/helpers'; import { Waypoint, LngLatPosition, Mode } from '../libre-routing.model'; export interface AnyRoutingDataProvider { request: (waypoints: Waypoint[], opts: RequestOptions) => Promise; destroy(): void; hasPendingRequests(): Promise; abortAllRequests(): void; } export interface RequestOptions { mode: Mode; } export interface AnyRoutingDataResponse { rawResponse: any; routesShapeGeojson: FeatureCollection; routes: RouteSummary[]; selectedRouteId?: number | null; routesShapeBounds?: BBox; version: number; latest: boolean; mode: Mode; } export type RoutePath = LngLatPosition[]; export interface RouteSummary { id: number; label?: string; path: RoutePath; durationTime: number; arriveTime: Date; departureTime: Date; distance: number; cost?: number; waypoints: { lat: number; lng: number; }[]; shape: FeatureCollection; } export * from './errors';