1import type * as ivsrealtime from "@distilled.cloud/aws/ivs-realtime";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Read a composition's detail — state, layout, destinations, and per
7 * destination progress. Compositions are addressed by the server-generated
8 * ARN returned by `StartComposition`.
9 *
10 * ### Compositing a Stage
11 * **Example:** Poll a composition's state
12 * ```typescript
13 * // init
14 * const getComposition = yield* IVSRealtime.GetComposition();
15 *
16 * // runtime
17 * const { composition } = yield* getComposition({ arn: compositionArn });
18 * // composition.state → "ACTIVE" | "STOPPED" | "FAILED" | …
19 * ```
20 *
21 * @binding
22 */
23export interface GetComposition extends Binding.Service<
24 GetComposition,
25 "AWS.IVSRealtime.GetComposition",
26 () => Effect.Effect<
27 (
28 request: ivsrealtime.GetCompositionRequest,
29 ) => Effect.Effect<
30 ivsrealtime.GetCompositionResponse,
31 ivsrealtime.GetCompositionError
32 >
33 >
34> {}
35export const GetComposition = Binding.Service<GetComposition>(
36 "AWS.IVSRealtime.GetComposition",
37);