1import type * as lf from "@distilled.cloud/aws/lakeformation";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Request for {@link ListPermissions}.
7 */
8export interface ListPermissionsRequest extends lf.ListPermissionsRequest {}
9
10/**
11 * Runtime binding for `lakeformation:ListPermissions`.
12 *
13 * Lists the Lake Formation permission grants visible to the caller,
14 * optionally filtered by principal or resource — runtime authorization
15 * introspection. Provide the implementation with
16 * `Effect.provide(AWS.LakeFormation.ListPermissionsHttp)`.
17 * ### Auditing Permissions
18 * **Example:** List Grants on a Database
19 * ```typescript
20 * // init — account-level binding takes no resource
21 * const listPermissions = yield* AWS.LakeFormation.ListPermissions();
22 *
23 * // runtime
24 * const { PrincipalResourcePermissions } = yield* listPermissions({
25 * Resource: { Database: { Name: database.databaseName } },
26 * });
27 * ```
28 *
29 * @binding
30 */
31export interface ListPermissions extends Binding.Service<
32 ListPermissions,
33 "AWS.LakeFormation.ListPermissions",
34 () => Effect.Effect<
35 (
36 request?: ListPermissionsRequest,
37 ) => Effect.Effect<lf.ListPermissionsResponse, lf.ListPermissionsError>
38 >
39> {}
40
41export const ListPermissions = Binding.Service<ListPermissions>(
42 "AWS.LakeFormation.ListPermissions",
43);