1import type * as location from "@distilled.cloud/aws/location";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Tracker } from "./Tracker.ts";
5
6/**
7 * `GetDevicePositionHistory` request with `TrackerName` injected from the bound
8 * resource.
9 */
10export interface GetDevicePositionHistoryRequest extends Omit<
11 location.GetDevicePositionHistoryRequest,
12 "TrackerName"
13> {}
14
15/**
16 * Retrieves the position history of a device from the tracker (positions are retained for 30 days).
17 *
18 * Runtime binding for the `GetDevicePositionHistory` operation (IAM action
19 * `geo:GetDevicePositionHistory`), scoped to one {@link Tracker}. Provide the implementation with
20 * `Effect.provide(AWS.Location.GetDevicePositionHistoryHttp)`.
21 *
22 * ### Reading Device Positions
23 * **Example:** Read a Device's Position History
24 * ```typescript
25 * const getHistory = yield* Location.GetDevicePositionHistory(tracker);
26 *
27 * const history = yield* getHistory({ DeviceId: "vehicle-1" });
28 * // history.DevicePositions → chronological position samples
29 * ```
30 *
31 * @binding
32 */
33export interface GetDevicePositionHistory extends Binding.Service<
34 GetDevicePositionHistory,
35 "AWS.Location.GetDevicePositionHistory",
36 (
37 tracker: Tracker,
38 ) => Effect.Effect<
39 (
40 request: GetDevicePositionHistoryRequest,
41 ) => Effect.Effect<
42 location.GetDevicePositionHistoryResponse,
43 location.GetDevicePositionHistoryError
44 >
45 >
46> {}
47export const GetDevicePositionHistory =
48 Binding.Service<GetDevicePositionHistory>(
49 "AWS.Location.GetDevicePositionHistory",
50 );