1import type * as mq from "@distilled.cloud/aws/mq";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Broker } from "./Broker.ts";
5
6/**
7 * Runtime binding for the `DescribeUser` operation (IAM action
8 * `mq:DescribeUser`), scoped to one {@link Broker}.
9 *
10 * Reads a broker user's attributes — console access, groups, and any
11 * pending change staged for the next reboot. Provide the implementation
12 * with `Effect.provide(AWS.MQ.DescribeUserHttp)`.
13 * ### Managing Users
14 * **Example:** Inspect a User
15 * ```typescript
16 * const describeUser = yield* MQ.DescribeUser(broker);
17 *
18 * const user = yield* describeUser({ Username: "tenant-42" });
19 * // user.Groups, user.Pending?.PendingChange → "CREATE" | "UPDATE" | "DELETE"
20 * ```
21 *
22 * @binding
23 */
24export interface DescribeUser extends Binding.Service<
25 DescribeUser,
26 "AWS.MQ.DescribeUser",
27 (
28 broker: Broker,
29 ) => Effect.Effect<
30 (
31 request: Omit<mq.DescribeUserRequest, "BrokerId">,
32 ) => Effect.Effect<mq.DescribeUserResponse, mq.DescribeUserError>
33 >
34> {}
35export const DescribeUser = Binding.Service<DescribeUser>(
36 "AWS.MQ.DescribeUser",
37);