1import type * as ram from "@distilled.cloud/aws/ram";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `ram:ListPrincipals`.
7 *
8 * Lists the principals that you are sharing resources with or that are sharing resources with you.
9 * Account-level operation — the target shares, invitations, and permissions
10 * are chosen per request at runtime, so the binding takes no resource
11 * argument. Provide the implementation with
12 * `Effect.provide(AWS.RAM.ListPrincipalsHttp)`.
13 * ### Discovering Shares & Shared Resources
14 * **Example:** List the Principals You Share With
15 * ```typescript
16 * // init — account-level binding, no resource argument
17 * const listPrincipals = yield* AWS.RAM.ListPrincipals();
18 *
19 * // runtime
20 * const { principals } = yield* listPrincipals({ resourceOwner: "SELF" });
21 * ```
22 *
23 * @binding
24 */
25export interface ListPrincipals extends Binding.Service<
26 ListPrincipals,
27 "AWS.RAM.ListPrincipals",
28 () => Effect.Effect<
29 (
30 request: ram.ListPrincipalsRequest,
31 ) => Effect.Effect<ram.ListPrincipalsResponse, ram.ListPrincipalsError>
32 >
33> {}
34export const ListPrincipals = Binding.Service<ListPrincipals>(
35 "AWS.RAM.ListPrincipals",
36);