1import type * as eks from "@distilled.cloud/aws/eks";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Cluster } from "./Cluster.ts";
5
6/**
7 * Runtime binding for `eks:DescribeIdentityProviderConfig`.
8 *
9 * Reads one OIDC identity provider configuration associated with the bound cluster — issuer URL, client ID, claim mappings, and association status.
10 * The cluster `clusterName` is injected from the bound {@link Cluster} and `eks:DescribeIdentityProviderConfig` is granted on the cluster's sub-resource ARNs.
11 * Provide the implementation with
12 * `Effect.provide(AWS.EKS.DescribeIdentityProviderConfigHttp)`.
13 * ### Identity Provider Configs
14 * **Example:** Read an OIDC Identity Provider Config
15 * ```typescript
16 * // init
17 * const describeIdentityProviderConfig =
18 * yield* AWS.EKS.DescribeIdentityProviderConfig(cluster);
19 *
20 * // runtime
21 * const { identityProviderConfig } = yield* describeIdentityProviderConfig({
22 * identityProviderConfig: { type: "oidc", name: "corp-oidc" },
23 * });
24 * const issuer = identityProviderConfig?.oidc?.issuerUrl;
25 * ```
26 *
27 * @binding
28 */
29export interface DescribeIdentityProviderConfig extends Binding.Service<
30 DescribeIdentityProviderConfig,
31 "AWS.EKS.DescribeIdentityProviderConfig",
32 (
33 cluster: Cluster,
34 ) => Effect.Effect<
35 (
36 request: Omit<eks.DescribeIdentityProviderConfigRequest, "clusterName">,
37 ) => Effect.Effect<
38 eks.DescribeIdentityProviderConfigResponse,
39 eks.DescribeIdentityProviderConfigError
40 >
41 >
42> {}
43export const DescribeIdentityProviderConfig =
44 Binding.Service<DescribeIdentityProviderConfig>(
45 "AWS.EKS.DescribeIdentityProviderConfig",
46 );