// generated from terraform resource schema
import * as cdktf from 'cdktf';
export function opsworksInstanceEbsBlockDeviceToTerraform(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 {
        delete_on_termination: cdktf.booleanToTerraform(struct.deleteOnTermination),
        device_name: cdktf.stringToTerraform(struct.deviceName),
        iops: cdktf.numberToTerraform(struct.iops),
        snapshot_id: cdktf.stringToTerraform(struct.snapshotId),
        volume_size: cdktf.numberToTerraform(struct.volumeSize),
        volume_type: cdktf.stringToTerraform(struct.volumeType),
    };
}
export function opsworksInstanceEphemeralBlockDeviceToTerraform(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 {
        device_name: cdktf.stringToTerraform(struct.deviceName),
        virtual_name: cdktf.stringToTerraform(struct.virtualName),
    };
}
export function opsworksInstanceRootBlockDeviceToTerraform(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 {
        delete_on_termination: cdktf.booleanToTerraform(struct.deleteOnTermination),
        iops: cdktf.numberToTerraform(struct.iops),
        volume_size: cdktf.numberToTerraform(struct.volumeSize),
        volume_type: cdktf.stringToTerraform(struct.volumeType),
    };
}
export function opsworksInstanceTimeoutsToTerraform(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 OpsworksInstanceTimeoutsOutputReference 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;
    }
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/opsworks_instance aws_opsworks_instance}
*/
export class OpsworksInstance extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_opsworks_instance";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/opsworks_instance aws_opsworks_instance} 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 OpsworksInstanceConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_opsworks_instance',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._agentVersion = config.agentVersion;
        this._amiId = config.amiId;
        this._architecture = config.architecture;
        this._autoScalingType = config.autoScalingType;
        this._availabilityZone = config.availabilityZone;
        this._createdAt = config.createdAt;
        this._deleteEbs = config.deleteEbs;
        this._deleteEip = config.deleteEip;
        this._ebsOptimized = config.ebsOptimized;
        this._ecsClusterArn = config.ecsClusterArn;
        this._elasticIp = config.elasticIp;
        this._hostname = config.hostname;
        this._infrastructureClass = config.infrastructureClass;
        this._installUpdatesOnBoot = config.installUpdatesOnBoot;
        this._instanceProfileArn = config.instanceProfileArn;
        this._instanceType = config.instanceType;
        this._lastServiceErrorId = config.lastServiceErrorId;
        this._layerIds = config.layerIds;
        this._os = config.os;
        this._platform = config.platform;
        this._privateDns = config.privateDns;
        this._privateIp = config.privateIp;
        this._publicDns = config.publicDns;
        this._publicIp = config.publicIp;
        this._registeredBy = config.registeredBy;
        this._reportedAgentVersion = config.reportedAgentVersion;
        this._reportedOsFamily = config.reportedOsFamily;
        this._reportedOsName = config.reportedOsName;
        this._reportedOsVersion = config.reportedOsVersion;
        this._rootDeviceType = config.rootDeviceType;
        this._rootDeviceVolumeId = config.rootDeviceVolumeId;
        this._securityGroupIds = config.securityGroupIds;
        this._sshHostDsaKeyFingerprint = config.sshHostDsaKeyFingerprint;
        this._sshHostRsaKeyFingerprint = config.sshHostRsaKeyFingerprint;
        this._sshKeyName = config.sshKeyName;
        this._stackId = config.stackId;
        this._state = config.state;
        this._status = config.status;
        this._subnetId = config.subnetId;
        this._tenancy = config.tenancy;
        this._virtualizationType = config.virtualizationType;
        this._ebsBlockDevice = config.ebsBlockDevice;
        this._ephemeralBlockDevice = config.ephemeralBlockDevice;
        this._rootBlockDevice = config.rootBlockDevice;
        this._timeouts.internalValue = config.timeouts;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // agent_version - computed: false, optional: true, required: false
    _agentVersion;
    get agentVersion() {
        return this.getStringAttribute('agent_version');
    }
    set agentVersion(value) {
        this._agentVersion = value;
    }
    resetAgentVersion() {
        this._agentVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get agentVersionInput() {
        return this._agentVersion;
    }
    // ami_id - computed: true, optional: true, required: false
    _amiId;
    get amiId() {
        return this.getStringAttribute('ami_id');
    }
    set amiId(value) {
        this._amiId = value;
    }
    resetAmiId() {
        this._amiId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get amiIdInput() {
        return this._amiId;
    }
    // architecture - computed: false, optional: true, required: false
    _architecture;
    get architecture() {
        return this.getStringAttribute('architecture');
    }
    set architecture(value) {
        this._architecture = value;
    }
    resetArchitecture() {
        this._architecture = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get architectureInput() {
        return this._architecture;
    }
    // auto_scaling_type - computed: false, optional: true, required: false
    _autoScalingType;
    get autoScalingType() {
        return this.getStringAttribute('auto_scaling_type');
    }
    set autoScalingType(value) {
        this._autoScalingType = value;
    }
    resetAutoScalingType() {
        this._autoScalingType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get autoScalingTypeInput() {
        return this._autoScalingType;
    }
    // availability_zone - computed: true, optional: true, required: false
    _availabilityZone;
    get availabilityZone() {
        return this.getStringAttribute('availability_zone');
    }
    set availabilityZone(value) {
        this._availabilityZone = value;
    }
    resetAvailabilityZone() {
        this._availabilityZone = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get availabilityZoneInput() {
        return this._availabilityZone;
    }
    // created_at - computed: true, optional: true, required: false
    _createdAt;
    get createdAt() {
        return this.getStringAttribute('created_at');
    }
    set createdAt(value) {
        this._createdAt = value;
    }
    resetCreatedAt() {
        this._createdAt = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get createdAtInput() {
        return this._createdAt;
    }
    // delete_ebs - computed: false, optional: true, required: false
    _deleteEbs;
    get deleteEbs() {
        return this.getBooleanAttribute('delete_ebs');
    }
    set deleteEbs(value) {
        this._deleteEbs = value;
    }
    resetDeleteEbs() {
        this._deleteEbs = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get deleteEbsInput() {
        return this._deleteEbs;
    }
    // delete_eip - computed: false, optional: true, required: false
    _deleteEip;
    get deleteEip() {
        return this.getBooleanAttribute('delete_eip');
    }
    set deleteEip(value) {
        this._deleteEip = value;
    }
    resetDeleteEip() {
        this._deleteEip = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get deleteEipInput() {
        return this._deleteEip;
    }
    // ebs_optimized - computed: false, optional: true, required: false
    _ebsOptimized;
    get ebsOptimized() {
        return this.getBooleanAttribute('ebs_optimized');
    }
    set ebsOptimized(value) {
        this._ebsOptimized = value;
    }
    resetEbsOptimized() {
        this._ebsOptimized = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ebsOptimizedInput() {
        return this._ebsOptimized;
    }
    // ec2_instance_id - computed: true, optional: false, required: false
    get ec2InstanceId() {
        return this.getStringAttribute('ec2_instance_id');
    }
    // ecs_cluster_arn - computed: true, optional: true, required: false
    _ecsClusterArn;
    get ecsClusterArn() {
        return this.getStringAttribute('ecs_cluster_arn');
    }
    set ecsClusterArn(value) {
        this._ecsClusterArn = value;
    }
    resetEcsClusterArn() {
        this._ecsClusterArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ecsClusterArnInput() {
        return this._ecsClusterArn;
    }
    // elastic_ip - computed: true, optional: true, required: false
    _elasticIp;
    get elasticIp() {
        return this.getStringAttribute('elastic_ip');
    }
    set elasticIp(value) {
        this._elasticIp = value;
    }
    resetElasticIp() {
        this._elasticIp = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get elasticIpInput() {
        return this._elasticIp;
    }
    // hostname - computed: true, optional: true, required: false
    _hostname;
    get hostname() {
        return this.getStringAttribute('hostname');
    }
    set hostname(value) {
        this._hostname = value;
    }
    resetHostname() {
        this._hostname = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get hostnameInput() {
        return this._hostname;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // infrastructure_class - computed: true, optional: true, required: false
    _infrastructureClass;
    get infrastructureClass() {
        return this.getStringAttribute('infrastructure_class');
    }
    set infrastructureClass(value) {
        this._infrastructureClass = value;
    }
    resetInfrastructureClass() {
        this._infrastructureClass = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get infrastructureClassInput() {
        return this._infrastructureClass;
    }
    // install_updates_on_boot - computed: false, optional: true, required: false
    _installUpdatesOnBoot;
    get installUpdatesOnBoot() {
        return this.getBooleanAttribute('install_updates_on_boot');
    }
    set installUpdatesOnBoot(value) {
        this._installUpdatesOnBoot = value;
    }
    resetInstallUpdatesOnBoot() {
        this._installUpdatesOnBoot = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get installUpdatesOnBootInput() {
        return this._installUpdatesOnBoot;
    }
    // instance_profile_arn - computed: true, optional: true, required: false
    _instanceProfileArn;
    get instanceProfileArn() {
        return this.getStringAttribute('instance_profile_arn');
    }
    set instanceProfileArn(value) {
        this._instanceProfileArn = value;
    }
    resetInstanceProfileArn() {
        this._instanceProfileArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get instanceProfileArnInput() {
        return this._instanceProfileArn;
    }
    // instance_type - computed: false, optional: true, required: false
    _instanceType;
    get instanceType() {
        return this.getStringAttribute('instance_type');
    }
    set instanceType(value) {
        this._instanceType = value;
    }
    resetInstanceType() {
        this._instanceType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get instanceTypeInput() {
        return this._instanceType;
    }
    // last_service_error_id - computed: true, optional: true, required: false
    _lastServiceErrorId;
    get lastServiceErrorId() {
        return this.getStringAttribute('last_service_error_id');
    }
    set lastServiceErrorId(value) {
        this._lastServiceErrorId = value;
    }
    resetLastServiceErrorId() {
        this._lastServiceErrorId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get lastServiceErrorIdInput() {
        return this._lastServiceErrorId;
    }
    // layer_ids - computed: false, optional: false, required: true
    _layerIds;
    get layerIds() {
        return this.getListAttribute('layer_ids');
    }
    set layerIds(value) {
        this._layerIds = value;
    }
    // Temporarily expose input value. Use with caution.
    get layerIdsInput() {
        return this._layerIds;
    }
    // os - computed: true, optional: true, required: false
    _os;
    get os() {
        return this.getStringAttribute('os');
    }
    set os(value) {
        this._os = value;
    }
    resetOs() {
        this._os = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get osInput() {
        return this._os;
    }
    // platform - computed: true, optional: true, required: false
    _platform;
    get platform() {
        return this.getStringAttribute('platform');
    }
    set platform(value) {
        this._platform = value;
    }
    resetPlatform() {
        this._platform = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get platformInput() {
        return this._platform;
    }
    // private_dns - computed: true, optional: true, required: false
    _privateDns;
    get privateDns() {
        return this.getStringAttribute('private_dns');
    }
    set privateDns(value) {
        this._privateDns = value;
    }
    resetPrivateDns() {
        this._privateDns = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get privateDnsInput() {
        return this._privateDns;
    }
    // private_ip - computed: true, optional: true, required: false
    _privateIp;
    get privateIp() {
        return this.getStringAttribute('private_ip');
    }
    set privateIp(value) {
        this._privateIp = value;
    }
    resetPrivateIp() {
        this._privateIp = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get privateIpInput() {
        return this._privateIp;
    }
    // public_dns - computed: true, optional: true, required: false
    _publicDns;
    get publicDns() {
        return this.getStringAttribute('public_dns');
    }
    set publicDns(value) {
        this._publicDns = value;
    }
    resetPublicDns() {
        this._publicDns = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get publicDnsInput() {
        return this._publicDns;
    }
    // public_ip - computed: true, optional: true, required: false
    _publicIp;
    get publicIp() {
        return this.getStringAttribute('public_ip');
    }
    set publicIp(value) {
        this._publicIp = value;
    }
    resetPublicIp() {
        this._publicIp = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get publicIpInput() {
        return this._publicIp;
    }
    // registered_by - computed: true, optional: true, required: false
    _registeredBy;
    get registeredBy() {
        return this.getStringAttribute('registered_by');
    }
    set registeredBy(value) {
        this._registeredBy = value;
    }
    resetRegisteredBy() {
        this._registeredBy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get registeredByInput() {
        return this._registeredBy;
    }
    // reported_agent_version - computed: true, optional: true, required: false
    _reportedAgentVersion;
    get reportedAgentVersion() {
        return this.getStringAttribute('reported_agent_version');
    }
    set reportedAgentVersion(value) {
        this._reportedAgentVersion = value;
    }
    resetReportedAgentVersion() {
        this._reportedAgentVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get reportedAgentVersionInput() {
        return this._reportedAgentVersion;
    }
    // reported_os_family - computed: true, optional: true, required: false
    _reportedOsFamily;
    get reportedOsFamily() {
        return this.getStringAttribute('reported_os_family');
    }
    set reportedOsFamily(value) {
        this._reportedOsFamily = value;
    }
    resetReportedOsFamily() {
        this._reportedOsFamily = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get reportedOsFamilyInput() {
        return this._reportedOsFamily;
    }
    // reported_os_name - computed: true, optional: true, required: false
    _reportedOsName;
    get reportedOsName() {
        return this.getStringAttribute('reported_os_name');
    }
    set reportedOsName(value) {
        this._reportedOsName = value;
    }
    resetReportedOsName() {
        this._reportedOsName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get reportedOsNameInput() {
        return this._reportedOsName;
    }
    // reported_os_version - computed: true, optional: true, required: false
    _reportedOsVersion;
    get reportedOsVersion() {
        return this.getStringAttribute('reported_os_version');
    }
    set reportedOsVersion(value) {
        this._reportedOsVersion = value;
    }
    resetReportedOsVersion() {
        this._reportedOsVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get reportedOsVersionInput() {
        return this._reportedOsVersion;
    }
    // root_device_type - computed: true, optional: true, required: false
    _rootDeviceType;
    get rootDeviceType() {
        return this.getStringAttribute('root_device_type');
    }
    set rootDeviceType(value) {
        this._rootDeviceType = value;
    }
    resetRootDeviceType() {
        this._rootDeviceType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get rootDeviceTypeInput() {
        return this._rootDeviceType;
    }
    // root_device_volume_id - computed: true, optional: true, required: false
    _rootDeviceVolumeId;
    get rootDeviceVolumeId() {
        return this.getStringAttribute('root_device_volume_id');
    }
    set rootDeviceVolumeId(value) {
        this._rootDeviceVolumeId = value;
    }
    resetRootDeviceVolumeId() {
        this._rootDeviceVolumeId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get rootDeviceVolumeIdInput() {
        return this._rootDeviceVolumeId;
    }
    // security_group_ids - computed: true, optional: true, required: false
    _securityGroupIds;
    get securityGroupIds() {
        return this.getListAttribute('security_group_ids');
    }
    set securityGroupIds(value) {
        this._securityGroupIds = value;
    }
    resetSecurityGroupIds() {
        this._securityGroupIds = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get securityGroupIdsInput() {
        return this._securityGroupIds;
    }
    // ssh_host_dsa_key_fingerprint - computed: true, optional: true, required: false
    _sshHostDsaKeyFingerprint;
    get sshHostDsaKeyFingerprint() {
        return this.getStringAttribute('ssh_host_dsa_key_fingerprint');
    }
    set sshHostDsaKeyFingerprint(value) {
        this._sshHostDsaKeyFingerprint = value;
    }
    resetSshHostDsaKeyFingerprint() {
        this._sshHostDsaKeyFingerprint = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sshHostDsaKeyFingerprintInput() {
        return this._sshHostDsaKeyFingerprint;
    }
    // ssh_host_rsa_key_fingerprint - computed: true, optional: true, required: false
    _sshHostRsaKeyFingerprint;
    get sshHostRsaKeyFingerprint() {
        return this.getStringAttribute('ssh_host_rsa_key_fingerprint');
    }
    set sshHostRsaKeyFingerprint(value) {
        this._sshHostRsaKeyFingerprint = value;
    }
    resetSshHostRsaKeyFingerprint() {
        this._sshHostRsaKeyFingerprint = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sshHostRsaKeyFingerprintInput() {
        return this._sshHostRsaKeyFingerprint;
    }
    // ssh_key_name - computed: true, optional: true, required: false
    _sshKeyName;
    get sshKeyName() {
        return this.getStringAttribute('ssh_key_name');
    }
    set sshKeyName(value) {
        this._sshKeyName = value;
    }
    resetSshKeyName() {
        this._sshKeyName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sshKeyNameInput() {
        return this._sshKeyName;
    }
    // stack_id - computed: false, optional: false, required: true
    _stackId;
    get stackId() {
        return this.getStringAttribute('stack_id');
    }
    set stackId(value) {
        this._stackId = value;
    }
    // Temporarily expose input value. Use with caution.
    get stackIdInput() {
        return this._stackId;
    }
    // state - computed: false, optional: true, required: false
    _state;
    get state() {
        return this.getStringAttribute('state');
    }
    set state(value) {
        this._state = value;
    }
    resetState() {
        this._state = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get stateInput() {
        return this._state;
    }
    // status - computed: true, optional: true, required: false
    _status;
    get status() {
        return this.getStringAttribute('status');
    }
    set status(value) {
        this._status = value;
    }
    resetStatus() {
        this._status = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get statusInput() {
        return this._status;
    }
    // subnet_id - computed: true, optional: true, required: false
    _subnetId;
    get subnetId() {
        return this.getStringAttribute('subnet_id');
    }
    set subnetId(value) {
        this._subnetId = value;
    }
    resetSubnetId() {
        this._subnetId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get subnetIdInput() {
        return this._subnetId;
    }
    // tenancy - computed: true, optional: true, required: false
    _tenancy;
    get tenancy() {
        return this.getStringAttribute('tenancy');
    }
    set tenancy(value) {
        this._tenancy = value;
    }
    resetTenancy() {
        this._tenancy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get tenancyInput() {
        return this._tenancy;
    }
    // virtualization_type - computed: true, optional: true, required: false
    _virtualizationType;
    get virtualizationType() {
        return this.getStringAttribute('virtualization_type');
    }
    set virtualizationType(value) {
        this._virtualizationType = value;
    }
    resetVirtualizationType() {
        this._virtualizationType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get virtualizationTypeInput() {
        return this._virtualizationType;
    }
    // ebs_block_device - computed: false, optional: true, required: false
    _ebsBlockDevice;
    get ebsBlockDevice() {
        // Getting the computed value is not yet implemented
        return cdktf.Token.asAny(cdktf.Fn.tolist(this.interpolationForAttribute('ebs_block_device')));
    }
    set ebsBlockDevice(value) {
        this._ebsBlockDevice = value;
    }
    resetEbsBlockDevice() {
        this._ebsBlockDevice = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ebsBlockDeviceInput() {
        return this._ebsBlockDevice;
    }
    // ephemeral_block_device - computed: false, optional: true, required: false
    _ephemeralBlockDevice;
    get ephemeralBlockDevice() {
        // Getting the computed value is not yet implemented
        return cdktf.Token.asAny(cdktf.Fn.tolist(this.interpolationForAttribute('ephemeral_block_device')));
    }
    set ephemeralBlockDevice(value) {
        this._ephemeralBlockDevice = value;
    }
    resetEphemeralBlockDevice() {
        this._ephemeralBlockDevice = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ephemeralBlockDeviceInput() {
        return this._ephemeralBlockDevice;
    }
    // root_block_device - computed: false, optional: true, required: false
    _rootBlockDevice;
    get rootBlockDevice() {
        // Getting the computed value is not yet implemented
        return cdktf.Token.asAny(cdktf.Fn.tolist(this.interpolationForAttribute('root_block_device')));
    }
    set rootBlockDevice(value) {
        this._rootBlockDevice = value;
    }
    resetRootBlockDevice() {
        this._rootBlockDevice = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get rootBlockDeviceInput() {
        return this._rootBlockDevice;
    }
    // timeouts - computed: false, optional: true, required: false
    _timeouts = new OpsworksInstanceTimeoutsOutputReference(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;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            agent_version: cdktf.stringToTerraform(this._agentVersion),
            ami_id: cdktf.stringToTerraform(this._amiId),
            architecture: cdktf.stringToTerraform(this._architecture),
            auto_scaling_type: cdktf.stringToTerraform(this._autoScalingType),
            availability_zone: cdktf.stringToTerraform(this._availabilityZone),
            created_at: cdktf.stringToTerraform(this._createdAt),
            delete_ebs: cdktf.booleanToTerraform(this._deleteEbs),
            delete_eip: cdktf.booleanToTerraform(this._deleteEip),
            ebs_optimized: cdktf.booleanToTerraform(this._ebsOptimized),
            ecs_cluster_arn: cdktf.stringToTerraform(this._ecsClusterArn),
            elastic_ip: cdktf.stringToTerraform(this._elasticIp),
            hostname: cdktf.stringToTerraform(this._hostname),
            infrastructure_class: cdktf.stringToTerraform(this._infrastructureClass),
            install_updates_on_boot: cdktf.booleanToTerraform(this._installUpdatesOnBoot),
            instance_profile_arn: cdktf.stringToTerraform(this._instanceProfileArn),
            instance_type: cdktf.stringToTerraform(this._instanceType),
            last_service_error_id: cdktf.stringToTerraform(this._lastServiceErrorId),
            layer_ids: cdktf.listMapper(cdktf.stringToTerraform)(this._layerIds),
            os: cdktf.stringToTerraform(this._os),
            platform: cdktf.stringToTerraform(this._platform),
            private_dns: cdktf.stringToTerraform(this._privateDns),
            private_ip: cdktf.stringToTerraform(this._privateIp),
            public_dns: cdktf.stringToTerraform(this._publicDns),
            public_ip: cdktf.stringToTerraform(this._publicIp),
            registered_by: cdktf.stringToTerraform(this._registeredBy),
            reported_agent_version: cdktf.stringToTerraform(this._reportedAgentVersion),
            reported_os_family: cdktf.stringToTerraform(this._reportedOsFamily),
            reported_os_name: cdktf.stringToTerraform(this._reportedOsName),
            reported_os_version: cdktf.stringToTerraform(this._reportedOsVersion),
            root_device_type: cdktf.stringToTerraform(this._rootDeviceType),
            root_device_volume_id: cdktf.stringToTerraform(this._rootDeviceVolumeId),
            security_group_ids: cdktf.listMapper(cdktf.stringToTerraform)(this._securityGroupIds),
            ssh_host_dsa_key_fingerprint: cdktf.stringToTerraform(this._sshHostDsaKeyFingerprint),
            ssh_host_rsa_key_fingerprint: cdktf.stringToTerraform(this._sshHostRsaKeyFingerprint),
            ssh_key_name: cdktf.stringToTerraform(this._sshKeyName),
            stack_id: cdktf.stringToTerraform(this._stackId),
            state: cdktf.stringToTerraform(this._state),
            status: cdktf.stringToTerraform(this._status),
            subnet_id: cdktf.stringToTerraform(this._subnetId),
            tenancy: cdktf.stringToTerraform(this._tenancy),
            virtualization_type: cdktf.stringToTerraform(this._virtualizationType),
            ebs_block_device: cdktf.listMapper(opsworksInstanceEbsBlockDeviceToTerraform)(this._ebsBlockDevice),
            ephemeral_block_device: cdktf.listMapper(opsworksInstanceEphemeralBlockDeviceToTerraform)(this._ephemeralBlockDevice),
            root_block_device: cdktf.listMapper(opsworksInstanceRootBlockDeviceToTerraform)(this._rootBlockDevice),
            timeouts: opsworksInstanceTimeoutsToTerraform(this._timeouts.internalValue),
        };
    }
}
//# sourceMappingURL=opsworks-instance.js.map