import { FeatureGroup } from "../layer-group.js"; import { Polyline, type PathOptions } from "../layers/vector.js"; import { type LatLngLike } from "../geo.js"; export interface RouteWaypoint { latlng: LatLngLike; name?: string; } export interface RouteResult { id?: string | number; name?: string; coordinates: LatLngLike[]; distance?: number; /** Estimated travel time in milliseconds (convert provider seconds at the boundary). */ durationMs?: number; properties?: Record; } export interface RoutingContext { /** Aborting rejects route() with AbortError, even if the provider ignores the signal. */ signal?: AbortSignal; alternatives?: boolean; [key: string]: unknown; } export type RoutingProvider = (waypoints: RouteWaypoint[], context: RoutingContext) => Promise | RouteResult[] | null | undefined; export interface RoutingLayerOptions { provider: RoutingProvider; alternatives?: boolean; routeStyle?: PathOptions | ((route: RouteResult, index: number) => PathOptions); selectedStyle?: PathOptions; } type ResolvedRoutingLayerOptions = Required; export interface RoutingEventMap { loading: { waypoints: RouteWaypoint[]; }; load: { routes: RouteResult[]; waypoints: RouteWaypoint[]; }; abort: { error: unknown; waypoints: RouteWaypoint[]; }; error: { error: unknown; waypoints: RouteWaypoint[]; }; select: { index: number; route: RouteResult; }; routeclick: { index: number; route: RouteResult; layer: Polyline; latlng?: LatLngLike; originalEvent?: MouseEvent | PointerEvent; }; } export declare class RoutingLayer extends FeatureGroup { #private; readonly routingOptions: ResolvedRoutingLayerOptions; routes: RouteResult[]; selectedIndex: number; constructor(options: RoutingLayerOptions); /** Supersedes the previous request. Cancellation rejects and retains the last successful routes. */ route(waypoints: Array, context?: RoutingContext): Promise; cancel(): this; remove(): this; onRemove(): void; select(index: number): this; getRoutes(): RouteResult[]; } export declare function routingLayer(options: RoutingLayerOptions): RoutingLayer; export declare function createStraightLineRoutingProvider(): RoutingProvider; export {}; //# sourceMappingURL=routing.d.ts.map