import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Resource schema for AWS::EKS::Nodegroup
 *
 * ## Example Usage
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const eksNodegroup = new aws_native.eks.Nodegroup("eksNodegroup", {
 *     clusterName: "prod",
 *     nodeRole: "arn:aws:iam::012345678910:role/eksInstanceRole",
 *     scalingConfig: {
 *         minSize: 3,
 *         desiredSize: 5,
 *         maxSize: 7,
 *     },
 *     labels: {
 *         key1: "Value1",
 *         key2: "Value2",
 *     },
 *     subnets: [
 *         "subnet-6782e71e",
 *         "subnet-e7e761ac",
 *     ],
 * });
 *
 * ```
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const eksNodegroup = new aws_native.eks.Nodegroup("eksNodegroup", {
 *     clusterName: "prod",
 *     nodeRole: "arn:aws:iam::012345678910:role/eksInstanceRole",
 *     scalingConfig: {
 *         minSize: 3,
 *         desiredSize: 5,
 *         maxSize: 7,
 *     },
 *     labels: {
 *         key1: "Value1",
 *         key2: "Value2",
 *     },
 *     subnets: [
 *         "subnet-6782e71e",
 *         "subnet-e7e761ac",
 *     ],
 * });
 *
 * ```
 */
export declare class Nodegroup extends pulumi.CustomResource {
    /**
     * Get an existing Nodegroup resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): Nodegroup;
    /**
     * Returns true if the given object is an instance of Nodegroup.  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 Nodegroup;
    /**
     * The AMI type for your node group.
     */
    readonly amiType: pulumi.Output<string | undefined>;
    /**
     * The Amazon Resource Name (ARN) associated with the managed node group.
     */
    readonly arn: pulumi.Output<string>;
    readonly awsId: pulumi.Output<string>;
    /**
     * The capacity type of your managed node group.
     */
    readonly capacityType: pulumi.Output<string | undefined>;
    /**
     * Name of the cluster to create the node group in.
     */
    readonly clusterName: pulumi.Output<string>;
    /**
     * The root device disk size (in GiB) for your node group instances.
     */
    readonly diskSize: pulumi.Output<number | undefined>;
    /**
     * Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue.
     */
    readonly forceUpdateEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Specify the instance types for a node group.
     */
    readonly instanceTypes: pulumi.Output<string[] | undefined>;
    /**
     * The Kubernetes labels to be applied to the nodes in the node group when they are created.
     */
    readonly labels: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * An object representing a node group's launch template specification.
     */
    readonly launchTemplate: pulumi.Output<outputs.eks.NodegroupLaunchTemplateSpecification | undefined>;
    /**
     * The node auto repair configuration for node group.
     */
    readonly nodeRepairConfig: pulumi.Output<outputs.eks.NodegroupNodeRepairConfig | undefined>;
    /**
     * The Amazon Resource Name (ARN) of the IAM role to associate with your node group.
     */
    readonly nodeRole: pulumi.Output<string>;
    /**
     * The unique name to give your node group.
     */
    readonly nodegroupName: pulumi.Output<string | undefined>;
    /**
     * The AMI version of the Amazon EKS-optimized AMI to use with your node group.
     */
    readonly releaseVersion: pulumi.Output<string | undefined>;
    /**
     * The remote access (SSH) configuration to use with your node group.
     */
    readonly remoteAccess: pulumi.Output<outputs.eks.NodegroupRemoteAccess | undefined>;
    /**
     * The scaling configuration details for the Auto Scaling group that is created for your node group.
     */
    readonly scalingConfig: pulumi.Output<outputs.eks.NodegroupScalingConfig | undefined>;
    /**
     * The subnets to use for the Auto Scaling group that is created for your node group.
     */
    readonly subnets: pulumi.Output<string[]>;
    /**
     * The metadata, as key-value pairs, to apply to the node group to assist with categorization and organization. Follows same schema as Labels for consistency.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * The Kubernetes taints to be applied to the nodes in the node group when they are created.
     */
    readonly taints: pulumi.Output<outputs.eks.NodegroupTaint[] | undefined>;
    /**
     * The node group update configuration.
     */
    readonly updateConfig: pulumi.Output<outputs.eks.NodegroupUpdateConfig | undefined>;
    /**
     * The Kubernetes version to use for your managed nodes.
     */
    readonly version: pulumi.Output<string | undefined>;
    /**
     * The warm pool configuration details for the Auto Scaling group that is created for the node group.
     */
    readonly warmPoolConfig: pulumi.Output<outputs.eks.NodegroupWarmPoolConfig | undefined>;
    /**
     * Create a Nodegroup 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: NodegroupArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a Nodegroup resource.
 */
export interface NodegroupArgs {
    /**
     * The AMI type for your node group.
     */
    amiType?: pulumi.Input<string>;
    /**
     * The capacity type of your managed node group.
     */
    capacityType?: pulumi.Input<string>;
    /**
     * Name of the cluster to create the node group in.
     */
    clusterName: pulumi.Input<string>;
    /**
     * The root device disk size (in GiB) for your node group instances.
     */
    diskSize?: pulumi.Input<number>;
    /**
     * Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue.
     */
    forceUpdateEnabled?: pulumi.Input<boolean>;
    /**
     * Specify the instance types for a node group.
     */
    instanceTypes?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The Kubernetes labels to be applied to the nodes in the node group when they are created.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * An object representing a node group's launch template specification.
     */
    launchTemplate?: pulumi.Input<inputs.eks.NodegroupLaunchTemplateSpecificationArgs>;
    /**
     * The node auto repair configuration for node group.
     */
    nodeRepairConfig?: pulumi.Input<inputs.eks.NodegroupNodeRepairConfigArgs>;
    /**
     * The Amazon Resource Name (ARN) of the IAM role to associate with your node group.
     */
    nodeRole: pulumi.Input<string>;
    /**
     * The unique name to give your node group.
     */
    nodegroupName?: pulumi.Input<string>;
    /**
     * The AMI version of the Amazon EKS-optimized AMI to use with your node group.
     */
    releaseVersion?: pulumi.Input<string>;
    /**
     * The remote access (SSH) configuration to use with your node group.
     */
    remoteAccess?: pulumi.Input<inputs.eks.NodegroupRemoteAccessArgs>;
    /**
     * The scaling configuration details for the Auto Scaling group that is created for your node group.
     */
    scalingConfig?: pulumi.Input<inputs.eks.NodegroupScalingConfigArgs>;
    /**
     * The subnets to use for the Auto Scaling group that is created for your node group.
     */
    subnets: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The metadata, as key-value pairs, to apply to the node group to assist with categorization and organization. Follows same schema as Labels for consistency.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * The Kubernetes taints to be applied to the nodes in the node group when they are created.
     */
    taints?: pulumi.Input<pulumi.Input<inputs.eks.NodegroupTaintArgs>[]>;
    /**
     * The node group update configuration.
     */
    updateConfig?: pulumi.Input<inputs.eks.NodegroupUpdateConfigArgs>;
    /**
     * The Kubernetes version to use for your managed nodes.
     */
    version?: pulumi.Input<string>;
    /**
     * The warm pool configuration details for the Auto Scaling group that is created for the node group.
     */
    warmPoolConfig?: pulumi.Input<inputs.eks.NodegroupWarmPoolConfigArgs>;
}
