1import type * as qbusiness from "@distilled.cloud/aws/qbusiness";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Application } from "./Application.ts";
5
6/**
7 * `DisassociatePermission` request with `applicationId` injected from the bound application.
8 */
9export interface DisassociatePermissionRequest extends Omit<
10 qbusiness.DisassociatePermissionRequest,
11 "applicationId"
12> {}
13
14/**
15 * Runtime binding for the `DisassociatePermission` operation (IAM action
16 * `qbusiness:DisassociatePermission`), scoped to one {@link Application}.
17 *
18 * Removes a statement from the application's permission policy.
19 * Provide the implementation with
20 * `Effect.provide(AWS.QBusiness.DisassociatePermissionHttp)`.
21 *
22 * ### Cross-Account Permissions
23 * **Example:** Revoke a Permission Statement
24 * ```typescript
25 * const disassociate = yield* AWS.QBusiness.DisassociatePermission(app);
26 *
27 * yield* disassociate({ statementId: "isv-search" });
28 * ```
29 *
30 * @binding
31 */
32export interface DisassociatePermission extends Binding.Service<
33 DisassociatePermission,
34 "AWS.QBusiness.DisassociatePermission",
35 (
36 application: Application,
37 ) => Effect.Effect<
38 (
39 request: DisassociatePermissionRequest,
40 ) => Effect.Effect<
41 qbusiness.DisassociatePermissionResponse,
42 qbusiness.DisassociatePermissionError
43 >
44 >
45> {}
46export const DisassociatePermission = Binding.Service<DisassociatePermission>(
47 "AWS.QBusiness.DisassociatePermission",
48);