1import type * as location from "@distilled.cloud/aws/location";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { GeofenceCollection } from "./GeofenceCollection.ts";
5
6/**
7 * `BatchPutGeofence` request with `CollectionName` injected from the bound
8 * resource.
9 */
10export interface BatchPutGeofenceRequest extends Omit<
11 location.BatchPutGeofenceRequest,
12 "CollectionName"
13> {}
14
15/**
16 * Stores up to 10 geofences in the collection in one call.
17 *
18 * Runtime binding for the `BatchPutGeofence` operation (IAM action
19 * `geo:BatchPutGeofence`), scoped to one {@link GeofenceCollection}. Provide the implementation with
20 * `Effect.provide(AWS.Location.BatchPutGeofenceHttp)`.
21 *
22 * ### Managing Geofences
23 * **Example:** Store Several Geofences at Once
24 * ```typescript
25 * const batchPut = yield* Location.BatchPutGeofence(collection);
26 *
27 * const result = yield* batchPut({
28 * Entries: [
29 * {
30 * GeofenceId: "warehouse",
31 * Geometry: { Circle: { Center: [-122.3493, 47.6205], Radius: 100 } },
32 * },
33 * ],
34 * });
35 * // result.Successes / result.Errors → per-geofence outcomes
36 * ```
37 *
38 * @binding
39 */
40export interface BatchPutGeofence extends Binding.Service<
41 BatchPutGeofence,
42 "AWS.Location.BatchPutGeofence",
43 (
44 collection: GeofenceCollection,
45 ) => Effect.Effect<
46 (
47 request: BatchPutGeofenceRequest,
48 ) => Effect.Effect<
49 location.BatchPutGeofenceResponse,
50 location.BatchPutGeofenceError
51 >
52 >
53> {}
54export const BatchPutGeofence = Binding.Service<BatchPutGeofence>(
55 "AWS.Location.BatchPutGeofence",
56);