import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as pulumiAws from "@pulumi/aws";
export declare class Cluster extends pulumi.ComponentResource {
    /**
     * Returns true if the given object is an instance of Cluster.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Cluster;
    /**
     * The cluster name
     */
    readonly clusterName: pulumi.Output<string>;
    /**
     * The Cluster control plane
     */
    readonly controlPlane: pulumi.Output<pulumiAws.eks.Cluster>;
    /**
     * The role created for karpenter nodes.
     */
    readonly karpenterNodeRole: pulumi.Output<pulumiAws.iam.Role | undefined>;
    /**
     * Name of the SQS queue that Karpenter uses for interruption events.
     */
    readonly karpenterQueueName: pulumi.Output<string | undefined>;
    /**
     * The role created for the karpenter controller.
     */
    readonly karpenterRole: pulumi.Output<pulumiAws.iam.Role | undefined>;
    /**
     * The kubeconfig for this cluster.
     */
    readonly kubeconfig: pulumi.Output<string>;
    /**
     * The OIDC provider for this cluster.
     */
    readonly oidcProvider: pulumi.Output<pulumiAws.iam.OpenIdConnectProvider>;
    /**
     * The system node group.
     */
    readonly systemNodes: pulumi.Output<pulumiAws.eks.NodeGroup>;
    /**
     * Create a Cluster resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ClusterArgs, opts?: pulumi.ComponentResourceOptions);
}
/**
 * The set of arguments for constructing a Cluster resource.
 */
export interface ClusterArgs {
    /**
     * The ARN of the AWS principal that should get admin access.
     */
    adminAccessPrincipal?: pulumi.Input<string>;
    /**
     * The version of the cert-manager helm chart to deploy.
     */
    certManagerVersion?: pulumi.Input<string>;
    /**
     * The ARN of the certificate to use for the ingress controller.
     */
    certificateArn?: pulumi.Input<string>;
    /**
     * Indicates whether or not the Amazon EKS private API server endpoint is enabled.
     */
    clusterEndpointPrivateAccess?: pulumi.Input<boolean>;
    /**
     * Indicates whether or not the Amazon EKS public API server endpoint is enabled.
     */
    clusterEndpointPublicAccess?: pulumi.Input<boolean>;
    clusterSubnetIds: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The version of the EKS cluster to create.
     */
    clusterVersion?: pulumi.Input<string>;
    /**
     * The version of the eks-iam-auth-controller helm chart to deploy.
     */
    eksIamAuthControllerVersion?: pulumi.Input<string>;
    /**
     * Whether to enable cert-manager with route 53 integration.
     */
    enableCertManager?: boolean;
    /**
     * Whether to enable cloudwatch container insights for EKS.
     */
    enableCloudWatchAgent?: boolean;
    /**
     * Whether to enable external dns with route 53 integration.
     */
    enableExternalDns?: boolean;
    /**
     * Whether to create an ingress controller for external traffic. (deprecated, use nginxIngressConfig.enableExternal)
     */
    enableExternalIngress?: boolean;
    /**
     * Whether to create an ingress controller for internal traffic. (deprecated, use nginxIngressConfig.enableInternal)
     */
    enableInternalIngress?: boolean;
    /**
     * Whether to enable karpenter.
     */
    enableKarpenter?: boolean;
    /**
     * Whether to enable the OTEL Distro for EKS.
     */
    enableOtel?: boolean;
    enabledClusterLogTypes?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The version of the external-dns helm chart to deploy.
     */
    externalDNSVersion?: pulumi.Input<string>;
    /**
     * Configuration for the ingress controller. (deprecated, use nginxIngressConfig)
     */
    ingressConfig?: pulumi.Input<inputs.IngressConfigArgs>;
    /**
     * The version of karpenter to deploy.
     */
    karpenterVersion?: pulumi.Input<string>;
    /**
     * The type of loadbalancer to provision.
     */
    lbType?: pulumi.Input<string>;
    /**
     * The email address to use to issue certificates from Lets Encrypt.
     */
    letsEncryptEmail?: string;
    /**
     * Configuration for the nginx ingress controllers.
     */
    nginxIngressConfig?: pulumi.Input<inputs.NginxIngressConfigArgs>;
    /**
     * The container registry to pull images from.
     */
    nginxIngressRegistry?: pulumi.Input<string>;
    /**
     * The tag to use for the nginx ingress controller images.
     */
    nginxIngressTag?: pulumi.Input<string>;
    /**
     * The version of the nginx ingress controller helm chart to deploy.
     */
    nginxIngressVersion?: pulumi.Input<string>;
    /**
     * The initial number of nodes in the system autoscaling group.
     */
    systemNodeDesiredCount?: pulumi.Input<number>;
    systemNodeInstanceTypes?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The maximum number of nodes in the system autoscaling group.
     */
    systemNodeMaxCount?: pulumi.Input<number>;
    /**
     * The minimum number of nodes in the system autoscaling group.
     */
    systemNodeMinCount?: pulumi.Input<number>;
    systemNodeSubnetIds: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Key-value map of tags to apply to the cluster.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Configuration for the Amazon VPC CNI add-on, including optional network policy support.
     */
    vpcCniConfig?: pulumi.Input<inputs.VpcCniConfigArgs>;
}
