1import type * as resourcegroups from "@distilled.cloud/aws/resource-groups";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Group } from "./Group.ts";
5
6/** Request for {@link ListGroupingStatuses} — the group is injected from the binding. */
7export type ListGroupingStatusesRequest = Omit<
8 resourcegroups.ListGroupingStatusesInput,
9 "Group"
10>;
11
12/**
13 * Runtime binding for `resource-groups:ListGroupingStatuses`.
14 *
15 * Returns the status of the last grouping or ungrouping action for each
16 * resource in the bound application {@link Group} — grouping members is
17 * asynchronous, so this is how a function tracks a `GroupResources` /
18 * `UngroupResources` request to `SUCCESS` or reads the failure reason. The
19 * group name is injected from the binding. Provide the implementation with
20 * `Effect.provide(AWS.ResourceGroups.ListGroupingStatusesHttp)`.
21 * ### Enumerating Group Members
22 * **Example:** Track A Pending Grouping Action
23 * ```typescript
24 * // init — bind the operation to the group
25 * const listGroupingStatuses = yield* AWS.ResourceGroups.ListGroupingStatuses(group);
26 *
27 * // runtime
28 * const { GroupingStatuses } = yield* listGroupingStatuses();
29 * const failed = (GroupingStatuses ?? []).filter((s) => s.Status === "FAILED");
30 * ```
31 *
32 * @binding
33 */
34export interface ListGroupingStatuses extends Binding.Service<
35 ListGroupingStatuses,
36 "AWS.ResourceGroups.ListGroupingStatuses",
37 (
38 group: Group,
39 ) => Effect.Effect<
40 (
41 request?: ListGroupingStatusesRequest,
42 ) => Effect.Effect<
43 resourcegroups.ListGroupingStatusesOutput,
44 resourcegroups.ListGroupingStatusesError
45 >
46 >
47> {}
48export const ListGroupingStatuses = Binding.Service<ListGroupingStatuses>(
49 "AWS.ResourceGroups.ListGroupingStatuses",
50);