// generated from terraform resource schema
import * as cdktf from 'cdktf';
export class MqBrokerInstances extends cdktf.ComplexComputedList {
    // console_url - computed: true, optional: false, required: false
    get consoleUrl() {
        return this.getStringAttribute('console_url');
    }
    // endpoints - computed: true, optional: false, required: false
    get endpoints() {
        return this.getListAttribute('endpoints');
    }
    // ip_address - computed: true, optional: false, required: false
    get ipAddress() {
        return this.getStringAttribute('ip_address');
    }
}
export function mqBrokerConfigurationToTerraform(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 {
        revision: cdktf.numberToTerraform(struct.revision),
    };
}
export class MqBrokerConfigurationOutputReference 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._revision !== undefined) {
            hasAnyValues = true;
            internalValueResult.revision = this._revision;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._revision = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._revision = value.revision;
        }
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // revision - computed: true, optional: true, required: false
    _revision;
    get revision() {
        return this.getNumberAttribute('revision');
    }
    set revision(value) {
        this._revision = value;
    }
    resetRevision() {
        this._revision = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get revisionInput() {
        return this._revision;
    }
}
export function mqBrokerEncryptionOptionsToTerraform(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 {
        kms_key_id: cdktf.stringToTerraform(struct.kmsKeyId),
        use_aws_owned_key: cdktf.booleanToTerraform(struct.useAwsOwnedKey),
    };
}
export class MqBrokerEncryptionOptionsOutputReference 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._kmsKeyId !== undefined) {
            hasAnyValues = true;
            internalValueResult.kmsKeyId = this._kmsKeyId;
        }
        if (this._useAwsOwnedKey !== undefined) {
            hasAnyValues = true;
            internalValueResult.useAwsOwnedKey = this._useAwsOwnedKey;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._kmsKeyId = undefined;
            this._useAwsOwnedKey = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._kmsKeyId = value.kmsKeyId;
            this._useAwsOwnedKey = value.useAwsOwnedKey;
        }
    }
    // kms_key_id - computed: true, optional: true, required: false
    _kmsKeyId;
    get kmsKeyId() {
        return this.getStringAttribute('kms_key_id');
    }
    set kmsKeyId(value) {
        this._kmsKeyId = value;
    }
    resetKmsKeyId() {
        this._kmsKeyId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get kmsKeyIdInput() {
        return this._kmsKeyId;
    }
    // use_aws_owned_key - computed: false, optional: true, required: false
    _useAwsOwnedKey;
    get useAwsOwnedKey() {
        return this.getBooleanAttribute('use_aws_owned_key');
    }
    set useAwsOwnedKey(value) {
        this._useAwsOwnedKey = value;
    }
    resetUseAwsOwnedKey() {
        this._useAwsOwnedKey = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get useAwsOwnedKeyInput() {
        return this._useAwsOwnedKey;
    }
}
export function mqBrokerLdapServerMetadataToTerraform(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 {
        hosts: cdktf.listMapper(cdktf.stringToTerraform)(struct.hosts),
        role_base: cdktf.stringToTerraform(struct.roleBase),
        role_name: cdktf.stringToTerraform(struct.roleName),
        role_search_matching: cdktf.stringToTerraform(struct.roleSearchMatching),
        role_search_subtree: cdktf.booleanToTerraform(struct.roleSearchSubtree),
        service_account_password: cdktf.stringToTerraform(struct.serviceAccountPassword),
        service_account_username: cdktf.stringToTerraform(struct.serviceAccountUsername),
        user_base: cdktf.stringToTerraform(struct.userBase),
        user_role_name: cdktf.stringToTerraform(struct.userRoleName),
        user_search_matching: cdktf.stringToTerraform(struct.userSearchMatching),
        user_search_subtree: cdktf.booleanToTerraform(struct.userSearchSubtree),
    };
}
export class MqBrokerLdapServerMetadataOutputReference 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._hosts !== undefined) {
            hasAnyValues = true;
            internalValueResult.hosts = this._hosts;
        }
        if (this._roleBase !== undefined) {
            hasAnyValues = true;
            internalValueResult.roleBase = this._roleBase;
        }
        if (this._roleName !== undefined) {
            hasAnyValues = true;
            internalValueResult.roleName = this._roleName;
        }
        if (this._roleSearchMatching !== undefined) {
            hasAnyValues = true;
            internalValueResult.roleSearchMatching = this._roleSearchMatching;
        }
        if (this._roleSearchSubtree !== undefined) {
            hasAnyValues = true;
            internalValueResult.roleSearchSubtree = this._roleSearchSubtree;
        }
        if (this._serviceAccountPassword !== undefined) {
            hasAnyValues = true;
            internalValueResult.serviceAccountPassword = this._serviceAccountPassword;
        }
        if (this._serviceAccountUsername !== undefined) {
            hasAnyValues = true;
            internalValueResult.serviceAccountUsername = this._serviceAccountUsername;
        }
        if (this._userBase !== undefined) {
            hasAnyValues = true;
            internalValueResult.userBase = this._userBase;
        }
        if (this._userRoleName !== undefined) {
            hasAnyValues = true;
            internalValueResult.userRoleName = this._userRoleName;
        }
        if (this._userSearchMatching !== undefined) {
            hasAnyValues = true;
            internalValueResult.userSearchMatching = this._userSearchMatching;
        }
        if (this._userSearchSubtree !== undefined) {
            hasAnyValues = true;
            internalValueResult.userSearchSubtree = this._userSearchSubtree;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._hosts = undefined;
            this._roleBase = undefined;
            this._roleName = undefined;
            this._roleSearchMatching = undefined;
            this._roleSearchSubtree = undefined;
            this._serviceAccountPassword = undefined;
            this._serviceAccountUsername = undefined;
            this._userBase = undefined;
            this._userRoleName = undefined;
            this._userSearchMatching = undefined;
            this._userSearchSubtree = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._hosts = value.hosts;
            this._roleBase = value.roleBase;
            this._roleName = value.roleName;
            this._roleSearchMatching = value.roleSearchMatching;
            this._roleSearchSubtree = value.roleSearchSubtree;
            this._serviceAccountPassword = value.serviceAccountPassword;
            this._serviceAccountUsername = value.serviceAccountUsername;
            this._userBase = value.userBase;
            this._userRoleName = value.userRoleName;
            this._userSearchMatching = value.userSearchMatching;
            this._userSearchSubtree = value.userSearchSubtree;
        }
    }
    // hosts - computed: false, optional: true, required: false
    _hosts;
    get hosts() {
        return this.getListAttribute('hosts');
    }
    set hosts(value) {
        this._hosts = value;
    }
    resetHosts() {
        this._hosts = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get hostsInput() {
        return this._hosts;
    }
    // role_base - computed: false, optional: true, required: false
    _roleBase;
    get roleBase() {
        return this.getStringAttribute('role_base');
    }
    set roleBase(value) {
        this._roleBase = value;
    }
    resetRoleBase() {
        this._roleBase = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get roleBaseInput() {
        return this._roleBase;
    }
    // role_name - computed: false, optional: true, required: false
    _roleName;
    get roleName() {
        return this.getStringAttribute('role_name');
    }
    set roleName(value) {
        this._roleName = value;
    }
    resetRoleName() {
        this._roleName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get roleNameInput() {
        return this._roleName;
    }
    // role_search_matching - computed: false, optional: true, required: false
    _roleSearchMatching;
    get roleSearchMatching() {
        return this.getStringAttribute('role_search_matching');
    }
    set roleSearchMatching(value) {
        this._roleSearchMatching = value;
    }
    resetRoleSearchMatching() {
        this._roleSearchMatching = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get roleSearchMatchingInput() {
        return this._roleSearchMatching;
    }
    // role_search_subtree - computed: false, optional: true, required: false
    _roleSearchSubtree;
    get roleSearchSubtree() {
        return this.getBooleanAttribute('role_search_subtree');
    }
    set roleSearchSubtree(value) {
        this._roleSearchSubtree = value;
    }
    resetRoleSearchSubtree() {
        this._roleSearchSubtree = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get roleSearchSubtreeInput() {
        return this._roleSearchSubtree;
    }
    // service_account_password - computed: false, optional: true, required: false
    _serviceAccountPassword;
    get serviceAccountPassword() {
        return this.getStringAttribute('service_account_password');
    }
    set serviceAccountPassword(value) {
        this._serviceAccountPassword = value;
    }
    resetServiceAccountPassword() {
        this._serviceAccountPassword = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get serviceAccountPasswordInput() {
        return this._serviceAccountPassword;
    }
    // service_account_username - computed: false, optional: true, required: false
    _serviceAccountUsername;
    get serviceAccountUsername() {
        return this.getStringAttribute('service_account_username');
    }
    set serviceAccountUsername(value) {
        this._serviceAccountUsername = value;
    }
    resetServiceAccountUsername() {
        this._serviceAccountUsername = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get serviceAccountUsernameInput() {
        return this._serviceAccountUsername;
    }
    // user_base - computed: false, optional: true, required: false
    _userBase;
    get userBase() {
        return this.getStringAttribute('user_base');
    }
    set userBase(value) {
        this._userBase = value;
    }
    resetUserBase() {
        this._userBase = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get userBaseInput() {
        return this._userBase;
    }
    // user_role_name - computed: false, optional: true, required: false
    _userRoleName;
    get userRoleName() {
        return this.getStringAttribute('user_role_name');
    }
    set userRoleName(value) {
        this._userRoleName = value;
    }
    resetUserRoleName() {
        this._userRoleName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get userRoleNameInput() {
        return this._userRoleName;
    }
    // user_search_matching - computed: false, optional: true, required: false
    _userSearchMatching;
    get userSearchMatching() {
        return this.getStringAttribute('user_search_matching');
    }
    set userSearchMatching(value) {
        this._userSearchMatching = value;
    }
    resetUserSearchMatching() {
        this._userSearchMatching = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get userSearchMatchingInput() {
        return this._userSearchMatching;
    }
    // user_search_subtree - computed: false, optional: true, required: false
    _userSearchSubtree;
    get userSearchSubtree() {
        return this.getBooleanAttribute('user_search_subtree');
    }
    set userSearchSubtree(value) {
        this._userSearchSubtree = value;
    }
    resetUserSearchSubtree() {
        this._userSearchSubtree = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get userSearchSubtreeInput() {
        return this._userSearchSubtree;
    }
}
export function mqBrokerLogsToTerraform(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 {
        audit: cdktf.stringToTerraform(struct.audit),
        general: cdktf.booleanToTerraform(struct.general),
    };
}
export class MqBrokerLogsOutputReference 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._audit !== undefined) {
            hasAnyValues = true;
            internalValueResult.audit = this._audit;
        }
        if (this._general !== undefined) {
            hasAnyValues = true;
            internalValueResult.general = this._general;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._audit = undefined;
            this._general = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._audit = value.audit;
            this._general = value.general;
        }
    }
    // audit - computed: false, optional: true, required: false
    _audit;
    get audit() {
        return this.getStringAttribute('audit');
    }
    set audit(value) {
        this._audit = value;
    }
    resetAudit() {
        this._audit = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get auditInput() {
        return this._audit;
    }
    // general - computed: false, optional: true, required: false
    _general;
    get general() {
        return this.getBooleanAttribute('general');
    }
    set general(value) {
        this._general = value;
    }
    resetGeneral() {
        this._general = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get generalInput() {
        return this._general;
    }
}
export function mqBrokerMaintenanceWindowStartTimeToTerraform(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 {
        day_of_week: cdktf.stringToTerraform(struct.dayOfWeek),
        time_of_day: cdktf.stringToTerraform(struct.timeOfDay),
        time_zone: cdktf.stringToTerraform(struct.timeZone),
    };
}
export class MqBrokerMaintenanceWindowStartTimeOutputReference 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._dayOfWeek !== undefined) {
            hasAnyValues = true;
            internalValueResult.dayOfWeek = this._dayOfWeek;
        }
        if (this._timeOfDay !== undefined) {
            hasAnyValues = true;
            internalValueResult.timeOfDay = this._timeOfDay;
        }
        if (this._timeZone !== undefined) {
            hasAnyValues = true;
            internalValueResult.timeZone = this._timeZone;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._dayOfWeek = undefined;
            this._timeOfDay = undefined;
            this._timeZone = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._dayOfWeek = value.dayOfWeek;
            this._timeOfDay = value.timeOfDay;
            this._timeZone = value.timeZone;
        }
    }
    // day_of_week - computed: false, optional: false, required: true
    _dayOfWeek;
    get dayOfWeek() {
        return this.getStringAttribute('day_of_week');
    }
    set dayOfWeek(value) {
        this._dayOfWeek = value;
    }
    // Temporarily expose input value. Use with caution.
    get dayOfWeekInput() {
        return this._dayOfWeek;
    }
    // time_of_day - computed: false, optional: false, required: true
    _timeOfDay;
    get timeOfDay() {
        return this.getStringAttribute('time_of_day');
    }
    set timeOfDay(value) {
        this._timeOfDay = value;
    }
    // Temporarily expose input value. Use with caution.
    get timeOfDayInput() {
        return this._timeOfDay;
    }
    // time_zone - computed: false, optional: false, required: true
    _timeZone;
    get timeZone() {
        return this.getStringAttribute('time_zone');
    }
    set timeZone(value) {
        this._timeZone = value;
    }
    // Temporarily expose input value. Use with caution.
    get timeZoneInput() {
        return this._timeZone;
    }
}
export function mqBrokerUserToTerraform(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 {
        console_access: cdktf.booleanToTerraform(struct.consoleAccess),
        groups: cdktf.listMapper(cdktf.stringToTerraform)(struct.groups),
        password: cdktf.stringToTerraform(struct.password),
        username: cdktf.stringToTerraform(struct.username),
    };
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/mq_broker aws_mq_broker}
*/
export class MqBroker extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_mq_broker";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/mq_broker aws_mq_broker} 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 MqBrokerConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_mq_broker',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._applyImmediately = config.applyImmediately;
        this._authenticationStrategy = config.authenticationStrategy;
        this._autoMinorVersionUpgrade = config.autoMinorVersionUpgrade;
        this._brokerName = config.brokerName;
        this._deploymentMode = config.deploymentMode;
        this._engineType = config.engineType;
        this._engineVersion = config.engineVersion;
        this._hostInstanceType = config.hostInstanceType;
        this._publiclyAccessible = config.publiclyAccessible;
        this._securityGroups = config.securityGroups;
        this._storageType = config.storageType;
        this._subnetIds = config.subnetIds;
        this._tags = config.tags;
        this._tagsAll = config.tagsAll;
        this._configuration.internalValue = config.configuration;
        this._encryptionOptions.internalValue = config.encryptionOptions;
        this._ldapServerMetadata.internalValue = config.ldapServerMetadata;
        this._logs.internalValue = config.logs;
        this._maintenanceWindowStartTime.internalValue = config.maintenanceWindowStartTime;
        this._user = config.user;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // apply_immediately - computed: false, optional: true, required: false
    _applyImmediately;
    get applyImmediately() {
        return this.getBooleanAttribute('apply_immediately');
    }
    set applyImmediately(value) {
        this._applyImmediately = value;
    }
    resetApplyImmediately() {
        this._applyImmediately = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get applyImmediatelyInput() {
        return this._applyImmediately;
    }
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // authentication_strategy - computed: true, optional: true, required: false
    _authenticationStrategy;
    get authenticationStrategy() {
        return this.getStringAttribute('authentication_strategy');
    }
    set authenticationStrategy(value) {
        this._authenticationStrategy = value;
    }
    resetAuthenticationStrategy() {
        this._authenticationStrategy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get authenticationStrategyInput() {
        return this._authenticationStrategy;
    }
    // auto_minor_version_upgrade - computed: false, optional: true, required: false
    _autoMinorVersionUpgrade;
    get autoMinorVersionUpgrade() {
        return this.getBooleanAttribute('auto_minor_version_upgrade');
    }
    set autoMinorVersionUpgrade(value) {
        this._autoMinorVersionUpgrade = value;
    }
    resetAutoMinorVersionUpgrade() {
        this._autoMinorVersionUpgrade = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get autoMinorVersionUpgradeInput() {
        return this._autoMinorVersionUpgrade;
    }
    // broker_name - computed: false, optional: false, required: true
    _brokerName;
    get brokerName() {
        return this.getStringAttribute('broker_name');
    }
    set brokerName(value) {
        this._brokerName = value;
    }
    // Temporarily expose input value. Use with caution.
    get brokerNameInput() {
        return this._brokerName;
    }
    // deployment_mode - computed: false, optional: true, required: false
    _deploymentMode;
    get deploymentMode() {
        return this.getStringAttribute('deployment_mode');
    }
    set deploymentMode(value) {
        this._deploymentMode = value;
    }
    resetDeploymentMode() {
        this._deploymentMode = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get deploymentModeInput() {
        return this._deploymentMode;
    }
    // engine_type - computed: false, optional: false, required: true
    _engineType;
    get engineType() {
        return this.getStringAttribute('engine_type');
    }
    set engineType(value) {
        this._engineType = value;
    }
    // Temporarily expose input value. Use with caution.
    get engineTypeInput() {
        return this._engineType;
    }
    // engine_version - computed: false, optional: false, required: true
    _engineVersion;
    get engineVersion() {
        return this.getStringAttribute('engine_version');
    }
    set engineVersion(value) {
        this._engineVersion = value;
    }
    // Temporarily expose input value. Use with caution.
    get engineVersionInput() {
        return this._engineVersion;
    }
    // host_instance_type - computed: false, optional: false, required: true
    _hostInstanceType;
    get hostInstanceType() {
        return this.getStringAttribute('host_instance_type');
    }
    set hostInstanceType(value) {
        this._hostInstanceType = value;
    }
    // Temporarily expose input value. Use with caution.
    get hostInstanceTypeInput() {
        return this._hostInstanceType;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // instances - computed: true, optional: false, required: false
    instances(index) {
        return new MqBrokerInstances(this, 'instances', index, false);
    }
    // publicly_accessible - computed: false, optional: true, required: false
    _publiclyAccessible;
    get publiclyAccessible() {
        return this.getBooleanAttribute('publicly_accessible');
    }
    set publiclyAccessible(value) {
        this._publiclyAccessible = value;
    }
    resetPubliclyAccessible() {
        this._publiclyAccessible = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get publiclyAccessibleInput() {
        return this._publiclyAccessible;
    }
    // security_groups - computed: false, optional: true, required: false
    _securityGroups;
    get securityGroups() {
        return cdktf.Fn.tolist(this.getListAttribute('security_groups'));
    }
    set securityGroups(value) {
        this._securityGroups = value;
    }
    resetSecurityGroups() {
        this._securityGroups = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get securityGroupsInput() {
        return this._securityGroups;
    }
    // storage_type - computed: true, optional: true, required: false
    _storageType;
    get storageType() {
        return this.getStringAttribute('storage_type');
    }
    set storageType(value) {
        this._storageType = value;
    }
    resetStorageType() {
        this._storageType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get storageTypeInput() {
        return this._storageType;
    }
    // subnet_ids - computed: true, optional: true, required: false
    _subnetIds;
    get subnetIds() {
        return cdktf.Fn.tolist(this.getListAttribute('subnet_ids'));
    }
    set subnetIds(value) {
        this._subnetIds = value;
    }
    resetSubnetIds() {
        this._subnetIds = undefined;
    }
    // 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;
    }
    // configuration - computed: false, optional: true, required: false
    _configuration = new MqBrokerConfigurationOutputReference(this, "configuration", true);
    get configuration() {
        return this._configuration;
    }
    putConfiguration(value) {
        this._configuration.internalValue = value;
    }
    resetConfiguration() {
        this._configuration.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get configurationInput() {
        return this._configuration.internalValue;
    }
    // encryption_options - computed: false, optional: true, required: false
    _encryptionOptions = new MqBrokerEncryptionOptionsOutputReference(this, "encryption_options", true);
    get encryptionOptions() {
        return this._encryptionOptions;
    }
    putEncryptionOptions(value) {
        this._encryptionOptions.internalValue = value;
    }
    resetEncryptionOptions() {
        this._encryptionOptions.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get encryptionOptionsInput() {
        return this._encryptionOptions.internalValue;
    }
    // ldap_server_metadata - computed: false, optional: true, required: false
    _ldapServerMetadata = new MqBrokerLdapServerMetadataOutputReference(this, "ldap_server_metadata", true);
    get ldapServerMetadata() {
        return this._ldapServerMetadata;
    }
    putLdapServerMetadata(value) {
        this._ldapServerMetadata.internalValue = value;
    }
    resetLdapServerMetadata() {
        this._ldapServerMetadata.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ldapServerMetadataInput() {
        return this._ldapServerMetadata.internalValue;
    }
    // logs - computed: false, optional: true, required: false
    _logs = new MqBrokerLogsOutputReference(this, "logs", true);
    get logs() {
        return this._logs;
    }
    putLogs(value) {
        this._logs.internalValue = value;
    }
    resetLogs() {
        this._logs.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get logsInput() {
        return this._logs.internalValue;
    }
    // maintenance_window_start_time - computed: false, optional: true, required: false
    _maintenanceWindowStartTime = new MqBrokerMaintenanceWindowStartTimeOutputReference(this, "maintenance_window_start_time", true);
    get maintenanceWindowStartTime() {
        return this._maintenanceWindowStartTime;
    }
    putMaintenanceWindowStartTime(value) {
        this._maintenanceWindowStartTime.internalValue = value;
    }
    resetMaintenanceWindowStartTime() {
        this._maintenanceWindowStartTime.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maintenanceWindowStartTimeInput() {
        return this._maintenanceWindowStartTime.internalValue;
    }
    // user - computed: false, optional: false, required: true
    _user;
    get user() {
        // Getting the computed value is not yet implemented
        return cdktf.Token.asAny(cdktf.Fn.tolist(this.interpolationForAttribute('user')));
    }
    set user(value) {
        this._user = value;
    }
    // Temporarily expose input value. Use with caution.
    get userInput() {
        return this._user;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            apply_immediately: cdktf.booleanToTerraform(this._applyImmediately),
            authentication_strategy: cdktf.stringToTerraform(this._authenticationStrategy),
            auto_minor_version_upgrade: cdktf.booleanToTerraform(this._autoMinorVersionUpgrade),
            broker_name: cdktf.stringToTerraform(this._brokerName),
            deployment_mode: cdktf.stringToTerraform(this._deploymentMode),
            engine_type: cdktf.stringToTerraform(this._engineType),
            engine_version: cdktf.stringToTerraform(this._engineVersion),
            host_instance_type: cdktf.stringToTerraform(this._hostInstanceType),
            publicly_accessible: cdktf.booleanToTerraform(this._publiclyAccessible),
            security_groups: cdktf.listMapper(cdktf.stringToTerraform)(this._securityGroups),
            storage_type: cdktf.stringToTerraform(this._storageType),
            subnet_ids: cdktf.listMapper(cdktf.stringToTerraform)(this._subnetIds),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
            tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll),
            configuration: mqBrokerConfigurationToTerraform(this._configuration.internalValue),
            encryption_options: mqBrokerEncryptionOptionsToTerraform(this._encryptionOptions.internalValue),
            ldap_server_metadata: mqBrokerLdapServerMetadataToTerraform(this._ldapServerMetadata.internalValue),
            logs: mqBrokerLogsToTerraform(this._logs.internalValue),
            maintenance_window_start_time: mqBrokerMaintenanceWindowStartTimeToTerraform(this._maintenanceWindowStartTime.internalValue),
            user: cdktf.listMapper(mqBrokerUserToTerraform)(this._user),
        };
    }
}
//# sourceMappingURL=mq-broker.js.map