// generated from terraform resource schema
import * as cdktf from 'cdktf';
export class MwaaEnvironmentLastUpdatedError extends cdktf.ComplexComputedList {
    // error_code - computed: true, optional: false, required: false
    get errorCode() {
        return this.getStringAttribute('error_code');
    }
    // error_message - computed: true, optional: false, required: false
    get errorMessage() {
        return this.getStringAttribute('error_message');
    }
}
export class MwaaEnvironmentLastUpdated extends cdktf.ComplexComputedList {
    // created_at - computed: true, optional: false, required: false
    get createdAt() {
        return this.getStringAttribute('created_at');
    }
    // error - computed: true, optional: false, required: false
    get error() {
        // Getting the computed value is not yet implemented
        return this.interpolationForAttribute('error');
    }
    // status - computed: true, optional: false, required: false
    get status() {
        return this.getStringAttribute('status');
    }
}
export function mwaaEnvironmentLoggingConfigurationDagProcessingLogsToTerraform(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 {
        enabled: cdktf.booleanToTerraform(struct.enabled),
        log_level: cdktf.stringToTerraform(struct.logLevel),
    };
}
export class MwaaEnvironmentLoggingConfigurationDagProcessingLogsOutputReference 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._enabled !== undefined) {
            hasAnyValues = true;
            internalValueResult.enabled = this._enabled;
        }
        if (this._logLevel !== undefined) {
            hasAnyValues = true;
            internalValueResult.logLevel = this._logLevel;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._enabled = undefined;
            this._logLevel = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._enabled = value.enabled;
            this._logLevel = value.logLevel;
        }
    }
    // cloud_watch_log_group_arn - computed: true, optional: false, required: false
    get cloudWatchLogGroupArn() {
        return this.getStringAttribute('cloud_watch_log_group_arn');
    }
    // enabled - computed: true, optional: true, required: false
    _enabled;
    get enabled() {
        return this.getBooleanAttribute('enabled');
    }
    set enabled(value) {
        this._enabled = value;
    }
    resetEnabled() {
        this._enabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enabledInput() {
        return this._enabled;
    }
    // log_level - computed: true, optional: true, required: false
    _logLevel;
    get logLevel() {
        return this.getStringAttribute('log_level');
    }
    set logLevel(value) {
        this._logLevel = value;
    }
    resetLogLevel() {
        this._logLevel = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get logLevelInput() {
        return this._logLevel;
    }
}
export function mwaaEnvironmentLoggingConfigurationSchedulerLogsToTerraform(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 {
        enabled: cdktf.booleanToTerraform(struct.enabled),
        log_level: cdktf.stringToTerraform(struct.logLevel),
    };
}
export class MwaaEnvironmentLoggingConfigurationSchedulerLogsOutputReference 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._enabled !== undefined) {
            hasAnyValues = true;
            internalValueResult.enabled = this._enabled;
        }
        if (this._logLevel !== undefined) {
            hasAnyValues = true;
            internalValueResult.logLevel = this._logLevel;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._enabled = undefined;
            this._logLevel = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._enabled = value.enabled;
            this._logLevel = value.logLevel;
        }
    }
    // cloud_watch_log_group_arn - computed: true, optional: false, required: false
    get cloudWatchLogGroupArn() {
        return this.getStringAttribute('cloud_watch_log_group_arn');
    }
    // enabled - computed: true, optional: true, required: false
    _enabled;
    get enabled() {
        return this.getBooleanAttribute('enabled');
    }
    set enabled(value) {
        this._enabled = value;
    }
    resetEnabled() {
        this._enabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enabledInput() {
        return this._enabled;
    }
    // log_level - computed: true, optional: true, required: false
    _logLevel;
    get logLevel() {
        return this.getStringAttribute('log_level');
    }
    set logLevel(value) {
        this._logLevel = value;
    }
    resetLogLevel() {
        this._logLevel = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get logLevelInput() {
        return this._logLevel;
    }
}
export function mwaaEnvironmentLoggingConfigurationTaskLogsToTerraform(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 {
        enabled: cdktf.booleanToTerraform(struct.enabled),
        log_level: cdktf.stringToTerraform(struct.logLevel),
    };
}
export class MwaaEnvironmentLoggingConfigurationTaskLogsOutputReference 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._enabled !== undefined) {
            hasAnyValues = true;
            internalValueResult.enabled = this._enabled;
        }
        if (this._logLevel !== undefined) {
            hasAnyValues = true;
            internalValueResult.logLevel = this._logLevel;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._enabled = undefined;
            this._logLevel = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._enabled = value.enabled;
            this._logLevel = value.logLevel;
        }
    }
    // cloud_watch_log_group_arn - computed: true, optional: false, required: false
    get cloudWatchLogGroupArn() {
        return this.getStringAttribute('cloud_watch_log_group_arn');
    }
    // enabled - computed: true, optional: true, required: false
    _enabled;
    get enabled() {
        return this.getBooleanAttribute('enabled');
    }
    set enabled(value) {
        this._enabled = value;
    }
    resetEnabled() {
        this._enabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enabledInput() {
        return this._enabled;
    }
    // log_level - computed: true, optional: true, required: false
    _logLevel;
    get logLevel() {
        return this.getStringAttribute('log_level');
    }
    set logLevel(value) {
        this._logLevel = value;
    }
    resetLogLevel() {
        this._logLevel = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get logLevelInput() {
        return this._logLevel;
    }
}
export function mwaaEnvironmentLoggingConfigurationWebserverLogsToTerraform(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 {
        enabled: cdktf.booleanToTerraform(struct.enabled),
        log_level: cdktf.stringToTerraform(struct.logLevel),
    };
}
export class MwaaEnvironmentLoggingConfigurationWebserverLogsOutputReference 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._enabled !== undefined) {
            hasAnyValues = true;
            internalValueResult.enabled = this._enabled;
        }
        if (this._logLevel !== undefined) {
            hasAnyValues = true;
            internalValueResult.logLevel = this._logLevel;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._enabled = undefined;
            this._logLevel = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._enabled = value.enabled;
            this._logLevel = value.logLevel;
        }
    }
    // cloud_watch_log_group_arn - computed: true, optional: false, required: false
    get cloudWatchLogGroupArn() {
        return this.getStringAttribute('cloud_watch_log_group_arn');
    }
    // enabled - computed: true, optional: true, required: false
    _enabled;
    get enabled() {
        return this.getBooleanAttribute('enabled');
    }
    set enabled(value) {
        this._enabled = value;
    }
    resetEnabled() {
        this._enabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enabledInput() {
        return this._enabled;
    }
    // log_level - computed: true, optional: true, required: false
    _logLevel;
    get logLevel() {
        return this.getStringAttribute('log_level');
    }
    set logLevel(value) {
        this._logLevel = value;
    }
    resetLogLevel() {
        this._logLevel = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get logLevelInput() {
        return this._logLevel;
    }
}
export function mwaaEnvironmentLoggingConfigurationWorkerLogsToTerraform(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 {
        enabled: cdktf.booleanToTerraform(struct.enabled),
        log_level: cdktf.stringToTerraform(struct.logLevel),
    };
}
export class MwaaEnvironmentLoggingConfigurationWorkerLogsOutputReference 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._enabled !== undefined) {
            hasAnyValues = true;
            internalValueResult.enabled = this._enabled;
        }
        if (this._logLevel !== undefined) {
            hasAnyValues = true;
            internalValueResult.logLevel = this._logLevel;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._enabled = undefined;
            this._logLevel = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._enabled = value.enabled;
            this._logLevel = value.logLevel;
        }
    }
    // cloud_watch_log_group_arn - computed: true, optional: false, required: false
    get cloudWatchLogGroupArn() {
        return this.getStringAttribute('cloud_watch_log_group_arn');
    }
    // enabled - computed: true, optional: true, required: false
    _enabled;
    get enabled() {
        return this.getBooleanAttribute('enabled');
    }
    set enabled(value) {
        this._enabled = value;
    }
    resetEnabled() {
        this._enabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enabledInput() {
        return this._enabled;
    }
    // log_level - computed: true, optional: true, required: false
    _logLevel;
    get logLevel() {
        return this.getStringAttribute('log_level');
    }
    set logLevel(value) {
        this._logLevel = value;
    }
    resetLogLevel() {
        this._logLevel = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get logLevelInput() {
        return this._logLevel;
    }
}
export function mwaaEnvironmentLoggingConfigurationToTerraform(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 {
        dag_processing_logs: mwaaEnvironmentLoggingConfigurationDagProcessingLogsToTerraform(struct.dagProcessingLogs),
        scheduler_logs: mwaaEnvironmentLoggingConfigurationSchedulerLogsToTerraform(struct.schedulerLogs),
        task_logs: mwaaEnvironmentLoggingConfigurationTaskLogsToTerraform(struct.taskLogs),
        webserver_logs: mwaaEnvironmentLoggingConfigurationWebserverLogsToTerraform(struct.webserverLogs),
        worker_logs: mwaaEnvironmentLoggingConfigurationWorkerLogsToTerraform(struct.workerLogs),
    };
}
export class MwaaEnvironmentLoggingConfigurationOutputReference 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._dagProcessingLogs?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.dagProcessingLogs = this._dagProcessingLogs?.internalValue;
        }
        if (this._schedulerLogs?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.schedulerLogs = this._schedulerLogs?.internalValue;
        }
        if (this._taskLogs?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.taskLogs = this._taskLogs?.internalValue;
        }
        if (this._webserverLogs?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.webserverLogs = this._webserverLogs?.internalValue;
        }
        if (this._workerLogs?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.workerLogs = this._workerLogs?.internalValue;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._dagProcessingLogs.internalValue = undefined;
            this._schedulerLogs.internalValue = undefined;
            this._taskLogs.internalValue = undefined;
            this._webserverLogs.internalValue = undefined;
            this._workerLogs.internalValue = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._dagProcessingLogs.internalValue = value.dagProcessingLogs;
            this._schedulerLogs.internalValue = value.schedulerLogs;
            this._taskLogs.internalValue = value.taskLogs;
            this._webserverLogs.internalValue = value.webserverLogs;
            this._workerLogs.internalValue = value.workerLogs;
        }
    }
    // dag_processing_logs - computed: false, optional: true, required: false
    _dagProcessingLogs = new MwaaEnvironmentLoggingConfigurationDagProcessingLogsOutputReference(this, "dag_processing_logs", true);
    get dagProcessingLogs() {
        return this._dagProcessingLogs;
    }
    putDagProcessingLogs(value) {
        this._dagProcessingLogs.internalValue = value;
    }
    resetDagProcessingLogs() {
        this._dagProcessingLogs.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get dagProcessingLogsInput() {
        return this._dagProcessingLogs.internalValue;
    }
    // scheduler_logs - computed: false, optional: true, required: false
    _schedulerLogs = new MwaaEnvironmentLoggingConfigurationSchedulerLogsOutputReference(this, "scheduler_logs", true);
    get schedulerLogs() {
        return this._schedulerLogs;
    }
    putSchedulerLogs(value) {
        this._schedulerLogs.internalValue = value;
    }
    resetSchedulerLogs() {
        this._schedulerLogs.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get schedulerLogsInput() {
        return this._schedulerLogs.internalValue;
    }
    // task_logs - computed: false, optional: true, required: false
    _taskLogs = new MwaaEnvironmentLoggingConfigurationTaskLogsOutputReference(this, "task_logs", true);
    get taskLogs() {
        return this._taskLogs;
    }
    putTaskLogs(value) {
        this._taskLogs.internalValue = value;
    }
    resetTaskLogs() {
        this._taskLogs.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get taskLogsInput() {
        return this._taskLogs.internalValue;
    }
    // webserver_logs - computed: false, optional: true, required: false
    _webserverLogs = new MwaaEnvironmentLoggingConfigurationWebserverLogsOutputReference(this, "webserver_logs", true);
    get webserverLogs() {
        return this._webserverLogs;
    }
    putWebserverLogs(value) {
        this._webserverLogs.internalValue = value;
    }
    resetWebserverLogs() {
        this._webserverLogs.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get webserverLogsInput() {
        return this._webserverLogs.internalValue;
    }
    // worker_logs - computed: false, optional: true, required: false
    _workerLogs = new MwaaEnvironmentLoggingConfigurationWorkerLogsOutputReference(this, "worker_logs", true);
    get workerLogs() {
        return this._workerLogs;
    }
    putWorkerLogs(value) {
        this._workerLogs.internalValue = value;
    }
    resetWorkerLogs() {
        this._workerLogs.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get workerLogsInput() {
        return this._workerLogs.internalValue;
    }
}
export function mwaaEnvironmentNetworkConfigurationToTerraform(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 {
        security_group_ids: cdktf.listMapper(cdktf.stringToTerraform)(struct.securityGroupIds),
        subnet_ids: cdktf.listMapper(cdktf.stringToTerraform)(struct.subnetIds),
    };
}
export class MwaaEnvironmentNetworkConfigurationOutputReference 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._securityGroupIds !== undefined) {
            hasAnyValues = true;
            internalValueResult.securityGroupIds = this._securityGroupIds;
        }
        if (this._subnetIds !== undefined) {
            hasAnyValues = true;
            internalValueResult.subnetIds = this._subnetIds;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._securityGroupIds = undefined;
            this._subnetIds = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._securityGroupIds = value.securityGroupIds;
            this._subnetIds = value.subnetIds;
        }
    }
    // security_group_ids - computed: false, optional: false, required: true
    _securityGroupIds;
    get securityGroupIds() {
        return cdktf.Fn.tolist(this.getListAttribute('security_group_ids'));
    }
    set securityGroupIds(value) {
        this._securityGroupIds = value;
    }
    // Temporarily expose input value. Use with caution.
    get securityGroupIdsInput() {
        return this._securityGroupIds;
    }
    // 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;
    }
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/mwaa_environment aws_mwaa_environment}
*/
export class MwaaEnvironment extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_mwaa_environment";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/mwaa_environment aws_mwaa_environment} 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 MwaaEnvironmentConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_mwaa_environment',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._airflowConfigurationOptions = config.airflowConfigurationOptions;
        this._airflowVersion = config.airflowVersion;
        this._dagS3Path = config.dagS3Path;
        this._environmentClass = config.environmentClass;
        this._executionRoleArn = config.executionRoleArn;
        this._kmsKey = config.kmsKey;
        this._maxWorkers = config.maxWorkers;
        this._minWorkers = config.minWorkers;
        this._name = config.name;
        this._pluginsS3ObjectVersion = config.pluginsS3ObjectVersion;
        this._pluginsS3Path = config.pluginsS3Path;
        this._requirementsS3ObjectVersion = config.requirementsS3ObjectVersion;
        this._requirementsS3Path = config.requirementsS3Path;
        this._sourceBucketArn = config.sourceBucketArn;
        this._tags = config.tags;
        this._tagsAll = config.tagsAll;
        this._webserverAccessMode = config.webserverAccessMode;
        this._weeklyMaintenanceWindowStart = config.weeklyMaintenanceWindowStart;
        this._loggingConfiguration.internalValue = config.loggingConfiguration;
        this._networkConfiguration.internalValue = config.networkConfiguration;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // airflow_configuration_options - computed: false, optional: true, required: false
    _airflowConfigurationOptions;
    get airflowConfigurationOptions() {
        return this.getStringMapAttribute('airflow_configuration_options');
    }
    set airflowConfigurationOptions(value) {
        this._airflowConfigurationOptions = value;
    }
    resetAirflowConfigurationOptions() {
        this._airflowConfigurationOptions = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get airflowConfigurationOptionsInput() {
        return this._airflowConfigurationOptions;
    }
    // airflow_version - computed: true, optional: true, required: false
    _airflowVersion;
    get airflowVersion() {
        return this.getStringAttribute('airflow_version');
    }
    set airflowVersion(value) {
        this._airflowVersion = value;
    }
    resetAirflowVersion() {
        this._airflowVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get airflowVersionInput() {
        return this._airflowVersion;
    }
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // created_at - computed: true, optional: false, required: false
    get createdAt() {
        return this.getStringAttribute('created_at');
    }
    // dag_s3_path - computed: false, optional: false, required: true
    _dagS3Path;
    get dagS3Path() {
        return this.getStringAttribute('dag_s3_path');
    }
    set dagS3Path(value) {
        this._dagS3Path = value;
    }
    // Temporarily expose input value. Use with caution.
    get dagS3PathInput() {
        return this._dagS3Path;
    }
    // environment_class - computed: true, optional: true, required: false
    _environmentClass;
    get environmentClass() {
        return this.getStringAttribute('environment_class');
    }
    set environmentClass(value) {
        this._environmentClass = value;
    }
    resetEnvironmentClass() {
        this._environmentClass = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get environmentClassInput() {
        return this._environmentClass;
    }
    // execution_role_arn - computed: false, optional: false, required: true
    _executionRoleArn;
    get executionRoleArn() {
        return this.getStringAttribute('execution_role_arn');
    }
    set executionRoleArn(value) {
        this._executionRoleArn = value;
    }
    // Temporarily expose input value. Use with caution.
    get executionRoleArnInput() {
        return this._executionRoleArn;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // kms_key - computed: false, optional: true, required: false
    _kmsKey;
    get kmsKey() {
        return this.getStringAttribute('kms_key');
    }
    set kmsKey(value) {
        this._kmsKey = value;
    }
    resetKmsKey() {
        this._kmsKey = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get kmsKeyInput() {
        return this._kmsKey;
    }
    // last_updated - computed: true, optional: false, required: false
    lastUpdated(index) {
        return new MwaaEnvironmentLastUpdated(this, 'last_updated', index, false);
    }
    // max_workers - computed: true, optional: true, required: false
    _maxWorkers;
    get maxWorkers() {
        return this.getNumberAttribute('max_workers');
    }
    set maxWorkers(value) {
        this._maxWorkers = value;
    }
    resetMaxWorkers() {
        this._maxWorkers = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxWorkersInput() {
        return this._maxWorkers;
    }
    // min_workers - computed: true, optional: true, required: false
    _minWorkers;
    get minWorkers() {
        return this.getNumberAttribute('min_workers');
    }
    set minWorkers(value) {
        this._minWorkers = value;
    }
    resetMinWorkers() {
        this._minWorkers = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get minWorkersInput() {
        return this._minWorkers;
    }
    // name - computed: false, optional: false, required: true
    _name;
    get name() {
        return this.getStringAttribute('name');
    }
    set name(value) {
        this._name = value;
    }
    // Temporarily expose input value. Use with caution.
    get nameInput() {
        return this._name;
    }
    // plugins_s3_object_version - computed: true, optional: true, required: false
    _pluginsS3ObjectVersion;
    get pluginsS3ObjectVersion() {
        return this.getStringAttribute('plugins_s3_object_version');
    }
    set pluginsS3ObjectVersion(value) {
        this._pluginsS3ObjectVersion = value;
    }
    resetPluginsS3ObjectVersion() {
        this._pluginsS3ObjectVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get pluginsS3ObjectVersionInput() {
        return this._pluginsS3ObjectVersion;
    }
    // plugins_s3_path - computed: false, optional: true, required: false
    _pluginsS3Path;
    get pluginsS3Path() {
        return this.getStringAttribute('plugins_s3_path');
    }
    set pluginsS3Path(value) {
        this._pluginsS3Path = value;
    }
    resetPluginsS3Path() {
        this._pluginsS3Path = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get pluginsS3PathInput() {
        return this._pluginsS3Path;
    }
    // requirements_s3_object_version - computed: true, optional: true, required: false
    _requirementsS3ObjectVersion;
    get requirementsS3ObjectVersion() {
        return this.getStringAttribute('requirements_s3_object_version');
    }
    set requirementsS3ObjectVersion(value) {
        this._requirementsS3ObjectVersion = value;
    }
    resetRequirementsS3ObjectVersion() {
        this._requirementsS3ObjectVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get requirementsS3ObjectVersionInput() {
        return this._requirementsS3ObjectVersion;
    }
    // requirements_s3_path - computed: false, optional: true, required: false
    _requirementsS3Path;
    get requirementsS3Path() {
        return this.getStringAttribute('requirements_s3_path');
    }
    set requirementsS3Path(value) {
        this._requirementsS3Path = value;
    }
    resetRequirementsS3Path() {
        this._requirementsS3Path = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get requirementsS3PathInput() {
        return this._requirementsS3Path;
    }
    // service_role_arn - computed: true, optional: false, required: false
    get serviceRoleArn() {
        return this.getStringAttribute('service_role_arn');
    }
    // source_bucket_arn - computed: false, optional: false, required: true
    _sourceBucketArn;
    get sourceBucketArn() {
        return this.getStringAttribute('source_bucket_arn');
    }
    set sourceBucketArn(value) {
        this._sourceBucketArn = value;
    }
    // Temporarily expose input value. Use with caution.
    get sourceBucketArnInput() {
        return this._sourceBucketArn;
    }
    // status - computed: true, optional: false, required: false
    get status() {
        return this.getStringAttribute('status');
    }
    // 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;
    }
    // webserver_access_mode - computed: true, optional: true, required: false
    _webserverAccessMode;
    get webserverAccessMode() {
        return this.getStringAttribute('webserver_access_mode');
    }
    set webserverAccessMode(value) {
        this._webserverAccessMode = value;
    }
    resetWebserverAccessMode() {
        this._webserverAccessMode = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get webserverAccessModeInput() {
        return this._webserverAccessMode;
    }
    // webserver_url - computed: true, optional: false, required: false
    get webserverUrl() {
        return this.getStringAttribute('webserver_url');
    }
    // weekly_maintenance_window_start - computed: true, optional: true, required: false
    _weeklyMaintenanceWindowStart;
    get weeklyMaintenanceWindowStart() {
        return this.getStringAttribute('weekly_maintenance_window_start');
    }
    set weeklyMaintenanceWindowStart(value) {
        this._weeklyMaintenanceWindowStart = value;
    }
    resetWeeklyMaintenanceWindowStart() {
        this._weeklyMaintenanceWindowStart = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get weeklyMaintenanceWindowStartInput() {
        return this._weeklyMaintenanceWindowStart;
    }
    // logging_configuration - computed: false, optional: true, required: false
    _loggingConfiguration = new MwaaEnvironmentLoggingConfigurationOutputReference(this, "logging_configuration", true);
    get loggingConfiguration() {
        return this._loggingConfiguration;
    }
    putLoggingConfiguration(value) {
        this._loggingConfiguration.internalValue = value;
    }
    resetLoggingConfiguration() {
        this._loggingConfiguration.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get loggingConfigurationInput() {
        return this._loggingConfiguration.internalValue;
    }
    // network_configuration - computed: false, optional: false, required: true
    _networkConfiguration = new MwaaEnvironmentNetworkConfigurationOutputReference(this, "network_configuration", true);
    get networkConfiguration() {
        return this._networkConfiguration;
    }
    putNetworkConfiguration(value) {
        this._networkConfiguration.internalValue = value;
    }
    // Temporarily expose input value. Use with caution.
    get networkConfigurationInput() {
        return this._networkConfiguration.internalValue;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            airflow_configuration_options: cdktf.hashMapper(cdktf.stringToTerraform)(this._airflowConfigurationOptions),
            airflow_version: cdktf.stringToTerraform(this._airflowVersion),
            dag_s3_path: cdktf.stringToTerraform(this._dagS3Path),
            environment_class: cdktf.stringToTerraform(this._environmentClass),
            execution_role_arn: cdktf.stringToTerraform(this._executionRoleArn),
            kms_key: cdktf.stringToTerraform(this._kmsKey),
            max_workers: cdktf.numberToTerraform(this._maxWorkers),
            min_workers: cdktf.numberToTerraform(this._minWorkers),
            name: cdktf.stringToTerraform(this._name),
            plugins_s3_object_version: cdktf.stringToTerraform(this._pluginsS3ObjectVersion),
            plugins_s3_path: cdktf.stringToTerraform(this._pluginsS3Path),
            requirements_s3_object_version: cdktf.stringToTerraform(this._requirementsS3ObjectVersion),
            requirements_s3_path: cdktf.stringToTerraform(this._requirementsS3Path),
            source_bucket_arn: cdktf.stringToTerraform(this._sourceBucketArn),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
            tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll),
            webserver_access_mode: cdktf.stringToTerraform(this._webserverAccessMode),
            weekly_maintenance_window_start: cdktf.stringToTerraform(this._weeklyMaintenanceWindowStart),
            logging_configuration: mwaaEnvironmentLoggingConfigurationToTerraform(this._loggingConfiguration.internalValue),
            network_configuration: mwaaEnvironmentNetworkConfigurationToTerraform(this._networkConfiguration.internalValue),
        };
    }
}
//# sourceMappingURL=mwaa-environment.js.map