1import type * as iot from "@distilled.cloud/aws/iot";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5export interface ListThingsRequest extends iot.ListThingsRequest {}
6
7/**
8 * Runtime binding for the `ListThings` operation (IAM action
9 * `iot:ListThings`, granted on `*` — the action does not support
10 * resource-level permissions).
11 *
12 * Lists things in the registry, optionally filtered by attribute or thing
13 * type. Provide the implementation with
14 * `Effect.provide(AWS.IoT.ListThingsHttp)`.
15 * ### Registry
16 * **Example:** List Things by Attribute
17 * ```typescript
18 * const listThings = yield* AWS.IoT.ListThings();
19 *
20 * const { things } = yield* listThings({
21 * attributeName: "location",
22 * attributeValue: "warehouse-a",
23 * });
24 * ```
25 *
26 * @binding
27 */
28export interface ListThings extends Binding.Service<
29 ListThings,
30 "AWS.IoT.ListThings",
31 () => Effect.Effect<
32 (
33 request?: ListThingsRequest,
34 ) => Effect.Effect<iot.ListThingsResponse, iot.ListThingsError>
35 >
36> {}
37
38export const ListThings = Binding.Service<ListThings>("AWS.IoT.ListThings");