// generated from terraform resource schema
import * as cdktf from 'cdktf';
export function dmsEndpointElasticsearchSettingsToTerraform(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 {
        endpoint_uri: cdktf.stringToTerraform(struct.endpointUri),
        error_retry_duration: cdktf.numberToTerraform(struct.errorRetryDuration),
        full_load_error_percentage: cdktf.numberToTerraform(struct.fullLoadErrorPercentage),
        service_access_role_arn: cdktf.stringToTerraform(struct.serviceAccessRoleArn),
    };
}
export class DmsEndpointElasticsearchSettingsOutputReference 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._endpointUri !== undefined) {
            hasAnyValues = true;
            internalValueResult.endpointUri = this._endpointUri;
        }
        if (this._errorRetryDuration !== undefined) {
            hasAnyValues = true;
            internalValueResult.errorRetryDuration = this._errorRetryDuration;
        }
        if (this._fullLoadErrorPercentage !== undefined) {
            hasAnyValues = true;
            internalValueResult.fullLoadErrorPercentage = this._fullLoadErrorPercentage;
        }
        if (this._serviceAccessRoleArn !== undefined) {
            hasAnyValues = true;
            internalValueResult.serviceAccessRoleArn = this._serviceAccessRoleArn;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._endpointUri = undefined;
            this._errorRetryDuration = undefined;
            this._fullLoadErrorPercentage = undefined;
            this._serviceAccessRoleArn = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._endpointUri = value.endpointUri;
            this._errorRetryDuration = value.errorRetryDuration;
            this._fullLoadErrorPercentage = value.fullLoadErrorPercentage;
            this._serviceAccessRoleArn = value.serviceAccessRoleArn;
        }
    }
    // endpoint_uri - computed: false, optional: false, required: true
    _endpointUri;
    get endpointUri() {
        return this.getStringAttribute('endpoint_uri');
    }
    set endpointUri(value) {
        this._endpointUri = value;
    }
    // Temporarily expose input value. Use with caution.
    get endpointUriInput() {
        return this._endpointUri;
    }
    // error_retry_duration - computed: false, optional: true, required: false
    _errorRetryDuration;
    get errorRetryDuration() {
        return this.getNumberAttribute('error_retry_duration');
    }
    set errorRetryDuration(value) {
        this._errorRetryDuration = value;
    }
    resetErrorRetryDuration() {
        this._errorRetryDuration = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get errorRetryDurationInput() {
        return this._errorRetryDuration;
    }
    // full_load_error_percentage - computed: false, optional: true, required: false
    _fullLoadErrorPercentage;
    get fullLoadErrorPercentage() {
        return this.getNumberAttribute('full_load_error_percentage');
    }
    set fullLoadErrorPercentage(value) {
        this._fullLoadErrorPercentage = value;
    }
    resetFullLoadErrorPercentage() {
        this._fullLoadErrorPercentage = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get fullLoadErrorPercentageInput() {
        return this._fullLoadErrorPercentage;
    }
    // service_access_role_arn - computed: false, optional: false, required: true
    _serviceAccessRoleArn;
    get serviceAccessRoleArn() {
        return this.getStringAttribute('service_access_role_arn');
    }
    set serviceAccessRoleArn(value) {
        this._serviceAccessRoleArn = value;
    }
    // Temporarily expose input value. Use with caution.
    get serviceAccessRoleArnInput() {
        return this._serviceAccessRoleArn;
    }
}
export function dmsEndpointKafkaSettingsToTerraform(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 {
        broker: cdktf.stringToTerraform(struct.broker),
        include_control_details: cdktf.booleanToTerraform(struct.includeControlDetails),
        include_null_and_empty: cdktf.booleanToTerraform(struct.includeNullAndEmpty),
        include_partition_value: cdktf.booleanToTerraform(struct.includePartitionValue),
        include_table_alter_operations: cdktf.booleanToTerraform(struct.includeTableAlterOperations),
        include_transaction_details: cdktf.booleanToTerraform(struct.includeTransactionDetails),
        message_format: cdktf.stringToTerraform(struct.messageFormat),
        message_max_bytes: cdktf.numberToTerraform(struct.messageMaxBytes),
        no_hex_prefix: cdktf.booleanToTerraform(struct.noHexPrefix),
        partition_include_schema_table: cdktf.booleanToTerraform(struct.partitionIncludeSchemaTable),
        sasl_password: cdktf.stringToTerraform(struct.saslPassword),
        sasl_username: cdktf.stringToTerraform(struct.saslUsername),
        security_protocol: cdktf.stringToTerraform(struct.securityProtocol),
        ssl_ca_certificate_arn: cdktf.stringToTerraform(struct.sslCaCertificateArn),
        ssl_client_certificate_arn: cdktf.stringToTerraform(struct.sslClientCertificateArn),
        ssl_client_key_arn: cdktf.stringToTerraform(struct.sslClientKeyArn),
        ssl_client_key_password: cdktf.stringToTerraform(struct.sslClientKeyPassword),
        topic: cdktf.stringToTerraform(struct.topic),
    };
}
export class DmsEndpointKafkaSettingsOutputReference 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._broker !== undefined) {
            hasAnyValues = true;
            internalValueResult.broker = this._broker;
        }
        if (this._includeControlDetails !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeControlDetails = this._includeControlDetails;
        }
        if (this._includeNullAndEmpty !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeNullAndEmpty = this._includeNullAndEmpty;
        }
        if (this._includePartitionValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.includePartitionValue = this._includePartitionValue;
        }
        if (this._includeTableAlterOperations !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeTableAlterOperations = this._includeTableAlterOperations;
        }
        if (this._includeTransactionDetails !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeTransactionDetails = this._includeTransactionDetails;
        }
        if (this._messageFormat !== undefined) {
            hasAnyValues = true;
            internalValueResult.messageFormat = this._messageFormat;
        }
        if (this._messageMaxBytes !== undefined) {
            hasAnyValues = true;
            internalValueResult.messageMaxBytes = this._messageMaxBytes;
        }
        if (this._noHexPrefix !== undefined) {
            hasAnyValues = true;
            internalValueResult.noHexPrefix = this._noHexPrefix;
        }
        if (this._partitionIncludeSchemaTable !== undefined) {
            hasAnyValues = true;
            internalValueResult.partitionIncludeSchemaTable = this._partitionIncludeSchemaTable;
        }
        if (this._saslPassword !== undefined) {
            hasAnyValues = true;
            internalValueResult.saslPassword = this._saslPassword;
        }
        if (this._saslUsername !== undefined) {
            hasAnyValues = true;
            internalValueResult.saslUsername = this._saslUsername;
        }
        if (this._securityProtocol !== undefined) {
            hasAnyValues = true;
            internalValueResult.securityProtocol = this._securityProtocol;
        }
        if (this._sslCaCertificateArn !== undefined) {
            hasAnyValues = true;
            internalValueResult.sslCaCertificateArn = this._sslCaCertificateArn;
        }
        if (this._sslClientCertificateArn !== undefined) {
            hasAnyValues = true;
            internalValueResult.sslClientCertificateArn = this._sslClientCertificateArn;
        }
        if (this._sslClientKeyArn !== undefined) {
            hasAnyValues = true;
            internalValueResult.sslClientKeyArn = this._sslClientKeyArn;
        }
        if (this._sslClientKeyPassword !== undefined) {
            hasAnyValues = true;
            internalValueResult.sslClientKeyPassword = this._sslClientKeyPassword;
        }
        if (this._topic !== undefined) {
            hasAnyValues = true;
            internalValueResult.topic = this._topic;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._broker = undefined;
            this._includeControlDetails = undefined;
            this._includeNullAndEmpty = undefined;
            this._includePartitionValue = undefined;
            this._includeTableAlterOperations = undefined;
            this._includeTransactionDetails = undefined;
            this._messageFormat = undefined;
            this._messageMaxBytes = undefined;
            this._noHexPrefix = undefined;
            this._partitionIncludeSchemaTable = undefined;
            this._saslPassword = undefined;
            this._saslUsername = undefined;
            this._securityProtocol = undefined;
            this._sslCaCertificateArn = undefined;
            this._sslClientCertificateArn = undefined;
            this._sslClientKeyArn = undefined;
            this._sslClientKeyPassword = undefined;
            this._topic = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._broker = value.broker;
            this._includeControlDetails = value.includeControlDetails;
            this._includeNullAndEmpty = value.includeNullAndEmpty;
            this._includePartitionValue = value.includePartitionValue;
            this._includeTableAlterOperations = value.includeTableAlterOperations;
            this._includeTransactionDetails = value.includeTransactionDetails;
            this._messageFormat = value.messageFormat;
            this._messageMaxBytes = value.messageMaxBytes;
            this._noHexPrefix = value.noHexPrefix;
            this._partitionIncludeSchemaTable = value.partitionIncludeSchemaTable;
            this._saslPassword = value.saslPassword;
            this._saslUsername = value.saslUsername;
            this._securityProtocol = value.securityProtocol;
            this._sslCaCertificateArn = value.sslCaCertificateArn;
            this._sslClientCertificateArn = value.sslClientCertificateArn;
            this._sslClientKeyArn = value.sslClientKeyArn;
            this._sslClientKeyPassword = value.sslClientKeyPassword;
            this._topic = value.topic;
        }
    }
    // broker - computed: false, optional: false, required: true
    _broker;
    get broker() {
        return this.getStringAttribute('broker');
    }
    set broker(value) {
        this._broker = value;
    }
    // Temporarily expose input value. Use with caution.
    get brokerInput() {
        return this._broker;
    }
    // include_control_details - computed: false, optional: true, required: false
    _includeControlDetails;
    get includeControlDetails() {
        return this.getBooleanAttribute('include_control_details');
    }
    set includeControlDetails(value) {
        this._includeControlDetails = value;
    }
    resetIncludeControlDetails() {
        this._includeControlDetails = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeControlDetailsInput() {
        return this._includeControlDetails;
    }
    // include_null_and_empty - computed: false, optional: true, required: false
    _includeNullAndEmpty;
    get includeNullAndEmpty() {
        return this.getBooleanAttribute('include_null_and_empty');
    }
    set includeNullAndEmpty(value) {
        this._includeNullAndEmpty = value;
    }
    resetIncludeNullAndEmpty() {
        this._includeNullAndEmpty = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeNullAndEmptyInput() {
        return this._includeNullAndEmpty;
    }
    // include_partition_value - computed: false, optional: true, required: false
    _includePartitionValue;
    get includePartitionValue() {
        return this.getBooleanAttribute('include_partition_value');
    }
    set includePartitionValue(value) {
        this._includePartitionValue = value;
    }
    resetIncludePartitionValue() {
        this._includePartitionValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includePartitionValueInput() {
        return this._includePartitionValue;
    }
    // include_table_alter_operations - computed: false, optional: true, required: false
    _includeTableAlterOperations;
    get includeTableAlterOperations() {
        return this.getBooleanAttribute('include_table_alter_operations');
    }
    set includeTableAlterOperations(value) {
        this._includeTableAlterOperations = value;
    }
    resetIncludeTableAlterOperations() {
        this._includeTableAlterOperations = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeTableAlterOperationsInput() {
        return this._includeTableAlterOperations;
    }
    // include_transaction_details - computed: false, optional: true, required: false
    _includeTransactionDetails;
    get includeTransactionDetails() {
        return this.getBooleanAttribute('include_transaction_details');
    }
    set includeTransactionDetails(value) {
        this._includeTransactionDetails = value;
    }
    resetIncludeTransactionDetails() {
        this._includeTransactionDetails = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeTransactionDetailsInput() {
        return this._includeTransactionDetails;
    }
    // message_format - computed: false, optional: true, required: false
    _messageFormat;
    get messageFormat() {
        return this.getStringAttribute('message_format');
    }
    set messageFormat(value) {
        this._messageFormat = value;
    }
    resetMessageFormat() {
        this._messageFormat = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get messageFormatInput() {
        return this._messageFormat;
    }
    // message_max_bytes - computed: false, optional: true, required: false
    _messageMaxBytes;
    get messageMaxBytes() {
        return this.getNumberAttribute('message_max_bytes');
    }
    set messageMaxBytes(value) {
        this._messageMaxBytes = value;
    }
    resetMessageMaxBytes() {
        this._messageMaxBytes = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get messageMaxBytesInput() {
        return this._messageMaxBytes;
    }
    // no_hex_prefix - computed: false, optional: true, required: false
    _noHexPrefix;
    get noHexPrefix() {
        return this.getBooleanAttribute('no_hex_prefix');
    }
    set noHexPrefix(value) {
        this._noHexPrefix = value;
    }
    resetNoHexPrefix() {
        this._noHexPrefix = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get noHexPrefixInput() {
        return this._noHexPrefix;
    }
    // partition_include_schema_table - computed: false, optional: true, required: false
    _partitionIncludeSchemaTable;
    get partitionIncludeSchemaTable() {
        return this.getBooleanAttribute('partition_include_schema_table');
    }
    set partitionIncludeSchemaTable(value) {
        this._partitionIncludeSchemaTable = value;
    }
    resetPartitionIncludeSchemaTable() {
        this._partitionIncludeSchemaTable = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get partitionIncludeSchemaTableInput() {
        return this._partitionIncludeSchemaTable;
    }
    // sasl_password - computed: false, optional: true, required: false
    _saslPassword;
    get saslPassword() {
        return this.getStringAttribute('sasl_password');
    }
    set saslPassword(value) {
        this._saslPassword = value;
    }
    resetSaslPassword() {
        this._saslPassword = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get saslPasswordInput() {
        return this._saslPassword;
    }
    // sasl_username - computed: false, optional: true, required: false
    _saslUsername;
    get saslUsername() {
        return this.getStringAttribute('sasl_username');
    }
    set saslUsername(value) {
        this._saslUsername = value;
    }
    resetSaslUsername() {
        this._saslUsername = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get saslUsernameInput() {
        return this._saslUsername;
    }
    // security_protocol - computed: false, optional: true, required: false
    _securityProtocol;
    get securityProtocol() {
        return this.getStringAttribute('security_protocol');
    }
    set securityProtocol(value) {
        this._securityProtocol = value;
    }
    resetSecurityProtocol() {
        this._securityProtocol = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get securityProtocolInput() {
        return this._securityProtocol;
    }
    // ssl_ca_certificate_arn - computed: false, optional: true, required: false
    _sslCaCertificateArn;
    get sslCaCertificateArn() {
        return this.getStringAttribute('ssl_ca_certificate_arn');
    }
    set sslCaCertificateArn(value) {
        this._sslCaCertificateArn = value;
    }
    resetSslCaCertificateArn() {
        this._sslCaCertificateArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sslCaCertificateArnInput() {
        return this._sslCaCertificateArn;
    }
    // ssl_client_certificate_arn - computed: false, optional: true, required: false
    _sslClientCertificateArn;
    get sslClientCertificateArn() {
        return this.getStringAttribute('ssl_client_certificate_arn');
    }
    set sslClientCertificateArn(value) {
        this._sslClientCertificateArn = value;
    }
    resetSslClientCertificateArn() {
        this._sslClientCertificateArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sslClientCertificateArnInput() {
        return this._sslClientCertificateArn;
    }
    // ssl_client_key_arn - computed: false, optional: true, required: false
    _sslClientKeyArn;
    get sslClientKeyArn() {
        return this.getStringAttribute('ssl_client_key_arn');
    }
    set sslClientKeyArn(value) {
        this._sslClientKeyArn = value;
    }
    resetSslClientKeyArn() {
        this._sslClientKeyArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sslClientKeyArnInput() {
        return this._sslClientKeyArn;
    }
    // ssl_client_key_password - computed: false, optional: true, required: false
    _sslClientKeyPassword;
    get sslClientKeyPassword() {
        return this.getStringAttribute('ssl_client_key_password');
    }
    set sslClientKeyPassword(value) {
        this._sslClientKeyPassword = value;
    }
    resetSslClientKeyPassword() {
        this._sslClientKeyPassword = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sslClientKeyPasswordInput() {
        return this._sslClientKeyPassword;
    }
    // topic - computed: false, optional: true, required: false
    _topic;
    get topic() {
        return this.getStringAttribute('topic');
    }
    set topic(value) {
        this._topic = value;
    }
    resetTopic() {
        this._topic = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get topicInput() {
        return this._topic;
    }
}
export function dmsEndpointKinesisSettingsToTerraform(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 {
        include_control_details: cdktf.booleanToTerraform(struct.includeControlDetails),
        include_null_and_empty: cdktf.booleanToTerraform(struct.includeNullAndEmpty),
        include_partition_value: cdktf.booleanToTerraform(struct.includePartitionValue),
        include_table_alter_operations: cdktf.booleanToTerraform(struct.includeTableAlterOperations),
        include_transaction_details: cdktf.booleanToTerraform(struct.includeTransactionDetails),
        message_format: cdktf.stringToTerraform(struct.messageFormat),
        partition_include_schema_table: cdktf.booleanToTerraform(struct.partitionIncludeSchemaTable),
        service_access_role_arn: cdktf.stringToTerraform(struct.serviceAccessRoleArn),
        stream_arn: cdktf.stringToTerraform(struct.streamArn),
    };
}
export class DmsEndpointKinesisSettingsOutputReference 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._includeControlDetails !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeControlDetails = this._includeControlDetails;
        }
        if (this._includeNullAndEmpty !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeNullAndEmpty = this._includeNullAndEmpty;
        }
        if (this._includePartitionValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.includePartitionValue = this._includePartitionValue;
        }
        if (this._includeTableAlterOperations !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeTableAlterOperations = this._includeTableAlterOperations;
        }
        if (this._includeTransactionDetails !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeTransactionDetails = this._includeTransactionDetails;
        }
        if (this._messageFormat !== undefined) {
            hasAnyValues = true;
            internalValueResult.messageFormat = this._messageFormat;
        }
        if (this._partitionIncludeSchemaTable !== undefined) {
            hasAnyValues = true;
            internalValueResult.partitionIncludeSchemaTable = this._partitionIncludeSchemaTable;
        }
        if (this._serviceAccessRoleArn !== undefined) {
            hasAnyValues = true;
            internalValueResult.serviceAccessRoleArn = this._serviceAccessRoleArn;
        }
        if (this._streamArn !== undefined) {
            hasAnyValues = true;
            internalValueResult.streamArn = this._streamArn;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._includeControlDetails = undefined;
            this._includeNullAndEmpty = undefined;
            this._includePartitionValue = undefined;
            this._includeTableAlterOperations = undefined;
            this._includeTransactionDetails = undefined;
            this._messageFormat = undefined;
            this._partitionIncludeSchemaTable = undefined;
            this._serviceAccessRoleArn = undefined;
            this._streamArn = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._includeControlDetails = value.includeControlDetails;
            this._includeNullAndEmpty = value.includeNullAndEmpty;
            this._includePartitionValue = value.includePartitionValue;
            this._includeTableAlterOperations = value.includeTableAlterOperations;
            this._includeTransactionDetails = value.includeTransactionDetails;
            this._messageFormat = value.messageFormat;
            this._partitionIncludeSchemaTable = value.partitionIncludeSchemaTable;
            this._serviceAccessRoleArn = value.serviceAccessRoleArn;
            this._streamArn = value.streamArn;
        }
    }
    // include_control_details - computed: false, optional: true, required: false
    _includeControlDetails;
    get includeControlDetails() {
        return this.getBooleanAttribute('include_control_details');
    }
    set includeControlDetails(value) {
        this._includeControlDetails = value;
    }
    resetIncludeControlDetails() {
        this._includeControlDetails = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeControlDetailsInput() {
        return this._includeControlDetails;
    }
    // include_null_and_empty - computed: false, optional: true, required: false
    _includeNullAndEmpty;
    get includeNullAndEmpty() {
        return this.getBooleanAttribute('include_null_and_empty');
    }
    set includeNullAndEmpty(value) {
        this._includeNullAndEmpty = value;
    }
    resetIncludeNullAndEmpty() {
        this._includeNullAndEmpty = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeNullAndEmptyInput() {
        return this._includeNullAndEmpty;
    }
    // include_partition_value - computed: false, optional: true, required: false
    _includePartitionValue;
    get includePartitionValue() {
        return this.getBooleanAttribute('include_partition_value');
    }
    set includePartitionValue(value) {
        this._includePartitionValue = value;
    }
    resetIncludePartitionValue() {
        this._includePartitionValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includePartitionValueInput() {
        return this._includePartitionValue;
    }
    // include_table_alter_operations - computed: false, optional: true, required: false
    _includeTableAlterOperations;
    get includeTableAlterOperations() {
        return this.getBooleanAttribute('include_table_alter_operations');
    }
    set includeTableAlterOperations(value) {
        this._includeTableAlterOperations = value;
    }
    resetIncludeTableAlterOperations() {
        this._includeTableAlterOperations = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeTableAlterOperationsInput() {
        return this._includeTableAlterOperations;
    }
    // include_transaction_details - computed: false, optional: true, required: false
    _includeTransactionDetails;
    get includeTransactionDetails() {
        return this.getBooleanAttribute('include_transaction_details');
    }
    set includeTransactionDetails(value) {
        this._includeTransactionDetails = value;
    }
    resetIncludeTransactionDetails() {
        this._includeTransactionDetails = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeTransactionDetailsInput() {
        return this._includeTransactionDetails;
    }
    // message_format - computed: false, optional: true, required: false
    _messageFormat;
    get messageFormat() {
        return this.getStringAttribute('message_format');
    }
    set messageFormat(value) {
        this._messageFormat = value;
    }
    resetMessageFormat() {
        this._messageFormat = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get messageFormatInput() {
        return this._messageFormat;
    }
    // partition_include_schema_table - computed: false, optional: true, required: false
    _partitionIncludeSchemaTable;
    get partitionIncludeSchemaTable() {
        return this.getBooleanAttribute('partition_include_schema_table');
    }
    set partitionIncludeSchemaTable(value) {
        this._partitionIncludeSchemaTable = value;
    }
    resetPartitionIncludeSchemaTable() {
        this._partitionIncludeSchemaTable = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get partitionIncludeSchemaTableInput() {
        return this._partitionIncludeSchemaTable;
    }
    // service_access_role_arn - computed: false, optional: true, required: false
    _serviceAccessRoleArn;
    get serviceAccessRoleArn() {
        return this.getStringAttribute('service_access_role_arn');
    }
    set serviceAccessRoleArn(value) {
        this._serviceAccessRoleArn = value;
    }
    resetServiceAccessRoleArn() {
        this._serviceAccessRoleArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get serviceAccessRoleArnInput() {
        return this._serviceAccessRoleArn;
    }
    // stream_arn - computed: false, optional: true, required: false
    _streamArn;
    get streamArn() {
        return this.getStringAttribute('stream_arn');
    }
    set streamArn(value) {
        this._streamArn = value;
    }
    resetStreamArn() {
        this._streamArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get streamArnInput() {
        return this._streamArn;
    }
}
export function dmsEndpointMongodbSettingsToTerraform(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 {
        auth_mechanism: cdktf.stringToTerraform(struct.authMechanism),
        auth_source: cdktf.stringToTerraform(struct.authSource),
        auth_type: cdktf.stringToTerraform(struct.authType),
        docs_to_investigate: cdktf.stringToTerraform(struct.docsToInvestigate),
        extract_doc_id: cdktf.stringToTerraform(struct.extractDocId),
        nesting_level: cdktf.stringToTerraform(struct.nestingLevel),
    };
}
export class DmsEndpointMongodbSettingsOutputReference 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._authMechanism !== undefined) {
            hasAnyValues = true;
            internalValueResult.authMechanism = this._authMechanism;
        }
        if (this._authSource !== undefined) {
            hasAnyValues = true;
            internalValueResult.authSource = this._authSource;
        }
        if (this._authType !== undefined) {
            hasAnyValues = true;
            internalValueResult.authType = this._authType;
        }
        if (this._docsToInvestigate !== undefined) {
            hasAnyValues = true;
            internalValueResult.docsToInvestigate = this._docsToInvestigate;
        }
        if (this._extractDocId !== undefined) {
            hasAnyValues = true;
            internalValueResult.extractDocId = this._extractDocId;
        }
        if (this._nestingLevel !== undefined) {
            hasAnyValues = true;
            internalValueResult.nestingLevel = this._nestingLevel;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._authMechanism = undefined;
            this._authSource = undefined;
            this._authType = undefined;
            this._docsToInvestigate = undefined;
            this._extractDocId = undefined;
            this._nestingLevel = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._authMechanism = value.authMechanism;
            this._authSource = value.authSource;
            this._authType = value.authType;
            this._docsToInvestigate = value.docsToInvestigate;
            this._extractDocId = value.extractDocId;
            this._nestingLevel = value.nestingLevel;
        }
    }
    // auth_mechanism - computed: false, optional: true, required: false
    _authMechanism;
    get authMechanism() {
        return this.getStringAttribute('auth_mechanism');
    }
    set authMechanism(value) {
        this._authMechanism = value;
    }
    resetAuthMechanism() {
        this._authMechanism = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get authMechanismInput() {
        return this._authMechanism;
    }
    // auth_source - computed: false, optional: true, required: false
    _authSource;
    get authSource() {
        return this.getStringAttribute('auth_source');
    }
    set authSource(value) {
        this._authSource = value;
    }
    resetAuthSource() {
        this._authSource = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get authSourceInput() {
        return this._authSource;
    }
    // auth_type - computed: false, optional: true, required: false
    _authType;
    get authType() {
        return this.getStringAttribute('auth_type');
    }
    set authType(value) {
        this._authType = value;
    }
    resetAuthType() {
        this._authType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get authTypeInput() {
        return this._authType;
    }
    // docs_to_investigate - computed: false, optional: true, required: false
    _docsToInvestigate;
    get docsToInvestigate() {
        return this.getStringAttribute('docs_to_investigate');
    }
    set docsToInvestigate(value) {
        this._docsToInvestigate = value;
    }
    resetDocsToInvestigate() {
        this._docsToInvestigate = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get docsToInvestigateInput() {
        return this._docsToInvestigate;
    }
    // extract_doc_id - computed: false, optional: true, required: false
    _extractDocId;
    get extractDocId() {
        return this.getStringAttribute('extract_doc_id');
    }
    set extractDocId(value) {
        this._extractDocId = value;
    }
    resetExtractDocId() {
        this._extractDocId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get extractDocIdInput() {
        return this._extractDocId;
    }
    // nesting_level - computed: false, optional: true, required: false
    _nestingLevel;
    get nestingLevel() {
        return this.getStringAttribute('nesting_level');
    }
    set nestingLevel(value) {
        this._nestingLevel = value;
    }
    resetNestingLevel() {
        this._nestingLevel = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get nestingLevelInput() {
        return this._nestingLevel;
    }
}
export function dmsEndpointS3SettingsToTerraform(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 {
        add_column_name: cdktf.booleanToTerraform(struct.addColumnName),
        bucket_folder: cdktf.stringToTerraform(struct.bucketFolder),
        bucket_name: cdktf.stringToTerraform(struct.bucketName),
        canned_acl_for_objects: cdktf.stringToTerraform(struct.cannedAclForObjects),
        cdc_inserts_and_updates: cdktf.booleanToTerraform(struct.cdcInsertsAndUpdates),
        cdc_inserts_only: cdktf.booleanToTerraform(struct.cdcInsertsOnly),
        cdc_max_batch_interval: cdktf.numberToTerraform(struct.cdcMaxBatchInterval),
        cdc_min_file_size: cdktf.numberToTerraform(struct.cdcMinFileSize),
        cdc_path: cdktf.stringToTerraform(struct.cdcPath),
        compression_type: cdktf.stringToTerraform(struct.compressionType),
        csv_delimiter: cdktf.stringToTerraform(struct.csvDelimiter),
        csv_no_sup_value: cdktf.stringToTerraform(struct.csvNoSupValue),
        csv_null_value: cdktf.stringToTerraform(struct.csvNullValue),
        csv_row_delimiter: cdktf.stringToTerraform(struct.csvRowDelimiter),
        data_format: cdktf.stringToTerraform(struct.dataFormat),
        data_page_size: cdktf.numberToTerraform(struct.dataPageSize),
        date_partition_delimiter: cdktf.stringToTerraform(struct.datePartitionDelimiter),
        date_partition_enabled: cdktf.booleanToTerraform(struct.datePartitionEnabled),
        date_partition_sequence: cdktf.stringToTerraform(struct.datePartitionSequence),
        dict_page_size_limit: cdktf.numberToTerraform(struct.dictPageSizeLimit),
        enable_statistics: cdktf.booleanToTerraform(struct.enableStatistics),
        encoding_type: cdktf.stringToTerraform(struct.encodingType),
        encryption_mode: cdktf.stringToTerraform(struct.encryptionMode),
        external_table_definition: cdktf.stringToTerraform(struct.externalTableDefinition),
        ignore_headers_row: cdktf.numberToTerraform(struct.ignoreHeadersRow),
        include_op_for_full_load: cdktf.booleanToTerraform(struct.includeOpForFullLoad),
        max_file_size: cdktf.numberToTerraform(struct.maxFileSize),
        parquet_timestamp_in_millisecond: cdktf.booleanToTerraform(struct.parquetTimestampInMillisecond),
        parquet_version: cdktf.stringToTerraform(struct.parquetVersion),
        preserve_transactions: cdktf.booleanToTerraform(struct.preserveTransactions),
        rfc_4180: cdktf.booleanToTerraform(struct.rfc4180),
        row_group_length: cdktf.numberToTerraform(struct.rowGroupLength),
        server_side_encryption_kms_key_id: cdktf.stringToTerraform(struct.serverSideEncryptionKmsKeyId),
        service_access_role_arn: cdktf.stringToTerraform(struct.serviceAccessRoleArn),
        timestamp_column_name: cdktf.stringToTerraform(struct.timestampColumnName),
        use_csv_no_sup_value: cdktf.booleanToTerraform(struct.useCsvNoSupValue),
    };
}
export class DmsEndpointS3SettingsOutputReference 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._addColumnName !== undefined) {
            hasAnyValues = true;
            internalValueResult.addColumnName = this._addColumnName;
        }
        if (this._bucketFolder !== undefined) {
            hasAnyValues = true;
            internalValueResult.bucketFolder = this._bucketFolder;
        }
        if (this._bucketName !== undefined) {
            hasAnyValues = true;
            internalValueResult.bucketName = this._bucketName;
        }
        if (this._cannedAclForObjects !== undefined) {
            hasAnyValues = true;
            internalValueResult.cannedAclForObjects = this._cannedAclForObjects;
        }
        if (this._cdcInsertsAndUpdates !== undefined) {
            hasAnyValues = true;
            internalValueResult.cdcInsertsAndUpdates = this._cdcInsertsAndUpdates;
        }
        if (this._cdcInsertsOnly !== undefined) {
            hasAnyValues = true;
            internalValueResult.cdcInsertsOnly = this._cdcInsertsOnly;
        }
        if (this._cdcMaxBatchInterval !== undefined) {
            hasAnyValues = true;
            internalValueResult.cdcMaxBatchInterval = this._cdcMaxBatchInterval;
        }
        if (this._cdcMinFileSize !== undefined) {
            hasAnyValues = true;
            internalValueResult.cdcMinFileSize = this._cdcMinFileSize;
        }
        if (this._cdcPath !== undefined) {
            hasAnyValues = true;
            internalValueResult.cdcPath = this._cdcPath;
        }
        if (this._compressionType !== undefined) {
            hasAnyValues = true;
            internalValueResult.compressionType = this._compressionType;
        }
        if (this._csvDelimiter !== undefined) {
            hasAnyValues = true;
            internalValueResult.csvDelimiter = this._csvDelimiter;
        }
        if (this._csvNoSupValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.csvNoSupValue = this._csvNoSupValue;
        }
        if (this._csvNullValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.csvNullValue = this._csvNullValue;
        }
        if (this._csvRowDelimiter !== undefined) {
            hasAnyValues = true;
            internalValueResult.csvRowDelimiter = this._csvRowDelimiter;
        }
        if (this._dataFormat !== undefined) {
            hasAnyValues = true;
            internalValueResult.dataFormat = this._dataFormat;
        }
        if (this._dataPageSize !== undefined) {
            hasAnyValues = true;
            internalValueResult.dataPageSize = this._dataPageSize;
        }
        if (this._datePartitionDelimiter !== undefined) {
            hasAnyValues = true;
            internalValueResult.datePartitionDelimiter = this._datePartitionDelimiter;
        }
        if (this._datePartitionEnabled !== undefined) {
            hasAnyValues = true;
            internalValueResult.datePartitionEnabled = this._datePartitionEnabled;
        }
        if (this._datePartitionSequence !== undefined) {
            hasAnyValues = true;
            internalValueResult.datePartitionSequence = this._datePartitionSequence;
        }
        if (this._dictPageSizeLimit !== undefined) {
            hasAnyValues = true;
            internalValueResult.dictPageSizeLimit = this._dictPageSizeLimit;
        }
        if (this._enableStatistics !== undefined) {
            hasAnyValues = true;
            internalValueResult.enableStatistics = this._enableStatistics;
        }
        if (this._encodingType !== undefined) {
            hasAnyValues = true;
            internalValueResult.encodingType = this._encodingType;
        }
        if (this._encryptionMode !== undefined) {
            hasAnyValues = true;
            internalValueResult.encryptionMode = this._encryptionMode;
        }
        if (this._externalTableDefinition !== undefined) {
            hasAnyValues = true;
            internalValueResult.externalTableDefinition = this._externalTableDefinition;
        }
        if (this._ignoreHeadersRow !== undefined) {
            hasAnyValues = true;
            internalValueResult.ignoreHeadersRow = this._ignoreHeadersRow;
        }
        if (this._includeOpForFullLoad !== undefined) {
            hasAnyValues = true;
            internalValueResult.includeOpForFullLoad = this._includeOpForFullLoad;
        }
        if (this._maxFileSize !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxFileSize = this._maxFileSize;
        }
        if (this._parquetTimestampInMillisecond !== undefined) {
            hasAnyValues = true;
            internalValueResult.parquetTimestampInMillisecond = this._parquetTimestampInMillisecond;
        }
        if (this._parquetVersion !== undefined) {
            hasAnyValues = true;
            internalValueResult.parquetVersion = this._parquetVersion;
        }
        if (this._preserveTransactions !== undefined) {
            hasAnyValues = true;
            internalValueResult.preserveTransactions = this._preserveTransactions;
        }
        if (this._rfc4180 !== undefined) {
            hasAnyValues = true;
            internalValueResult.rfc4180 = this._rfc4180;
        }
        if (this._rowGroupLength !== undefined) {
            hasAnyValues = true;
            internalValueResult.rowGroupLength = this._rowGroupLength;
        }
        if (this._serverSideEncryptionKmsKeyId !== undefined) {
            hasAnyValues = true;
            internalValueResult.serverSideEncryptionKmsKeyId = this._serverSideEncryptionKmsKeyId;
        }
        if (this._serviceAccessRoleArn !== undefined) {
            hasAnyValues = true;
            internalValueResult.serviceAccessRoleArn = this._serviceAccessRoleArn;
        }
        if (this._timestampColumnName !== undefined) {
            hasAnyValues = true;
            internalValueResult.timestampColumnName = this._timestampColumnName;
        }
        if (this._useCsvNoSupValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.useCsvNoSupValue = this._useCsvNoSupValue;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._addColumnName = undefined;
            this._bucketFolder = undefined;
            this._bucketName = undefined;
            this._cannedAclForObjects = undefined;
            this._cdcInsertsAndUpdates = undefined;
            this._cdcInsertsOnly = undefined;
            this._cdcMaxBatchInterval = undefined;
            this._cdcMinFileSize = undefined;
            this._cdcPath = undefined;
            this._compressionType = undefined;
            this._csvDelimiter = undefined;
            this._csvNoSupValue = undefined;
            this._csvNullValue = undefined;
            this._csvRowDelimiter = undefined;
            this._dataFormat = undefined;
            this._dataPageSize = undefined;
            this._datePartitionDelimiter = undefined;
            this._datePartitionEnabled = undefined;
            this._datePartitionSequence = undefined;
            this._dictPageSizeLimit = undefined;
            this._enableStatistics = undefined;
            this._encodingType = undefined;
            this._encryptionMode = undefined;
            this._externalTableDefinition = undefined;
            this._ignoreHeadersRow = undefined;
            this._includeOpForFullLoad = undefined;
            this._maxFileSize = undefined;
            this._parquetTimestampInMillisecond = undefined;
            this._parquetVersion = undefined;
            this._preserveTransactions = undefined;
            this._rfc4180 = undefined;
            this._rowGroupLength = undefined;
            this._serverSideEncryptionKmsKeyId = undefined;
            this._serviceAccessRoleArn = undefined;
            this._timestampColumnName = undefined;
            this._useCsvNoSupValue = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._addColumnName = value.addColumnName;
            this._bucketFolder = value.bucketFolder;
            this._bucketName = value.bucketName;
            this._cannedAclForObjects = value.cannedAclForObjects;
            this._cdcInsertsAndUpdates = value.cdcInsertsAndUpdates;
            this._cdcInsertsOnly = value.cdcInsertsOnly;
            this._cdcMaxBatchInterval = value.cdcMaxBatchInterval;
            this._cdcMinFileSize = value.cdcMinFileSize;
            this._cdcPath = value.cdcPath;
            this._compressionType = value.compressionType;
            this._csvDelimiter = value.csvDelimiter;
            this._csvNoSupValue = value.csvNoSupValue;
            this._csvNullValue = value.csvNullValue;
            this._csvRowDelimiter = value.csvRowDelimiter;
            this._dataFormat = value.dataFormat;
            this._dataPageSize = value.dataPageSize;
            this._datePartitionDelimiter = value.datePartitionDelimiter;
            this._datePartitionEnabled = value.datePartitionEnabled;
            this._datePartitionSequence = value.datePartitionSequence;
            this._dictPageSizeLimit = value.dictPageSizeLimit;
            this._enableStatistics = value.enableStatistics;
            this._encodingType = value.encodingType;
            this._encryptionMode = value.encryptionMode;
            this._externalTableDefinition = value.externalTableDefinition;
            this._ignoreHeadersRow = value.ignoreHeadersRow;
            this._includeOpForFullLoad = value.includeOpForFullLoad;
            this._maxFileSize = value.maxFileSize;
            this._parquetTimestampInMillisecond = value.parquetTimestampInMillisecond;
            this._parquetVersion = value.parquetVersion;
            this._preserveTransactions = value.preserveTransactions;
            this._rfc4180 = value.rfc4180;
            this._rowGroupLength = value.rowGroupLength;
            this._serverSideEncryptionKmsKeyId = value.serverSideEncryptionKmsKeyId;
            this._serviceAccessRoleArn = value.serviceAccessRoleArn;
            this._timestampColumnName = value.timestampColumnName;
            this._useCsvNoSupValue = value.useCsvNoSupValue;
        }
    }
    // add_column_name - computed: false, optional: true, required: false
    _addColumnName;
    get addColumnName() {
        return this.getBooleanAttribute('add_column_name');
    }
    set addColumnName(value) {
        this._addColumnName = value;
    }
    resetAddColumnName() {
        this._addColumnName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get addColumnNameInput() {
        return this._addColumnName;
    }
    // bucket_folder - computed: false, optional: true, required: false
    _bucketFolder;
    get bucketFolder() {
        return this.getStringAttribute('bucket_folder');
    }
    set bucketFolder(value) {
        this._bucketFolder = value;
    }
    resetBucketFolder() {
        this._bucketFolder = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get bucketFolderInput() {
        return this._bucketFolder;
    }
    // bucket_name - computed: false, optional: true, required: false
    _bucketName;
    get bucketName() {
        return this.getStringAttribute('bucket_name');
    }
    set bucketName(value) {
        this._bucketName = value;
    }
    resetBucketName() {
        this._bucketName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get bucketNameInput() {
        return this._bucketName;
    }
    // canned_acl_for_objects - computed: false, optional: true, required: false
    _cannedAclForObjects;
    get cannedAclForObjects() {
        return this.getStringAttribute('canned_acl_for_objects');
    }
    set cannedAclForObjects(value) {
        this._cannedAclForObjects = value;
    }
    resetCannedAclForObjects() {
        this._cannedAclForObjects = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get cannedAclForObjectsInput() {
        return this._cannedAclForObjects;
    }
    // cdc_inserts_and_updates - computed: false, optional: true, required: false
    _cdcInsertsAndUpdates;
    get cdcInsertsAndUpdates() {
        return this.getBooleanAttribute('cdc_inserts_and_updates');
    }
    set cdcInsertsAndUpdates(value) {
        this._cdcInsertsAndUpdates = value;
    }
    resetCdcInsertsAndUpdates() {
        this._cdcInsertsAndUpdates = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get cdcInsertsAndUpdatesInput() {
        return this._cdcInsertsAndUpdates;
    }
    // cdc_inserts_only - computed: false, optional: true, required: false
    _cdcInsertsOnly;
    get cdcInsertsOnly() {
        return this.getBooleanAttribute('cdc_inserts_only');
    }
    set cdcInsertsOnly(value) {
        this._cdcInsertsOnly = value;
    }
    resetCdcInsertsOnly() {
        this._cdcInsertsOnly = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get cdcInsertsOnlyInput() {
        return this._cdcInsertsOnly;
    }
    // cdc_max_batch_interval - computed: false, optional: true, required: false
    _cdcMaxBatchInterval;
    get cdcMaxBatchInterval() {
        return this.getNumberAttribute('cdc_max_batch_interval');
    }
    set cdcMaxBatchInterval(value) {
        this._cdcMaxBatchInterval = value;
    }
    resetCdcMaxBatchInterval() {
        this._cdcMaxBatchInterval = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get cdcMaxBatchIntervalInput() {
        return this._cdcMaxBatchInterval;
    }
    // cdc_min_file_size - computed: false, optional: true, required: false
    _cdcMinFileSize;
    get cdcMinFileSize() {
        return this.getNumberAttribute('cdc_min_file_size');
    }
    set cdcMinFileSize(value) {
        this._cdcMinFileSize = value;
    }
    resetCdcMinFileSize() {
        this._cdcMinFileSize = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get cdcMinFileSizeInput() {
        return this._cdcMinFileSize;
    }
    // cdc_path - computed: false, optional: true, required: false
    _cdcPath;
    get cdcPath() {
        return this.getStringAttribute('cdc_path');
    }
    set cdcPath(value) {
        this._cdcPath = value;
    }
    resetCdcPath() {
        this._cdcPath = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get cdcPathInput() {
        return this._cdcPath;
    }
    // compression_type - computed: false, optional: true, required: false
    _compressionType;
    get compressionType() {
        return this.getStringAttribute('compression_type');
    }
    set compressionType(value) {
        this._compressionType = value;
    }
    resetCompressionType() {
        this._compressionType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get compressionTypeInput() {
        return this._compressionType;
    }
    // csv_delimiter - computed: false, optional: true, required: false
    _csvDelimiter;
    get csvDelimiter() {
        return this.getStringAttribute('csv_delimiter');
    }
    set csvDelimiter(value) {
        this._csvDelimiter = value;
    }
    resetCsvDelimiter() {
        this._csvDelimiter = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get csvDelimiterInput() {
        return this._csvDelimiter;
    }
    // csv_no_sup_value - computed: false, optional: true, required: false
    _csvNoSupValue;
    get csvNoSupValue() {
        return this.getStringAttribute('csv_no_sup_value');
    }
    set csvNoSupValue(value) {
        this._csvNoSupValue = value;
    }
    resetCsvNoSupValue() {
        this._csvNoSupValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get csvNoSupValueInput() {
        return this._csvNoSupValue;
    }
    // csv_null_value - computed: false, optional: true, required: false
    _csvNullValue;
    get csvNullValue() {
        return this.getStringAttribute('csv_null_value');
    }
    set csvNullValue(value) {
        this._csvNullValue = value;
    }
    resetCsvNullValue() {
        this._csvNullValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get csvNullValueInput() {
        return this._csvNullValue;
    }
    // csv_row_delimiter - computed: false, optional: true, required: false
    _csvRowDelimiter;
    get csvRowDelimiter() {
        return this.getStringAttribute('csv_row_delimiter');
    }
    set csvRowDelimiter(value) {
        this._csvRowDelimiter = value;
    }
    resetCsvRowDelimiter() {
        this._csvRowDelimiter = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get csvRowDelimiterInput() {
        return this._csvRowDelimiter;
    }
    // data_format - computed: false, optional: true, required: false
    _dataFormat;
    get dataFormat() {
        return this.getStringAttribute('data_format');
    }
    set dataFormat(value) {
        this._dataFormat = value;
    }
    resetDataFormat() {
        this._dataFormat = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get dataFormatInput() {
        return this._dataFormat;
    }
    // data_page_size - computed: false, optional: true, required: false
    _dataPageSize;
    get dataPageSize() {
        return this.getNumberAttribute('data_page_size');
    }
    set dataPageSize(value) {
        this._dataPageSize = value;
    }
    resetDataPageSize() {
        this._dataPageSize = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get dataPageSizeInput() {
        return this._dataPageSize;
    }
    // date_partition_delimiter - computed: false, optional: true, required: false
    _datePartitionDelimiter;
    get datePartitionDelimiter() {
        return this.getStringAttribute('date_partition_delimiter');
    }
    set datePartitionDelimiter(value) {
        this._datePartitionDelimiter = value;
    }
    resetDatePartitionDelimiter() {
        this._datePartitionDelimiter = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get datePartitionDelimiterInput() {
        return this._datePartitionDelimiter;
    }
    // date_partition_enabled - computed: false, optional: true, required: false
    _datePartitionEnabled;
    get datePartitionEnabled() {
        return this.getBooleanAttribute('date_partition_enabled');
    }
    set datePartitionEnabled(value) {
        this._datePartitionEnabled = value;
    }
    resetDatePartitionEnabled() {
        this._datePartitionEnabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get datePartitionEnabledInput() {
        return this._datePartitionEnabled;
    }
    // date_partition_sequence - computed: false, optional: true, required: false
    _datePartitionSequence;
    get datePartitionSequence() {
        return this.getStringAttribute('date_partition_sequence');
    }
    set datePartitionSequence(value) {
        this._datePartitionSequence = value;
    }
    resetDatePartitionSequence() {
        this._datePartitionSequence = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get datePartitionSequenceInput() {
        return this._datePartitionSequence;
    }
    // dict_page_size_limit - computed: false, optional: true, required: false
    _dictPageSizeLimit;
    get dictPageSizeLimit() {
        return this.getNumberAttribute('dict_page_size_limit');
    }
    set dictPageSizeLimit(value) {
        this._dictPageSizeLimit = value;
    }
    resetDictPageSizeLimit() {
        this._dictPageSizeLimit = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get dictPageSizeLimitInput() {
        return this._dictPageSizeLimit;
    }
    // enable_statistics - computed: false, optional: true, required: false
    _enableStatistics;
    get enableStatistics() {
        return this.getBooleanAttribute('enable_statistics');
    }
    set enableStatistics(value) {
        this._enableStatistics = value;
    }
    resetEnableStatistics() {
        this._enableStatistics = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enableStatisticsInput() {
        return this._enableStatistics;
    }
    // encoding_type - computed: false, optional: true, required: false
    _encodingType;
    get encodingType() {
        return this.getStringAttribute('encoding_type');
    }
    set encodingType(value) {
        this._encodingType = value;
    }
    resetEncodingType() {
        this._encodingType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get encodingTypeInput() {
        return this._encodingType;
    }
    // encryption_mode - computed: false, optional: true, required: false
    _encryptionMode;
    get encryptionMode() {
        return this.getStringAttribute('encryption_mode');
    }
    set encryptionMode(value) {
        this._encryptionMode = value;
    }
    resetEncryptionMode() {
        this._encryptionMode = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get encryptionModeInput() {
        return this._encryptionMode;
    }
    // external_table_definition - computed: false, optional: true, required: false
    _externalTableDefinition;
    get externalTableDefinition() {
        return this.getStringAttribute('external_table_definition');
    }
    set externalTableDefinition(value) {
        this._externalTableDefinition = value;
    }
    resetExternalTableDefinition() {
        this._externalTableDefinition = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get externalTableDefinitionInput() {
        return this._externalTableDefinition;
    }
    // ignore_headers_row - computed: false, optional: true, required: false
    _ignoreHeadersRow;
    get ignoreHeadersRow() {
        return this.getNumberAttribute('ignore_headers_row');
    }
    set ignoreHeadersRow(value) {
        this._ignoreHeadersRow = value;
    }
    resetIgnoreHeadersRow() {
        this._ignoreHeadersRow = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ignoreHeadersRowInput() {
        return this._ignoreHeadersRow;
    }
    // include_op_for_full_load - computed: false, optional: true, required: false
    _includeOpForFullLoad;
    get includeOpForFullLoad() {
        return this.getBooleanAttribute('include_op_for_full_load');
    }
    set includeOpForFullLoad(value) {
        this._includeOpForFullLoad = value;
    }
    resetIncludeOpForFullLoad() {
        this._includeOpForFullLoad = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeOpForFullLoadInput() {
        return this._includeOpForFullLoad;
    }
    // max_file_size - computed: false, optional: true, required: false
    _maxFileSize;
    get maxFileSize() {
        return this.getNumberAttribute('max_file_size');
    }
    set maxFileSize(value) {
        this._maxFileSize = value;
    }
    resetMaxFileSize() {
        this._maxFileSize = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxFileSizeInput() {
        return this._maxFileSize;
    }
    // parquet_timestamp_in_millisecond - computed: false, optional: true, required: false
    _parquetTimestampInMillisecond;
    get parquetTimestampInMillisecond() {
        return this.getBooleanAttribute('parquet_timestamp_in_millisecond');
    }
    set parquetTimestampInMillisecond(value) {
        this._parquetTimestampInMillisecond = value;
    }
    resetParquetTimestampInMillisecond() {
        this._parquetTimestampInMillisecond = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get parquetTimestampInMillisecondInput() {
        return this._parquetTimestampInMillisecond;
    }
    // parquet_version - computed: false, optional: true, required: false
    _parquetVersion;
    get parquetVersion() {
        return this.getStringAttribute('parquet_version');
    }
    set parquetVersion(value) {
        this._parquetVersion = value;
    }
    resetParquetVersion() {
        this._parquetVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get parquetVersionInput() {
        return this._parquetVersion;
    }
    // preserve_transactions - computed: false, optional: true, required: false
    _preserveTransactions;
    get preserveTransactions() {
        return this.getBooleanAttribute('preserve_transactions');
    }
    set preserveTransactions(value) {
        this._preserveTransactions = value;
    }
    resetPreserveTransactions() {
        this._preserveTransactions = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get preserveTransactionsInput() {
        return this._preserveTransactions;
    }
    // rfc_4180 - computed: false, optional: true, required: false
    _rfc4180;
    get rfc4180() {
        return this.getBooleanAttribute('rfc_4180');
    }
    set rfc4180(value) {
        this._rfc4180 = value;
    }
    resetRfc4180() {
        this._rfc4180 = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get rfc4180Input() {
        return this._rfc4180;
    }
    // row_group_length - computed: false, optional: true, required: false
    _rowGroupLength;
    get rowGroupLength() {
        return this.getNumberAttribute('row_group_length');
    }
    set rowGroupLength(value) {
        this._rowGroupLength = value;
    }
    resetRowGroupLength() {
        this._rowGroupLength = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get rowGroupLengthInput() {
        return this._rowGroupLength;
    }
    // server_side_encryption_kms_key_id - computed: false, optional: true, required: false
    _serverSideEncryptionKmsKeyId;
    get serverSideEncryptionKmsKeyId() {
        return this.getStringAttribute('server_side_encryption_kms_key_id');
    }
    set serverSideEncryptionKmsKeyId(value) {
        this._serverSideEncryptionKmsKeyId = value;
    }
    resetServerSideEncryptionKmsKeyId() {
        this._serverSideEncryptionKmsKeyId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get serverSideEncryptionKmsKeyIdInput() {
        return this._serverSideEncryptionKmsKeyId;
    }
    // service_access_role_arn - computed: false, optional: true, required: false
    _serviceAccessRoleArn;
    get serviceAccessRoleArn() {
        return this.getStringAttribute('service_access_role_arn');
    }
    set serviceAccessRoleArn(value) {
        this._serviceAccessRoleArn = value;
    }
    resetServiceAccessRoleArn() {
        this._serviceAccessRoleArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get serviceAccessRoleArnInput() {
        return this._serviceAccessRoleArn;
    }
    // timestamp_column_name - computed: false, optional: true, required: false
    _timestampColumnName;
    get timestampColumnName() {
        return this.getStringAttribute('timestamp_column_name');
    }
    set timestampColumnName(value) {
        this._timestampColumnName = value;
    }
    resetTimestampColumnName() {
        this._timestampColumnName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get timestampColumnNameInput() {
        return this._timestampColumnName;
    }
    // use_csv_no_sup_value - computed: false, optional: true, required: false
    _useCsvNoSupValue;
    get useCsvNoSupValue() {
        return this.getBooleanAttribute('use_csv_no_sup_value');
    }
    set useCsvNoSupValue(value) {
        this._useCsvNoSupValue = value;
    }
    resetUseCsvNoSupValue() {
        this._useCsvNoSupValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get useCsvNoSupValueInput() {
        return this._useCsvNoSupValue;
    }
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/dms_endpoint aws_dms_endpoint}
*/
export class DmsEndpoint extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_dms_endpoint";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/dms_endpoint aws_dms_endpoint} 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 DmsEndpointConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_dms_endpoint',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._certificateArn = config.certificateArn;
        this._databaseName = config.databaseName;
        this._endpointId = config.endpointId;
        this._endpointType = config.endpointType;
        this._engineName = config.engineName;
        this._extraConnectionAttributes = config.extraConnectionAttributes;
        this._kmsKeyArn = config.kmsKeyArn;
        this._password = config.password;
        this._port = config.port;
        this._secretsManagerAccessRoleArn = config.secretsManagerAccessRoleArn;
        this._secretsManagerArn = config.secretsManagerArn;
        this._serverName = config.serverName;
        this._serviceAccessRole = config.serviceAccessRole;
        this._sslMode = config.sslMode;
        this._tags = config.tags;
        this._tagsAll = config.tagsAll;
        this._username = config.username;
        this._elasticsearchSettings.internalValue = config.elasticsearchSettings;
        this._kafkaSettings.internalValue = config.kafkaSettings;
        this._kinesisSettings.internalValue = config.kinesisSettings;
        this._mongodbSettings.internalValue = config.mongodbSettings;
        this._s3Settings.internalValue = config.s3Settings;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // certificate_arn - computed: true, optional: true, required: false
    _certificateArn;
    get certificateArn() {
        return this.getStringAttribute('certificate_arn');
    }
    set certificateArn(value) {
        this._certificateArn = value;
    }
    resetCertificateArn() {
        this._certificateArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get certificateArnInput() {
        return this._certificateArn;
    }
    // database_name - computed: false, optional: true, required: false
    _databaseName;
    get databaseName() {
        return this.getStringAttribute('database_name');
    }
    set databaseName(value) {
        this._databaseName = value;
    }
    resetDatabaseName() {
        this._databaseName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get databaseNameInput() {
        return this._databaseName;
    }
    // endpoint_arn - computed: true, optional: false, required: false
    get endpointArn() {
        return this.getStringAttribute('endpoint_arn');
    }
    // endpoint_id - computed: false, optional: false, required: true
    _endpointId;
    get endpointId() {
        return this.getStringAttribute('endpoint_id');
    }
    set endpointId(value) {
        this._endpointId = value;
    }
    // Temporarily expose input value. Use with caution.
    get endpointIdInput() {
        return this._endpointId;
    }
    // endpoint_type - computed: false, optional: false, required: true
    _endpointType;
    get endpointType() {
        return this.getStringAttribute('endpoint_type');
    }
    set endpointType(value) {
        this._endpointType = value;
    }
    // Temporarily expose input value. Use with caution.
    get endpointTypeInput() {
        return this._endpointType;
    }
    // engine_name - computed: false, optional: false, required: true
    _engineName;
    get engineName() {
        return this.getStringAttribute('engine_name');
    }
    set engineName(value) {
        this._engineName = value;
    }
    // Temporarily expose input value. Use with caution.
    get engineNameInput() {
        return this._engineName;
    }
    // extra_connection_attributes - computed: true, optional: true, required: false
    _extraConnectionAttributes;
    get extraConnectionAttributes() {
        return this.getStringAttribute('extra_connection_attributes');
    }
    set extraConnectionAttributes(value) {
        this._extraConnectionAttributes = value;
    }
    resetExtraConnectionAttributes() {
        this._extraConnectionAttributes = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get extraConnectionAttributesInput() {
        return this._extraConnectionAttributes;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // kms_key_arn - computed: true, optional: true, required: false
    _kmsKeyArn;
    get kmsKeyArn() {
        return this.getStringAttribute('kms_key_arn');
    }
    set kmsKeyArn(value) {
        this._kmsKeyArn = value;
    }
    resetKmsKeyArn() {
        this._kmsKeyArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get kmsKeyArnInput() {
        return this._kmsKeyArn;
    }
    // password - computed: false, optional: true, required: false
    _password;
    get password() {
        return this.getStringAttribute('password');
    }
    set password(value) {
        this._password = value;
    }
    resetPassword() {
        this._password = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get passwordInput() {
        return this._password;
    }
    // port - computed: false, optional: true, required: false
    _port;
    get port() {
        return this.getNumberAttribute('port');
    }
    set port(value) {
        this._port = value;
    }
    resetPort() {
        this._port = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get portInput() {
        return this._port;
    }
    // secrets_manager_access_role_arn - computed: false, optional: true, required: false
    _secretsManagerAccessRoleArn;
    get secretsManagerAccessRoleArn() {
        return this.getStringAttribute('secrets_manager_access_role_arn');
    }
    set secretsManagerAccessRoleArn(value) {
        this._secretsManagerAccessRoleArn = value;
    }
    resetSecretsManagerAccessRoleArn() {
        this._secretsManagerAccessRoleArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get secretsManagerAccessRoleArnInput() {
        return this._secretsManagerAccessRoleArn;
    }
    // secrets_manager_arn - computed: false, optional: true, required: false
    _secretsManagerArn;
    get secretsManagerArn() {
        return this.getStringAttribute('secrets_manager_arn');
    }
    set secretsManagerArn(value) {
        this._secretsManagerArn = value;
    }
    resetSecretsManagerArn() {
        this._secretsManagerArn = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get secretsManagerArnInput() {
        return this._secretsManagerArn;
    }
    // server_name - computed: false, optional: true, required: false
    _serverName;
    get serverName() {
        return this.getStringAttribute('server_name');
    }
    set serverName(value) {
        this._serverName = value;
    }
    resetServerName() {
        this._serverName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get serverNameInput() {
        return this._serverName;
    }
    // service_access_role - computed: false, optional: true, required: false
    _serviceAccessRole;
    get serviceAccessRole() {
        return this.getStringAttribute('service_access_role');
    }
    set serviceAccessRole(value) {
        this._serviceAccessRole = value;
    }
    resetServiceAccessRole() {
        this._serviceAccessRole = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get serviceAccessRoleInput() {
        return this._serviceAccessRole;
    }
    // ssl_mode - computed: true, optional: true, required: false
    _sslMode;
    get sslMode() {
        return this.getStringAttribute('ssl_mode');
    }
    set sslMode(value) {
        this._sslMode = value;
    }
    resetSslMode() {
        this._sslMode = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sslModeInput() {
        return this._sslMode;
    }
    // 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;
    }
    // username - computed: false, optional: true, required: false
    _username;
    get username() {
        return this.getStringAttribute('username');
    }
    set username(value) {
        this._username = value;
    }
    resetUsername() {
        this._username = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get usernameInput() {
        return this._username;
    }
    // elasticsearch_settings - computed: false, optional: true, required: false
    _elasticsearchSettings = new DmsEndpointElasticsearchSettingsOutputReference(this, "elasticsearch_settings", true);
    get elasticsearchSettings() {
        return this._elasticsearchSettings;
    }
    putElasticsearchSettings(value) {
        this._elasticsearchSettings.internalValue = value;
    }
    resetElasticsearchSettings() {
        this._elasticsearchSettings.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get elasticsearchSettingsInput() {
        return this._elasticsearchSettings.internalValue;
    }
    // kafka_settings - computed: false, optional: true, required: false
    _kafkaSettings = new DmsEndpointKafkaSettingsOutputReference(this, "kafka_settings", true);
    get kafkaSettings() {
        return this._kafkaSettings;
    }
    putKafkaSettings(value) {
        this._kafkaSettings.internalValue = value;
    }
    resetKafkaSettings() {
        this._kafkaSettings.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get kafkaSettingsInput() {
        return this._kafkaSettings.internalValue;
    }
    // kinesis_settings - computed: false, optional: true, required: false
    _kinesisSettings = new DmsEndpointKinesisSettingsOutputReference(this, "kinesis_settings", true);
    get kinesisSettings() {
        return this._kinesisSettings;
    }
    putKinesisSettings(value) {
        this._kinesisSettings.internalValue = value;
    }
    resetKinesisSettings() {
        this._kinesisSettings.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get kinesisSettingsInput() {
        return this._kinesisSettings.internalValue;
    }
    // mongodb_settings - computed: false, optional: true, required: false
    _mongodbSettings = new DmsEndpointMongodbSettingsOutputReference(this, "mongodb_settings", true);
    get mongodbSettings() {
        return this._mongodbSettings;
    }
    putMongodbSettings(value) {
        this._mongodbSettings.internalValue = value;
    }
    resetMongodbSettings() {
        this._mongodbSettings.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get mongodbSettingsInput() {
        return this._mongodbSettings.internalValue;
    }
    // s3_settings - computed: false, optional: true, required: false
    _s3Settings = new DmsEndpointS3SettingsOutputReference(this, "s3_settings", true);
    get s3Settings() {
        return this._s3Settings;
    }
    putS3Settings(value) {
        this._s3Settings.internalValue = value;
    }
    resetS3Settings() {
        this._s3Settings.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3SettingsInput() {
        return this._s3Settings.internalValue;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            certificate_arn: cdktf.stringToTerraform(this._certificateArn),
            database_name: cdktf.stringToTerraform(this._databaseName),
            endpoint_id: cdktf.stringToTerraform(this._endpointId),
            endpoint_type: cdktf.stringToTerraform(this._endpointType),
            engine_name: cdktf.stringToTerraform(this._engineName),
            extra_connection_attributes: cdktf.stringToTerraform(this._extraConnectionAttributes),
            kms_key_arn: cdktf.stringToTerraform(this._kmsKeyArn),
            password: cdktf.stringToTerraform(this._password),
            port: cdktf.numberToTerraform(this._port),
            secrets_manager_access_role_arn: cdktf.stringToTerraform(this._secretsManagerAccessRoleArn),
            secrets_manager_arn: cdktf.stringToTerraform(this._secretsManagerArn),
            server_name: cdktf.stringToTerraform(this._serverName),
            service_access_role: cdktf.stringToTerraform(this._serviceAccessRole),
            ssl_mode: cdktf.stringToTerraform(this._sslMode),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
            tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll),
            username: cdktf.stringToTerraform(this._username),
            elasticsearch_settings: dmsEndpointElasticsearchSettingsToTerraform(this._elasticsearchSettings.internalValue),
            kafka_settings: dmsEndpointKafkaSettingsToTerraform(this._kafkaSettings.internalValue),
            kinesis_settings: dmsEndpointKinesisSettingsToTerraform(this._kinesisSettings.internalValue),
            mongodb_settings: dmsEndpointMongodbSettingsToTerraform(this._mongodbSettings.internalValue),
            s3_settings: dmsEndpointS3SettingsToTerraform(this._s3Settings.internalValue),
        };
    }
}
//# sourceMappingURL=dms-endpoint.js.map