// generated from terraform resource schema
import * as cdktf from 'cdktf';
export function sagemakerEndpointConfigurationAsyncInferenceConfigClientConfigToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        max_concurrent_invocations_per_instance: cdktf.numberToTerraform(struct.maxConcurrentInvocationsPerInstance),
    };
}
export class SagemakerEndpointConfigurationAsyncInferenceConfigClientConfigOutputReference 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._maxConcurrentInvocationsPerInstance !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxConcurrentInvocationsPerInstance = this._maxConcurrentInvocationsPerInstance;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._maxConcurrentInvocationsPerInstance = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._maxConcurrentInvocationsPerInstance = value.maxConcurrentInvocationsPerInstance;
        }
    }
    // max_concurrent_invocations_per_instance - computed: false, optional: true, required: false
    _maxConcurrentInvocationsPerInstance;
    get maxConcurrentInvocationsPerInstance() {
        return this.getNumberAttribute('max_concurrent_invocations_per_instance');
    }
    set maxConcurrentInvocationsPerInstance(value) {
        this._maxConcurrentInvocationsPerInstance = value;
    }
    resetMaxConcurrentInvocationsPerInstance() {
        this._maxConcurrentInvocationsPerInstance = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxConcurrentInvocationsPerInstanceInput() {
        return this._maxConcurrentInvocationsPerInstance;
    }
}
export function sagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigNotificationConfigToTerraform(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 {
        error_topic: cdktf.stringToTerraform(struct.errorTopic),
        success_topic: cdktf.stringToTerraform(struct.successTopic),
    };
}
export class SagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigNotificationConfigOutputReference 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._errorTopic !== undefined) {
            hasAnyValues = true;
            internalValueResult.errorTopic = this._errorTopic;
        }
        if (this._successTopic !== undefined) {
            hasAnyValues = true;
            internalValueResult.successTopic = this._successTopic;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._errorTopic = undefined;
            this._successTopic = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._errorTopic = value.errorTopic;
            this._successTopic = value.successTopic;
        }
    }
    // error_topic - computed: false, optional: true, required: false
    _errorTopic;
    get errorTopic() {
        return this.getStringAttribute('error_topic');
    }
    set errorTopic(value) {
        this._errorTopic = value;
    }
    resetErrorTopic() {
        this._errorTopic = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get errorTopicInput() {
        return this._errorTopic;
    }
    // success_topic - computed: false, optional: true, required: false
    _successTopic;
    get successTopic() {
        return this.getStringAttribute('success_topic');
    }
    set successTopic(value) {
        this._successTopic = value;
    }
    resetSuccessTopic() {
        this._successTopic = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get successTopicInput() {
        return this._successTopic;
    }
}
export function sagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigToTerraform(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),
        s3_output_path: cdktf.stringToTerraform(struct.s3OutputPath),
        notification_config: sagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigNotificationConfigToTerraform(struct.notificationConfig),
    };
}
export class SagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigOutputReference 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._s3OutputPath !== undefined) {
            hasAnyValues = true;
            internalValueResult.s3OutputPath = this._s3OutputPath;
        }
        if (this._notificationConfig?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.notificationConfig = this._notificationConfig?.internalValue;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._kmsKeyId = undefined;
            this._s3OutputPath = undefined;
            this._notificationConfig.internalValue = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._kmsKeyId = value.kmsKeyId;
            this._s3OutputPath = value.s3OutputPath;
            this._notificationConfig.internalValue = value.notificationConfig;
        }
    }
    // kms_key_id - computed: false, 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;
    }
    // s3_output_path - computed: false, optional: false, required: true
    _s3OutputPath;
    get s3OutputPath() {
        return this.getStringAttribute('s3_output_path');
    }
    set s3OutputPath(value) {
        this._s3OutputPath = value;
    }
    // Temporarily expose input value. Use with caution.
    get s3OutputPathInput() {
        return this._s3OutputPath;
    }
    // notification_config - computed: false, optional: true, required: false
    _notificationConfig = new SagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigNotificationConfigOutputReference(this, "notification_config", true);
    get notificationConfig() {
        return this._notificationConfig;
    }
    putNotificationConfig(value) {
        this._notificationConfig.internalValue = value;
    }
    resetNotificationConfig() {
        this._notificationConfig.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get notificationConfigInput() {
        return this._notificationConfig.internalValue;
    }
}
export function sagemakerEndpointConfigurationAsyncInferenceConfigToTerraform(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 {
        client_config: sagemakerEndpointConfigurationAsyncInferenceConfigClientConfigToTerraform(struct.clientConfig),
        output_config: sagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigToTerraform(struct.outputConfig),
    };
}
export class SagemakerEndpointConfigurationAsyncInferenceConfigOutputReference 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._clientConfig?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.clientConfig = this._clientConfig?.internalValue;
        }
        if (this._outputConfig?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.outputConfig = this._outputConfig?.internalValue;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._clientConfig.internalValue = undefined;
            this._outputConfig.internalValue = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._clientConfig.internalValue = value.clientConfig;
            this._outputConfig.internalValue = value.outputConfig;
        }
    }
    // client_config - computed: false, optional: true, required: false
    _clientConfig = new SagemakerEndpointConfigurationAsyncInferenceConfigClientConfigOutputReference(this, "client_config", true);
    get clientConfig() {
        return this._clientConfig;
    }
    putClientConfig(value) {
        this._clientConfig.internalValue = value;
    }
    resetClientConfig() {
        this._clientConfig.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get clientConfigInput() {
        return this._clientConfig.internalValue;
    }
    // output_config - computed: false, optional: false, required: true
    _outputConfig = new SagemakerEndpointConfigurationAsyncInferenceConfigOutputConfigOutputReference(this, "output_config", true);
    get outputConfig() {
        return this._outputConfig;
    }
    putOutputConfig(value) {
        this._outputConfig.internalValue = value;
    }
    // Temporarily expose input value. Use with caution.
    get outputConfigInput() {
        return this._outputConfig.internalValue;
    }
}
export function sagemakerEndpointConfigurationDataCaptureConfigCaptureContentTypeHeaderToTerraform(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 {
        csv_content_types: cdktf.listMapper(cdktf.stringToTerraform)(struct.csvContentTypes),
        json_content_types: cdktf.listMapper(cdktf.stringToTerraform)(struct.jsonContentTypes),
    };
}
export class SagemakerEndpointConfigurationDataCaptureConfigCaptureContentTypeHeaderOutputReference 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._csvContentTypes !== undefined) {
            hasAnyValues = true;
            internalValueResult.csvContentTypes = this._csvContentTypes;
        }
        if (this._jsonContentTypes !== undefined) {
            hasAnyValues = true;
            internalValueResult.jsonContentTypes = this._jsonContentTypes;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._csvContentTypes = undefined;
            this._jsonContentTypes = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._csvContentTypes = value.csvContentTypes;
            this._jsonContentTypes = value.jsonContentTypes;
        }
    }
    // csv_content_types - computed: false, optional: true, required: false
    _csvContentTypes;
    get csvContentTypes() {
        return cdktf.Fn.tolist(this.getListAttribute('csv_content_types'));
    }
    set csvContentTypes(value) {
        this._csvContentTypes = value;
    }
    resetCsvContentTypes() {
        this._csvContentTypes = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get csvContentTypesInput() {
        return this._csvContentTypes;
    }
    // json_content_types - computed: false, optional: true, required: false
    _jsonContentTypes;
    get jsonContentTypes() {
        return cdktf.Fn.tolist(this.getListAttribute('json_content_types'));
    }
    set jsonContentTypes(value) {
        this._jsonContentTypes = value;
    }
    resetJsonContentTypes() {
        this._jsonContentTypes = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get jsonContentTypesInput() {
        return this._jsonContentTypes;
    }
}
export function sagemakerEndpointConfigurationDataCaptureConfigCaptureOptionsToTerraform(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 {
        capture_mode: cdktf.stringToTerraform(struct.captureMode),
    };
}
export function sagemakerEndpointConfigurationDataCaptureConfigToTerraform(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 {
        destination_s3_uri: cdktf.stringToTerraform(struct.destinationS3Uri),
        enable_capture: cdktf.booleanToTerraform(struct.enableCapture),
        initial_sampling_percentage: cdktf.numberToTerraform(struct.initialSamplingPercentage),
        kms_key_id: cdktf.stringToTerraform(struct.kmsKeyId),
        capture_content_type_header: sagemakerEndpointConfigurationDataCaptureConfigCaptureContentTypeHeaderToTerraform(struct.captureContentTypeHeader),
        capture_options: cdktf.listMapper(sagemakerEndpointConfigurationDataCaptureConfigCaptureOptionsToTerraform)(struct.captureOptions),
    };
}
export class SagemakerEndpointConfigurationDataCaptureConfigOutputReference 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._destinationS3Uri !== undefined) {
            hasAnyValues = true;
            internalValueResult.destinationS3Uri = this._destinationS3Uri;
        }
        if (this._enableCapture !== undefined) {
            hasAnyValues = true;
            internalValueResult.enableCapture = this._enableCapture;
        }
        if (this._initialSamplingPercentage !== undefined) {
            hasAnyValues = true;
            internalValueResult.initialSamplingPercentage = this._initialSamplingPercentage;
        }
        if (this._kmsKeyId !== undefined) {
            hasAnyValues = true;
            internalValueResult.kmsKeyId = this._kmsKeyId;
        }
        if (this._captureContentTypeHeader?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.captureContentTypeHeader = this._captureContentTypeHeader?.internalValue;
        }
        if (this._captureOptions !== undefined) {
            hasAnyValues = true;
            internalValueResult.captureOptions = this._captureOptions;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._destinationS3Uri = undefined;
            this._enableCapture = undefined;
            this._initialSamplingPercentage = undefined;
            this._kmsKeyId = undefined;
            this._captureContentTypeHeader.internalValue = undefined;
            this._captureOptions = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._destinationS3Uri = value.destinationS3Uri;
            this._enableCapture = value.enableCapture;
            this._initialSamplingPercentage = value.initialSamplingPercentage;
            this._kmsKeyId = value.kmsKeyId;
            this._captureContentTypeHeader.internalValue = value.captureContentTypeHeader;
            this._captureOptions = value.captureOptions;
        }
    }
    // destination_s3_uri - computed: false, optional: false, required: true
    _destinationS3Uri;
    get destinationS3Uri() {
        return this.getStringAttribute('destination_s3_uri');
    }
    set destinationS3Uri(value) {
        this._destinationS3Uri = value;
    }
    // Temporarily expose input value. Use with caution.
    get destinationS3UriInput() {
        return this._destinationS3Uri;
    }
    // enable_capture - computed: false, optional: true, required: false
    _enableCapture;
    get enableCapture() {
        return this.getBooleanAttribute('enable_capture');
    }
    set enableCapture(value) {
        this._enableCapture = value;
    }
    resetEnableCapture() {
        this._enableCapture = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enableCaptureInput() {
        return this._enableCapture;
    }
    // initial_sampling_percentage - computed: false, optional: false, required: true
    _initialSamplingPercentage;
    get initialSamplingPercentage() {
        return this.getNumberAttribute('initial_sampling_percentage');
    }
    set initialSamplingPercentage(value) {
        this._initialSamplingPercentage = value;
    }
    // Temporarily expose input value. Use with caution.
    get initialSamplingPercentageInput() {
        return this._initialSamplingPercentage;
    }
    // kms_key_id - computed: false, 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;
    }
    // capture_content_type_header - computed: false, optional: true, required: false
    _captureContentTypeHeader = new SagemakerEndpointConfigurationDataCaptureConfigCaptureContentTypeHeaderOutputReference(this, "capture_content_type_header", true);
    get captureContentTypeHeader() {
        return this._captureContentTypeHeader;
    }
    putCaptureContentTypeHeader(value) {
        this._captureContentTypeHeader.internalValue = value;
    }
    resetCaptureContentTypeHeader() {
        this._captureContentTypeHeader.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get captureContentTypeHeaderInput() {
        return this._captureContentTypeHeader.internalValue;
    }
    // capture_options - computed: false, optional: false, required: true
    _captureOptions;
    get captureOptions() {
        // Getting the computed value is not yet implemented
        return this.interpolationForAttribute('capture_options');
    }
    set captureOptions(value) {
        this._captureOptions = value;
    }
    // Temporarily expose input value. Use with caution.
    get captureOptionsInput() {
        return this._captureOptions;
    }
}
export function sagemakerEndpointConfigurationProductionVariantsToTerraform(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 {
        accelerator_type: cdktf.stringToTerraform(struct.acceleratorType),
        initial_instance_count: cdktf.numberToTerraform(struct.initialInstanceCount),
        initial_variant_weight: cdktf.numberToTerraform(struct.initialVariantWeight),
        instance_type: cdktf.stringToTerraform(struct.instanceType),
        model_name: cdktf.stringToTerraform(struct.modelName),
        variant_name: cdktf.stringToTerraform(struct.variantName),
    };
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/sagemaker_endpoint_configuration aws_sagemaker_endpoint_configuration}
*/
export class SagemakerEndpointConfiguration extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_sagemaker_endpoint_configuration";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/sagemaker_endpoint_configuration aws_sagemaker_endpoint_configuration} 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 SagemakerEndpointConfigurationConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_sagemaker_endpoint_configuration',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._kmsKeyArn = config.kmsKeyArn;
        this._name = config.name;
        this._tags = config.tags;
        this._tagsAll = config.tagsAll;
        this._asyncInferenceConfig.internalValue = config.asyncInferenceConfig;
        this._dataCaptureConfig.internalValue = config.dataCaptureConfig;
        this._productionVariants = config.productionVariants;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // kms_key_arn - computed: false, 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;
    }
    // name - computed: true, optional: true, required: false
    _name;
    get name() {
        return this.getStringAttribute('name');
    }
    set name(value) {
        this._name = value;
    }
    resetName() {
        this._name = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get nameInput() {
        return this._name;
    }
    // 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;
    }
    // async_inference_config - computed: false, optional: true, required: false
    _asyncInferenceConfig = new SagemakerEndpointConfigurationAsyncInferenceConfigOutputReference(this, "async_inference_config", true);
    get asyncInferenceConfig() {
        return this._asyncInferenceConfig;
    }
    putAsyncInferenceConfig(value) {
        this._asyncInferenceConfig.internalValue = value;
    }
    resetAsyncInferenceConfig() {
        this._asyncInferenceConfig.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get asyncInferenceConfigInput() {
        return this._asyncInferenceConfig.internalValue;
    }
    // data_capture_config - computed: false, optional: true, required: false
    _dataCaptureConfig = new SagemakerEndpointConfigurationDataCaptureConfigOutputReference(this, "data_capture_config", true);
    get dataCaptureConfig() {
        return this._dataCaptureConfig;
    }
    putDataCaptureConfig(value) {
        this._dataCaptureConfig.internalValue = value;
    }
    resetDataCaptureConfig() {
        this._dataCaptureConfig.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get dataCaptureConfigInput() {
        return this._dataCaptureConfig.internalValue;
    }
    // production_variants - computed: false, optional: false, required: true
    _productionVariants;
    get productionVariants() {
        // Getting the computed value is not yet implemented
        return this.interpolationForAttribute('production_variants');
    }
    set productionVariants(value) {
        this._productionVariants = value;
    }
    // Temporarily expose input value. Use with caution.
    get productionVariantsInput() {
        return this._productionVariants;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            kms_key_arn: cdktf.stringToTerraform(this._kmsKeyArn),
            name: cdktf.stringToTerraform(this._name),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
            tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll),
            async_inference_config: sagemakerEndpointConfigurationAsyncInferenceConfigToTerraform(this._asyncInferenceConfig.internalValue),
            data_capture_config: sagemakerEndpointConfigurationDataCaptureConfigToTerraform(this._dataCaptureConfig.internalValue),
            production_variants: cdktf.listMapper(sagemakerEndpointConfigurationProductionVariantsToTerraform)(this._productionVariants),
        };
    }
}
//# sourceMappingURL=sagemaker-endpoint-configuration.js.map