1import type * as mi from "@distilled.cloud/aws/iot-managed-integrations";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { ManagedThing } from "./ManagedThing.ts";
5
6/**
7 * Runtime binding for the `GetManagedThingCapabilities` operation (IAM
8 * action `iotmanagedintegrations:GetManagedThingCapabilities`), scoped to
9 * one {@link ManagedThing}.
10 *
11 * Reads the capability report the bound device registered at onboarding —
12 * the data model that {@link SendManagedThingCommand} commands are written
13 * against. Provide the implementation with
14 * `Effect.provide(AWS.IoTManagedIntegrations.GetManagedThingCapabilitiesHttp)`.
15 *
16 * ### Reading Device State
17 * **Example:** Inspect the Device Capability Report
18 * ```typescript
19 * const getCapabilities =
20 * yield* IoTManagedIntegrations.GetManagedThingCapabilities(thing);
21 *
22 * const { CapabilityReport } = yield* getCapabilities();
23 * // CapabilityReport?.endpoints[0].capabilities
24 * ```
25 *
26 * @binding
27 */
28export interface GetManagedThingCapabilities extends Binding.Service<
29 GetManagedThingCapabilities,
30 "AWS.IoTManagedIntegrations.GetManagedThingCapabilities",
31 (
32 thing: ManagedThing,
33 ) => Effect.Effect<
34 () => Effect.Effect<
35 mi.GetManagedThingCapabilitiesResponse,
36 mi.GetManagedThingCapabilitiesError
37 >
38 >
39> {}
40export const GetManagedThingCapabilities =
41 Binding.Service<GetManagedThingCapabilities>(
42 "AWS.IoTManagedIntegrations.GetManagedThingCapabilities",
43 );