1import * as kafka from "@distilled.cloud/gcp/managedkafka_v1";
2import { Credentials } from "@distilled.cloud/gcp/Credentials";
3import * as Layer from "effect/Layer";
4import * as HttpClient from "effect/http/HttpClient";
5import { makeManagedKafkaHttpBinding } from "./BindingHttp.ts";
6import type { Cluster } from "./Cluster.ts";
7import { GetCluster } from "./GetCluster.ts";
8
9/**
10 * HTTP implementation of {@link GetCluster}.
11 *
12 * @layer
13 * @provides GCP.ManagedKafka.GetCluster
14 */
15export const GetClusterHttp: Layer.Layer<
16 GetCluster,
17 never,
18 Credentials | HttpClient.HttpClient
19> = Layer.effect(
20 GetCluster,
21 makeManagedKafkaHttpBinding<Cluster>()<
22 kafka.GetProjectsLocationsClustersRequest,
23 kafka.Cluster,
24 kafka.GetProjectsLocationsClustersError
25 >({
26 tag: "GCP.ManagedKafka.GetCluster",
27 iam: { role: "roles/managedkafka.viewer", scopeByCondition: true },
28 operation: kafka.getProjectsLocationsClusters,
29 }),
30);