export type OutputFormat = 'json' | 'gpx' | 'osrm' | 'pbf' | 'geotiff' | 'mvt'; export type CostingType = 'auto' | 'bicycle' | 'pedestrian' | 'truck' | 'bus' | 'taxi' | 'motor_scooter' | 'motorcycle' | 'multimodal' | 'bikeshare' | 'auto_pedestrian'; export type SpeedType = 'current' | 'freeflow' | 'constrained' | 'predicted'; export type AutoCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined, alley_factor?: number | undefined, use_highways?: number | undefined, use_tolls?: number | undefined, use_distance?: number | undefined, restriction_probability?: number | undefined, top_speed?: number | undefined, include_hov2?: boolean | undefined, include_hov3?: boolean | undefined, include_hot?: boolean | undefined, height?: number | undefined, width?: number | undefined, length?: number | undefined, weight?: number | undefined}; export type BicycleCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined, bicycle_type?: ('road' | 'hybrid' | 'city' | 'cross' | 'mountain') | undefined, cycling_speed?: number | undefined, use_roads?: number | undefined, use_hills?: number | undefined, avoid_bad_surfaces?: number | undefined, steps_factor?: number | undefined, bss_return_cost?: number | undefined, bss_rent_penalty?: number | undefined}; export type PedestrianCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined, type?: ('foot' | 'blind' | 'wheelchair') | undefined, walking_speed?: number | undefined, walkway_factor?: number | undefined, sidewalk_factor?: number | undefined, alley_factor?: number | undefined, use_lit?: number | undefined, driveway_factor?: number | undefined, step_penalty?: number | undefined, max_hiking_difficulty?: number | undefined, mode_factor?: number | undefined, max_distance?: number | undefined, multimodal_start_end_max_distance?: number | undefined, transit_transfer_max_distance?: number | undefined, use_hills?: number | undefined, elevator_penalty?: number | undefined, bss_rent_cost?: number | undefined, bss_rent_penalty?: number | undefined}; export type TruckCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined, hazmat?: boolean | undefined, low_class_penalty?: number | undefined, low_class_factor?: number | undefined, height?: number | undefined, width?: number | undefined, length?: number | undefined, weight?: number | undefined, axle_load?: number | undefined, axle_count?: number | undefined, use_highways?: number | undefined, use_tolls?: number | undefined, top_speed?: number | undefined, hgv_no_access_penalty?: number | undefined, use_truck_route?: number | undefined, use_distance?: number | undefined}; export type MotorcycleCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined, use_highways?: number | undefined, use_tolls?: number | undefined, use_trails?: number | undefined, use_curvature?: number | undefined, top_speed?: number | undefined, use_distance?: number | undefined}; export type MotorScooterCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined, top_speed?: number | undefined, use_hills?: number | undefined, use_primary?: number | undefined, use_distance?: number | undefined}; export type TransitFilterOptions = {action?: ('include' | 'exclude') | undefined, ids?: Array | undefined}; export type TransitCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined, mode_factor?: number | undefined, wheelchair?: boolean | undefined, bicycle?: boolean | undefined, use_bus?: number | undefined, use_rail?: number | undefined, use_transfers?: number | undefined, transfer_cost?: number | undefined, transfer_penalty?: number | undefined, filters?: ({operators?: TransitFilterOptions | undefined, routes?: TransitFilterOptions | undefined}) | undefined}; export type CostingOptions = {auto?: AutoCostingOptions | undefined, bus?: AutoCostingOptions | undefined, taxi?: AutoCostingOptions | undefined, bicycle?: BicycleCostingOptions | undefined, pedestrian?: PedestrianCostingOptions | undefined, bikeshare?: PedestrianCostingOptions | undefined, truck?: TruckCostingOptions | undefined, motorcycle?: MotorcycleCostingOptions | undefined, motor_scooter?: MotorScooterCostingOptions | undefined, multimodal?: TransitCostingOptions | undefined, transit?: TransitCostingOptions | undefined}; export type DateTimeOptions = {type?: (0 | 1 | 2 | 3) | undefined, value?: string | undefined}; export type RoadClass = 'motorway' | 'trunk' | 'primary' | 'secondary' | 'tertiary' | 'unclassified' | 'residential' | 'service_other'; export type SearchFilter = {min_road_class?: RoadClass | undefined, max_road_class?: RoadClass | undefined, exclude_tunnel?: boolean | undefined, exclude_bridge?: boolean | undefined, exclude_toll?: boolean | undefined, exclude_ramp?: boolean | undefined, exclude_ferry?: boolean | undefined, exclude_restricted?: boolean | undefined, exclude_steps?: boolean | undefined, exclude_closures?: boolean | undefined, level?: number | undefined}; export type Location = {lat: number, lon: number, type?: ('break' | 'through' | 'via' | 'break_through') | undefined, name?: string | undefined, street?: string | undefined, date_time?: string | undefined, heading?: number | undefined, heading_tolerance?: number | undefined, preferred_layer?: number | undefined, node_snap_tolerance?: number | undefined, minimum_reachability?: number | undefined, radius?: number | undefined, search_cutoff?: number | undefined, rank_candidates?: boolean | undefined, preferred_side?: ('same' | 'opposite' | 'either') | undefined, display_lat?: number | undefined, display_lon?: number | undefined, street_side_tolerance?: number | undefined, street_side_max_distance?: number | undefined, street_side_cutoff?: RoadClass | undefined, waiting?: number | undefined, search_filter?: SearchFilter | undefined}; export type Factor = number; export type ShapeFactorVariant = {shape: string, factor: Factor}; export type GeoJsonFactorVariant = {type: 'Feature', geometry: {type: 'LineString', coordinates: Array>}, properties: {factor: Factor}}; export type LinearCostFactor = ShapeFactorVariant | GeoJsonFactorVariant; export type DirectionsType = 'none' | 'maneuvers' | 'instructions'; export type ShapeFormat = 'polyline6' | 'polyline5' | 'geojson' | 'no_shape'; export type BaseCostingOptions = {exclude_bridges?: boolean | undefined, exclude_tunnels?: boolean | undefined, exclude_tolls?: boolean | undefined, exclude_highways?: boolean | undefined, exclude_ferries?: boolean | undefined, name?: string | undefined, shortest?: boolean | undefined, disable_hierarchy_pruning?: boolean | undefined, ignore_restrictions?: boolean | undefined, ignore_oneways?: boolean | undefined, ignore_access?: boolean | undefined, ignore_closures?: boolean | undefined, destination_only_penalty?: number | undefined, maneuver_penalty?: number | undefined, alley_penalty?: number | undefined, gate_cost?: number | undefined, gate_penalty?: number | undefined, private_access_penalty?: number | undefined, country_crossing_cost?: number | undefined, country_crossing_penalty?: number | undefined, ferry_cost?: number | undefined, use_ferry?: number | undefined, rail_ferry_cost?: number | undefined, use_rail_ferry?: number | undefined, toll_booth_cost?: number | undefined, toll_booth_penalty?: number | undefined, service_penalty?: number | undefined, service_factor?: number | undefined, use_tracks?: number | undefined, use_living_streets?: number | undefined, closure_factor?: number | undefined, speed_penalty_factor?: number | undefined, fixed_speed?: number | undefined, speed_types?: Array | undefined}; export type RouteRequest = {id?: string | undefined, format?: OutputFormat | undefined, units?: ('km' | 'miles' | 'mi') | undefined, language?: string | undefined, costing: CostingType, costing_options?: CostingOptions | undefined, date_time?: DateTimeOptions | undefined, exclude_locations?: Array | undefined, exclude_polygons?: (Array>> | {type?: 'FeatureCollection' | undefined, features?: (Array<{type?: 'Feature' | undefined, geometry?: Record | undefined, properties?: ({levels?: Array | undefined}) | undefined}>) | undefined}) | undefined, linear_cost_factors?: Array | undefined, locations: Array, alternates?: number | undefined, directions_type?: DirectionsType | undefined, shape_format?: ShapeFormat | undefined, linear_references?: boolean | undefined, admin_crossings?: boolean | undefined, elevation_interval?: number | undefined, banner_instructions?: boolean | undefined, voice_instructions?: boolean | undefined, turn_lanes?: boolean | undefined, roundabout_exits?: boolean | undefined, prioritize_bidirectional?: boolean | undefined, recostings?: Array | undefined}; export type CreateApiOptimizedRouteArgs = {body: RouteRequest}; export type CreateApiOptimizedRouteOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; /** * /optimized_route * * POST /optimized_route */ export const createApiOptimizedRoute = async (args: CreateApiOptimizedRouteArgs, options?: CreateApiOptimizedRouteOptions) => { const {baseUrl = "https://valhalla1.openstreetmap.de", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/optimized_route${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return (await res.json()) as unknown };