1import type * as emrc from "@distilled.cloud/aws/emr-containers";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { VirtualCluster } from "./VirtualCluster.ts";
5
6/**
7 * Runtime binding for `emr-containers:DescribeVirtualCluster`.
8 *
9 * Reads the bound {@link VirtualCluster}'s live state — its lifecycle state
10 * (`RUNNING`/`TERMINATING`/`TERMINATED`/`ARRESTED`), the backing EKS
11 * container provider, and the attached security configuration. The virtual
12 * cluster ID is injected from the binding — the runtime callable takes no
13 * arguments. Provide the implementation with
14 * `Effect.provide(AWS.EMRContainers.DescribeVirtualClusterHttp)`.
15 * ### Virtual Clusters
16 * **Example:** Read The Bound Virtual Cluster
17 * ```typescript
18 * // init — bind the operation to the virtual cluster
19 * const describeVirtualCluster =
20 * yield* AWS.EMRContainers.DescribeVirtualCluster(virtualCluster);
21 *
22 * // runtime
23 * const { virtualCluster } = yield* describeVirtualCluster();
24 * yield* Effect.log(`virtual cluster is ${virtualCluster?.state}`);
25 * ```
26 *
27 * @binding
28 */
29export interface DescribeVirtualCluster extends Binding.Service<
30 DescribeVirtualCluster,
31 "AWS.EMRContainers.DescribeVirtualCluster",
32 (
33 virtualCluster: VirtualCluster,
34 ) => Effect.Effect<
35 () => Effect.Effect<
36 emrc.DescribeVirtualClusterResponse,
37 emrc.DescribeVirtualClusterError
38 >
39 >
40> {}
41export const DescribeVirtualCluster = Binding.Service<DescribeVirtualCluster>(
42 "AWS.EMRContainers.DescribeVirtualCluster",
43);