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 `DeleteUser` operation (IAM action
8 * `mq:DeleteUser`), scoped to one {@link Broker}.
9 *
10 * Deletes a broker user — e.g. revoking per-tenant credentials at runtime.
11 * On ActiveMQ the change is staged and applied at the next broker reboot or
12 * maintenance window; on RabbitMQ it takes effect immediately. Provide the
13 * implementation with `Effect.provide(AWS.MQ.DeleteUserHttp)`.
14 * ### Managing Users
15 * **Example:** Revoke a User
16 * ```typescript
17 * const deleteUser = yield* MQ.DeleteUser(broker);
18 *
19 * yield* deleteUser({ Username: "tenant-42" });
20 * ```
21 *
22 * @binding
23 */
24export interface DeleteUser extends Binding.Service<
25 DeleteUser,
26 "AWS.MQ.DeleteUser",
27 (
28 broker: Broker,
29 ) => Effect.Effect<
30 (
31 request: Omit<mq.DeleteUserRequest, "BrokerId">,
32 ) => Effect.Effect<mq.DeleteUserResponse, mq.DeleteUserError>
33 >
34> {}
35export const DeleteUser = Binding.Service<DeleteUser>("AWS.MQ.DeleteUser");