1import type * as location from "@distilled.cloud/aws/location";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { RouteCalculator } from "./RouteCalculator.ts";
5
6/**
7 * `CalculateRouteMatrix` request with `CalculatorName` injected from the bound
8 * resource.
9 */
10export interface CalculateRouteMatrixRequest extends Omit<
11 location.CalculateRouteMatrixRequest,
12 "CalculatorName"
13> {}
14
15/**
16 * Calculates the distance/duration matrix between sets of departure and destination positions.
17 *
18 * Runtime binding for the `CalculateRouteMatrix` operation (IAM action
19 * `geo:CalculateRouteMatrix`), scoped to one {@link RouteCalculator}. Provide the implementation with
20 * `Effect.provide(AWS.Location.CalculateRouteMatrixHttp)`.
21 *
22 * ### Calculating Routes
23 * **Example:** Calculate a Route Matrix
24 * ```typescript
25 * const calculateMatrix = yield* Location.CalculateRouteMatrix(calculator);
26 *
27 * const matrix = yield* calculateMatrix({
28 * DeparturePositions: [[-122.3493, 47.6205]],
29 * DestinationPositions: [[-122.3321, 47.6062], [-122.2015, 47.6101]],
30 * });
31 * // matrix.RouteMatrix[departure][destination].Distance
32 * ```
33 *
34 * @binding
35 */
36export interface CalculateRouteMatrix extends Binding.Service<
37 CalculateRouteMatrix,
38 "AWS.Location.CalculateRouteMatrix",
39 (
40 calculator: RouteCalculator,
41 ) => Effect.Effect<
42 (
43 request: CalculateRouteMatrixRequest,
44 ) => Effect.Effect<
45 location.CalculateRouteMatrixResponse,
46 location.CalculateRouteMatrixError
47 >
48 >
49> {}
50export const CalculateRouteMatrix = Binding.Service<CalculateRouteMatrix>(
51 "AWS.Location.CalculateRouteMatrix",
52);