// generated from terraform resource schema
import * as cdktf from 'cdktf';
export class EksNodeGroupResourcesAutoscalingGroups extends cdktf.ComplexComputedList {
    // name - computed: true, optional: false, required: false
    get name() {
        return this.getStringAttribute('name');
    }
}
export class EksNodeGroupResources extends cdktf.ComplexComputedList {
    // autoscaling_groups - computed: true, optional: false, required: false
    get autoscalingGroups() {
        // Getting the computed value is not yet implemented
        return this.interpolationForAttribute('autoscaling_groups');
    }
    // remote_access_security_group_id - computed: true, optional: false, required: false
    get remoteAccessSecurityGroupId() {
        return this.getStringAttribute('remote_access_security_group_id');
    }
}
export function eksNodeGroupLaunchTemplateToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        name: cdktf.stringToTerraform(struct.name),
        version: cdktf.stringToTerraform(struct.version),
    };
}
export class EksNodeGroupLaunchTemplateOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._name !== undefined) {
            hasAnyValues = true;
            internalValueResult.name = this._name;
        }
        if (this._version !== undefined) {
            hasAnyValues = true;
            internalValueResult.version = this._version;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._name = undefined;
            this._version = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._name = value.name;
            this._version = value.version;
        }
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // name - computed: true, optional: true, required: false
    _name;
    get name() {
        return this.getStringAttribute('name');
    }
    set name(value) {
        this._name = value;
    }
    resetName() {
        this._name = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get nameInput() {
        return this._name;
    }
    // version - computed: false, optional: false, required: true
    _version;
    get version() {
        return this.getStringAttribute('version');
    }
    set version(value) {
        this._version = value;
    }
    // Temporarily expose input value. Use with caution.
    get versionInput() {
        return this._version;
    }
}
export function eksNodeGroupRemoteAccessToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        ec2_ssh_key: cdktf.stringToTerraform(struct.ec2SshKey),
        source_security_group_ids: cdktf.listMapper(cdktf.stringToTerraform)(struct.sourceSecurityGroupIds),
    };
}
export class EksNodeGroupRemoteAccessOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._ec2SshKey !== undefined) {
            hasAnyValues = true;
            internalValueResult.ec2SshKey = this._ec2SshKey;
        }
        if (this._sourceSecurityGroupIds !== undefined) {
            hasAnyValues = true;
            internalValueResult.sourceSecurityGroupIds = this._sourceSecurityGroupIds;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._ec2SshKey = undefined;
            this._sourceSecurityGroupIds = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._ec2SshKey = value.ec2SshKey;
            this._sourceSecurityGroupIds = value.sourceSecurityGroupIds;
        }
    }
    // ec2_ssh_key - computed: false, optional: true, required: false
    _ec2SshKey;
    get ec2SshKey() {
        return this.getStringAttribute('ec2_ssh_key');
    }
    set ec2SshKey(value) {
        this._ec2SshKey = value;
    }
    resetEc2SshKey() {
        this._ec2SshKey = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ec2SshKeyInput() {
        return this._ec2SshKey;
    }
    // source_security_group_ids - computed: false, optional: true, required: false
    _sourceSecurityGroupIds;
    get sourceSecurityGroupIds() {
        return cdktf.Fn.tolist(this.getListAttribute('source_security_group_ids'));
    }
    set sourceSecurityGroupIds(value) {
        this._sourceSecurityGroupIds = value;
    }
    resetSourceSecurityGroupIds() {
        this._sourceSecurityGroupIds = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sourceSecurityGroupIdsInput() {
        return this._sourceSecurityGroupIds;
    }
}
export function eksNodeGroupScalingConfigToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        desired_size: cdktf.numberToTerraform(struct.desiredSize),
        max_size: cdktf.numberToTerraform(struct.maxSize),
        min_size: cdktf.numberToTerraform(struct.minSize),
    };
}
export class EksNodeGroupScalingConfigOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._desiredSize !== undefined) {
            hasAnyValues = true;
            internalValueResult.desiredSize = this._desiredSize;
        }
        if (this._maxSize !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxSize = this._maxSize;
        }
        if (this._minSize !== undefined) {
            hasAnyValues = true;
            internalValueResult.minSize = this._minSize;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._desiredSize = undefined;
            this._maxSize = undefined;
            this._minSize = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._desiredSize = value.desiredSize;
            this._maxSize = value.maxSize;
            this._minSize = value.minSize;
        }
    }
    // desired_size - computed: false, optional: false, required: true
    _desiredSize;
    get desiredSize() {
        return this.getNumberAttribute('desired_size');
    }
    set desiredSize(value) {
        this._desiredSize = value;
    }
    // Temporarily expose input value. Use with caution.
    get desiredSizeInput() {
        return this._desiredSize;
    }
    // max_size - computed: false, optional: false, required: true
    _maxSize;
    get maxSize() {
        return this.getNumberAttribute('max_size');
    }
    set maxSize(value) {
        this._maxSize = value;
    }
    // Temporarily expose input value. Use with caution.
    get maxSizeInput() {
        return this._maxSize;
    }
    // min_size - computed: false, optional: false, required: true
    _minSize;
    get minSize() {
        return this.getNumberAttribute('min_size');
    }
    set minSize(value) {
        this._minSize = value;
    }
    // Temporarily expose input value. Use with caution.
    get minSizeInput() {
        return this._minSize;
    }
}
export function eksNodeGroupTaintToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        effect: cdktf.stringToTerraform(struct.effect),
        key: cdktf.stringToTerraform(struct.key),
        value: cdktf.stringToTerraform(struct.value),
    };
}
export function eksNodeGroupTimeoutsToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        create: cdktf.stringToTerraform(struct.create),
        delete: cdktf.stringToTerraform(struct.delete),
        update: cdktf.stringToTerraform(struct.update),
    };
}
export class EksNodeGroupTimeoutsOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._create !== undefined) {
            hasAnyValues = true;
            internalValueResult.create = this._create;
        }
        if (this._delete !== undefined) {
            hasAnyValues = true;
            internalValueResult.delete = this._delete;
        }
        if (this._update !== undefined) {
            hasAnyValues = true;
            internalValueResult.update = this._update;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._create = undefined;
            this._delete = undefined;
            this._update = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._create = value.create;
            this._delete = value.delete;
            this._update = value.update;
        }
    }
    // create - computed: false, optional: true, required: false
    _create;
    get create() {
        return this.getStringAttribute('create');
    }
    set create(value) {
        this._create = value;
    }
    resetCreate() {
        this._create = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get createInput() {
        return this._create;
    }
    // delete - computed: false, optional: true, required: false
    _delete;
    get delete() {
        return this.getStringAttribute('delete');
    }
    set delete(value) {
        this._delete = value;
    }
    resetDelete() {
        this._delete = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get deleteInput() {
        return this._delete;
    }
    // update - computed: false, optional: true, required: false
    _update;
    get update() {
        return this.getStringAttribute('update');
    }
    set update(value) {
        this._update = value;
    }
    resetUpdate() {
        this._update = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get updateInput() {
        return this._update;
    }
}
export function eksNodeGroupUpdateConfigToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        max_unavailable: cdktf.numberToTerraform(struct.maxUnavailable),
        max_unavailable_percentage: cdktf.numberToTerraform(struct.maxUnavailablePercentage),
    };
}
export class EksNodeGroupUpdateConfigOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._maxUnavailable !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxUnavailable = this._maxUnavailable;
        }
        if (this._maxUnavailablePercentage !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxUnavailablePercentage = this._maxUnavailablePercentage;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._maxUnavailable = undefined;
            this._maxUnavailablePercentage = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._maxUnavailable = value.maxUnavailable;
            this._maxUnavailablePercentage = value.maxUnavailablePercentage;
        }
    }
    // max_unavailable - computed: false, optional: true, required: false
    _maxUnavailable;
    get maxUnavailable() {
        return this.getNumberAttribute('max_unavailable');
    }
    set maxUnavailable(value) {
        this._maxUnavailable = value;
    }
    resetMaxUnavailable() {
        this._maxUnavailable = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxUnavailableInput() {
        return this._maxUnavailable;
    }
    // max_unavailable_percentage - computed: false, optional: true, required: false
    _maxUnavailablePercentage;
    get maxUnavailablePercentage() {
        return this.getNumberAttribute('max_unavailable_percentage');
    }
    set maxUnavailablePercentage(value) {
        this._maxUnavailablePercentage = value;
    }
    resetMaxUnavailablePercentage() {
        this._maxUnavailablePercentage = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxUnavailablePercentageInput() {
        return this._maxUnavailablePercentage;
    }
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/eks_node_group aws_eks_node_group}
*/
export class EksNodeGroup extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_eks_node_group";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/eks_node_group aws_eks_node_group} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options EksNodeGroupConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_eks_node_group',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._amiType = config.amiType;
        this._capacityType = config.capacityType;
        this._clusterName = config.clusterName;
        this._diskSize = config.diskSize;
        this._forceUpdateVersion = config.forceUpdateVersion;
        this._instanceTypes = config.instanceTypes;
        this._labels = config.labels;
        this._nodeGroupName = config.nodeGroupName;
        this._nodeGroupNamePrefix = config.nodeGroupNamePrefix;
        this._nodeRoleArn = config.nodeRoleArn;
        this._releaseVersion = config.releaseVersion;
        this._subnetIds = config.subnetIds;
        this._tags = config.tags;
        this._tagsAll = config.tagsAll;
        this._version = config.version;
        this._launchTemplate.internalValue = config.launchTemplate;
        this._remoteAccess.internalValue = config.remoteAccess;
        this._scalingConfig.internalValue = config.scalingConfig;
        this._taint = config.taint;
        this._timeouts.internalValue = config.timeouts;
        this._updateConfig.internalValue = config.updateConfig;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // ami_type - computed: true, optional: true, required: false
    _amiType;
    get amiType() {
        return this.getStringAttribute('ami_type');
    }
    set amiType(value) {
        this._amiType = value;
    }
    resetAmiType() {
        this._amiType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get amiTypeInput() {
        return this._amiType;
    }
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // capacity_type - computed: true, optional: true, required: false
    _capacityType;
    get capacityType() {
        return this.getStringAttribute('capacity_type');
    }
    set capacityType(value) {
        this._capacityType = value;
    }
    resetCapacityType() {
        this._capacityType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get capacityTypeInput() {
        return this._capacityType;
    }
    // cluster_name - computed: false, optional: false, required: true
    _clusterName;
    get clusterName() {
        return this.getStringAttribute('cluster_name');
    }
    set clusterName(value) {
        this._clusterName = value;
    }
    // Temporarily expose input value. Use with caution.
    get clusterNameInput() {
        return this._clusterName;
    }
    // disk_size - computed: true, optional: true, required: false
    _diskSize;
    get diskSize() {
        return this.getNumberAttribute('disk_size');
    }
    set diskSize(value) {
        this._diskSize = value;
    }
    resetDiskSize() {
        this._diskSize = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get diskSizeInput() {
        return this._diskSize;
    }
    // force_update_version - computed: false, optional: true, required: false
    _forceUpdateVersion;
    get forceUpdateVersion() {
        return this.getBooleanAttribute('force_update_version');
    }
    set forceUpdateVersion(value) {
        this._forceUpdateVersion = value;
    }
    resetForceUpdateVersion() {
        this._forceUpdateVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get forceUpdateVersionInput() {
        return this._forceUpdateVersion;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // instance_types - computed: true, optional: true, required: false
    _instanceTypes;
    get instanceTypes() {
        return this.getListAttribute('instance_types');
    }
    set instanceTypes(value) {
        this._instanceTypes = value;
    }
    resetInstanceTypes() {
        this._instanceTypes = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get instanceTypesInput() {
        return this._instanceTypes;
    }
    // labels - computed: false, optional: true, required: false
    _labels;
    get labels() {
        return this.getStringMapAttribute('labels');
    }
    set labels(value) {
        this._labels = value;
    }
    resetLabels() {
        this._labels = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get labelsInput() {
        return this._labels;
    }
    // node_group_name - computed: true, optional: true, required: false
    _nodeGroupName;
    get nodeGroupName() {
        return this.getStringAttribute('node_group_name');
    }
    set nodeGroupName(value) {
        this._nodeGroupName = value;
    }
    resetNodeGroupName() {
        this._nodeGroupName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get nodeGroupNameInput() {
        return this._nodeGroupName;
    }
    // node_group_name_prefix - computed: true, optional: true, required: false
    _nodeGroupNamePrefix;
    get nodeGroupNamePrefix() {
        return this.getStringAttribute('node_group_name_prefix');
    }
    set nodeGroupNamePrefix(value) {
        this._nodeGroupNamePrefix = value;
    }
    resetNodeGroupNamePrefix() {
        this._nodeGroupNamePrefix = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get nodeGroupNamePrefixInput() {
        return this._nodeGroupNamePrefix;
    }
    // node_role_arn - computed: false, optional: false, required: true
    _nodeRoleArn;
    get nodeRoleArn() {
        return this.getStringAttribute('node_role_arn');
    }
    set nodeRoleArn(value) {
        this._nodeRoleArn = value;
    }
    // Temporarily expose input value. Use with caution.
    get nodeRoleArnInput() {
        return this._nodeRoleArn;
    }
    // release_version - computed: true, optional: true, required: false
    _releaseVersion;
    get releaseVersion() {
        return this.getStringAttribute('release_version');
    }
    set releaseVersion(value) {
        this._releaseVersion = value;
    }
    resetReleaseVersion() {
        this._releaseVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get releaseVersionInput() {
        return this._releaseVersion;
    }
    // resources - computed: true, optional: false, required: false
    resources(index) {
        return new EksNodeGroupResources(this, 'resources', index, false);
    }
    // status - computed: true, optional: false, required: false
    get status() {
        return this.getStringAttribute('status');
    }
    // subnet_ids - computed: false, optional: false, required: true
    _subnetIds;
    get subnetIds() {
        return cdktf.Fn.tolist(this.getListAttribute('subnet_ids'));
    }
    set subnetIds(value) {
        this._subnetIds = value;
    }
    // Temporarily expose input value. Use with caution.
    get subnetIdsInput() {
        return this._subnetIds;
    }
    // tags - computed: false, optional: true, required: false
    _tags;
    get tags() {
        return this.getStringMapAttribute('tags');
    }
    set tags(value) {
        this._tags = value;
    }
    resetTags() {
        this._tags = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get tagsInput() {
        return this._tags;
    }
    // tags_all - computed: true, optional: true, required: false
    _tagsAll;
    get tagsAll() {
        return this.getStringMapAttribute('tags_all');
    }
    set tagsAll(value) {
        this._tagsAll = value;
    }
    resetTagsAll() {
        this._tagsAll = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get tagsAllInput() {
        return this._tagsAll;
    }
    // version - computed: true, optional: true, required: false
    _version;
    get version() {
        return this.getStringAttribute('version');
    }
    set version(value) {
        this._version = value;
    }
    resetVersion() {
        this._version = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get versionInput() {
        return this._version;
    }
    // launch_template - computed: false, optional: true, required: false
    _launchTemplate = new EksNodeGroupLaunchTemplateOutputReference(this, "launch_template", true);
    get launchTemplate() {
        return this._launchTemplate;
    }
    putLaunchTemplate(value) {
        this._launchTemplate.internalValue = value;
    }
    resetLaunchTemplate() {
        this._launchTemplate.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get launchTemplateInput() {
        return this._launchTemplate.internalValue;
    }
    // remote_access - computed: false, optional: true, required: false
    _remoteAccess = new EksNodeGroupRemoteAccessOutputReference(this, "remote_access", true);
    get remoteAccess() {
        return this._remoteAccess;
    }
    putRemoteAccess(value) {
        this._remoteAccess.internalValue = value;
    }
    resetRemoteAccess() {
        this._remoteAccess.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get remoteAccessInput() {
        return this._remoteAccess.internalValue;
    }
    // scaling_config - computed: false, optional: false, required: true
    _scalingConfig = new EksNodeGroupScalingConfigOutputReference(this, "scaling_config", true);
    get scalingConfig() {
        return this._scalingConfig;
    }
    putScalingConfig(value) {
        this._scalingConfig.internalValue = value;
    }
    // Temporarily expose input value. Use with caution.
    get scalingConfigInput() {
        return this._scalingConfig.internalValue;
    }
    // taint - computed: false, optional: true, required: false
    _taint;
    get taint() {
        // Getting the computed value is not yet implemented
        return cdktf.Token.asAny(cdktf.Fn.tolist(this.interpolationForAttribute('taint')));
    }
    set taint(value) {
        this._taint = value;
    }
    resetTaint() {
        this._taint = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get taintInput() {
        return this._taint;
    }
    // timeouts - computed: false, optional: true, required: false
    _timeouts = new EksNodeGroupTimeoutsOutputReference(this, "timeouts", true);
    get timeouts() {
        return this._timeouts;
    }
    putTimeouts(value) {
        this._timeouts.internalValue = value;
    }
    resetTimeouts() {
        this._timeouts.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get timeoutsInput() {
        return this._timeouts.internalValue;
    }
    // update_config - computed: false, optional: true, required: false
    _updateConfig = new EksNodeGroupUpdateConfigOutputReference(this, "update_config", true);
    get updateConfig() {
        return this._updateConfig;
    }
    putUpdateConfig(value) {
        this._updateConfig.internalValue = value;
    }
    resetUpdateConfig() {
        this._updateConfig.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get updateConfigInput() {
        return this._updateConfig.internalValue;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            ami_type: cdktf.stringToTerraform(this._amiType),
            capacity_type: cdktf.stringToTerraform(this._capacityType),
            cluster_name: cdktf.stringToTerraform(this._clusterName),
            disk_size: cdktf.numberToTerraform(this._diskSize),
            force_update_version: cdktf.booleanToTerraform(this._forceUpdateVersion),
            instance_types: cdktf.listMapper(cdktf.stringToTerraform)(this._instanceTypes),
            labels: cdktf.hashMapper(cdktf.stringToTerraform)(this._labels),
            node_group_name: cdktf.stringToTerraform(this._nodeGroupName),
            node_group_name_prefix: cdktf.stringToTerraform(this._nodeGroupNamePrefix),
            node_role_arn: cdktf.stringToTerraform(this._nodeRoleArn),
            release_version: cdktf.stringToTerraform(this._releaseVersion),
            subnet_ids: cdktf.listMapper(cdktf.stringToTerraform)(this._subnetIds),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
            tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll),
            version: cdktf.stringToTerraform(this._version),
            launch_template: eksNodeGroupLaunchTemplateToTerraform(this._launchTemplate.internalValue),
            remote_access: eksNodeGroupRemoteAccessToTerraform(this._remoteAccess.internalValue),
            scaling_config: eksNodeGroupScalingConfigToTerraform(this._scalingConfig.internalValue),
            taint: cdktf.listMapper(eksNodeGroupTaintToTerraform)(this._taint),
            timeouts: eksNodeGroupTimeoutsToTerraform(this._timeouts.internalValue),
            update_config: eksNodeGroupUpdateConfigToTerraform(this._updateConfig.internalValue),
        };
    }
}
//# sourceMappingURL=eks-node-group.js.map