All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.vigoo.zioaws.dynamodb.model.package.scala Maven / Gradle / Ivy

package io.github.vigoo.zioaws.dynamodb
import scala.jdk.CollectionConverters._
import java.time.Instant
import zio.{ Chunk, ZIO }
import software.amazon.awssdk.core.SdkBytes
import io.github.vigoo.zioaws.dynamodb.model._
package object model {
  object primitives {
    type ArchivalReason = String
    type AttributeName = String
    type AutoScalingPolicyName = String
    type AutoScalingRoleArn = String
    type Backfilling = Boolean
    type BackupArn = String
    type BackupCreationDateTime = Instant
    type BackupName = String
    type BackupSizeBytes = Long
    type BackupsInputLimit = Int
    type BilledSizeBytes = Long
    type BinaryAttributeValue = Chunk[Byte]
    type BooleanAttributeValue = Boolean
    type BooleanObject = Boolean
    type ClientRequestToken = String
    type ClientToken = String
    type ConditionExpression = String
    type ConsistentRead = Boolean
    type ConsumedCapacityUnits = Double
    type ContributorInsightsRule = String
    type Date = Instant
    type ExceptionDescription = String
    type ExceptionName = String
    type ExportArn = String
    type ExportEndTime = Instant
    type ExportManifest = String
    type ExportNextToken = String
    type ExportStartTime = Instant
    type ExportTime = Instant
    type ExpressionAttributeNameVariable = String
    type ExpressionAttributeValueVariable = String
    type FailureCode = String
    type FailureMessage = String
    type GlobalTableArnString = String
    type IndexName = String
    type Integer = Int
    type IntegerObject = Int
    type ItemCollectionSizeEstimateBound = Double
    type ItemCount = Long
    type KMSMasterKeyArn = String
    type KMSMasterKeyId = String
    type KeyExpression = String
    type KeySchemaAttributeName = String
    type LastUpdateDateTime = Instant
    type ListContributorInsightsLimit = Int
    type ListExportsMaxLimit = Int
    type ListTablesInputLimit = Int
    type NextTokenString = String
    type NonKeyAttributeName = String
    type NonNegativeLongObject = Long
    type NullAttributeValue = Boolean
    type NumberAttributeValue = String
    type PartiQLNextToken = String
    type PartiQLStatement = String
    type PositiveIntegerObject = Int
    type PositiveLongObject = Long
    type ProjectionExpression = String
    type RegionName = String
    type ReplicaStatusDescription = String
    type ReplicaStatusPercentProgress = String
    type ResourceArnString = String
    type RestoreInProgress = Boolean
    type S3Bucket = String
    type S3BucketOwner = String
    type S3Prefix = String
    type S3SseKmsKeyId = String
    type SSEEnabled = Boolean
    type ScanSegment = Int
    type ScanTotalSegments = Int
    type StreamArn = String
    type StreamEnabled = Boolean
    type StringAttributeValue = String
    type TableArn = String
    type TableCreationDateTime = Instant
    type TableId = String
    type TableName = String
    type TagKeyString = String
    type TagValueString = String
    type TimeRangeLowerBound = Instant
    type TimeRangeUpperBound = Instant
    type TimeToLiveAttributeName = String
    type TimeToLiveEnabled = Boolean
    type UpdateExpression = String
  }
  case class ArchivalSummary(archivalDateTime: scala.Option[primitives.Date] = None, archivalReason: scala.Option[primitives.ArchivalReason] = None, archivalBackupArn: scala.Option[primitives.BackupArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ArchivalSummary = {
      import ArchivalSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ArchivalSummary.builder().optionallyWith(archivalDateTime.map(value => value: java.time.Instant))(_.archivalDateTime).optionallyWith(archivalReason.map(value => value: java.lang.String))(_.archivalReason).optionallyWith(archivalBackupArn.map(value => value: java.lang.String))(_.archivalBackupArn).build()
    }
    def asReadOnly: ArchivalSummary.ReadOnly = ArchivalSummary.wrap(buildAwsValue())
  }
  object ArchivalSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ArchivalSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ArchivalSummary = ArchivalSummary(archivalDateTimeValue.map(value => value), archivalReasonValue.map(value => value), archivalBackupArnValue.map(value => value))
      def archivalDateTimeValue: scala.Option[primitives.Date]
      def archivalReasonValue: scala.Option[primitives.ArchivalReason]
      def archivalBackupArnValue: scala.Option[primitives.BackupArn]
      def archivalDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("archivalDateTime", archivalDateTimeValue)
      def archivalReason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ArchivalReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("archivalReason", archivalReasonValue)
      def archivalBackupArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("archivalBackupArn", archivalBackupArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ArchivalSummary) extends ArchivalSummary.ReadOnly {
      override def archivalDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.archivalDateTime()).map(value => value: primitives.Date)
      override def archivalReasonValue: scala.Option[primitives.ArchivalReason] = scala.Option(impl.archivalReason()).map(value => value: primitives.ArchivalReason)
      override def archivalBackupArnValue: scala.Option[primitives.BackupArn] = scala.Option(impl.archivalBackupArn()).map(value => value: primitives.BackupArn)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ArchivalSummary): ReadOnly = new Wrapper(impl)
  }
  sealed trait AttributeAction { def unwrap: software.amazon.awssdk.services.dynamodb.model.AttributeAction }
  object AttributeAction {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.AttributeAction): AttributeAction = value match {
      case software.amazon.awssdk.services.dynamodb.model.AttributeAction.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.AttributeAction.ADD => ADD
      case software.amazon.awssdk.services.dynamodb.model.AttributeAction.PUT => PUT
      case software.amazon.awssdk.services.dynamodb.model.AttributeAction.DELETE => DELETE
    }
    final case object unknownToSdkVersion extends AttributeAction { override def unwrap: software.amazon.awssdk.services.dynamodb.model.AttributeAction = software.amazon.awssdk.services.dynamodb.model.AttributeAction.UNKNOWN_TO_SDK_VERSION }
    final case object ADD extends AttributeAction { override def unwrap: software.amazon.awssdk.services.dynamodb.model.AttributeAction = software.amazon.awssdk.services.dynamodb.model.AttributeAction.ADD }
    final case object PUT extends AttributeAction { override def unwrap: software.amazon.awssdk.services.dynamodb.model.AttributeAction = software.amazon.awssdk.services.dynamodb.model.AttributeAction.PUT }
    final case object DELETE extends AttributeAction { override def unwrap: software.amazon.awssdk.services.dynamodb.model.AttributeAction = software.amazon.awssdk.services.dynamodb.model.AttributeAction.DELETE }
  }
  case class AttributeDefinition(attributeName: primitives.KeySchemaAttributeName, attributeType: ScalarAttributeType) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AttributeDefinition = {
      import AttributeDefinition.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AttributeDefinition.builder().attributeName(attributeName: java.lang.String).attributeType(attributeType.unwrap).build()
    }
    def asReadOnly: AttributeDefinition.ReadOnly = AttributeDefinition.wrap(buildAwsValue())
  }
  object AttributeDefinition {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AttributeDefinition] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttributeDefinition = AttributeDefinition(attributeNameValue, attributeTypeValue)
      def attributeNameValue: primitives.KeySchemaAttributeName
      def attributeTypeValue: ScalarAttributeType
      def attributeName: ZIO[Any, Nothing, primitives.KeySchemaAttributeName] = ZIO.succeed(attributeNameValue)
      def attributeType: ZIO[Any, Nothing, ScalarAttributeType] = ZIO.succeed(attributeTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AttributeDefinition) extends AttributeDefinition.ReadOnly {
      override def attributeNameValue: primitives.KeySchemaAttributeName = impl.attributeName(): primitives.KeySchemaAttributeName
      override def attributeTypeValue: ScalarAttributeType = ScalarAttributeType.wrap(impl.attributeType())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AttributeDefinition): ReadOnly = new Wrapper(impl)
  }
  type AttributeDefinitions = List[AttributeDefinition]
  type AttributeMap = Map[primitives.AttributeName, AttributeValue]
  type AttributeNameList = List[primitives.AttributeName]
  type AttributeUpdates = Map[primitives.AttributeName, AttributeValueUpdate]
  case class AttributeValue(s: scala.Option[primitives.StringAttributeValue] = None, n: scala.Option[primitives.NumberAttributeValue] = None, b: scala.Option[primitives.BinaryAttributeValue] = None, ss: scala.Option[Iterable[primitives.StringAttributeValue]] = None, ns: scala.Option[Iterable[primitives.NumberAttributeValue]] = None, bs: scala.Option[Iterable[primitives.BinaryAttributeValue]] = None, m: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, l: scala.Option[Iterable[AttributeValue]] = None, nul: scala.Option[primitives.NullAttributeValue] = None, bool: scala.Option[primitives.BooleanAttributeValue] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AttributeValue = {
      import AttributeValue.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AttributeValue.builder().optionallyWith(s.map(value => value: java.lang.String))(_.s).optionallyWith(n.map(value => value: java.lang.String))(_.n).optionallyWith(b.map(value => SdkBytes.fromByteArray(value.toArray[Byte])))(_.b).optionallyWith(ss.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ss).optionallyWith(ns.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ns).optionallyWith(bs.map(value => value.map { item => 
        SdkBytes.fromByteArray(item.toArray[Byte])
      }.asJavaCollection))(_.bs).optionallyWith(m.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.m).optionallyWith(l.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.l).optionallyWith(nul.map(value => value: java.lang.Boolean))(_.nul).optionallyWith(bool.map(value => value: java.lang.Boolean))(_.bool).build()
    }
    def asReadOnly: AttributeValue.ReadOnly = AttributeValue.wrap(buildAwsValue())
  }
  object AttributeValue {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AttributeValue] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttributeValue = AttributeValue(sValue.map(value => value), nValue.map(value => value), bValue.map(value => value), ssValue.map(value => value), nsValue.map(value => value), bsValue.map(value => value), mValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), lValue.map(value => value.map { item => 
        item.editable
      }), nulValue.map(value => value), boolValue.map(value => value))
      def sValue: scala.Option[primitives.StringAttributeValue]
      def nValue: scala.Option[primitives.NumberAttributeValue]
      def bValue: scala.Option[primitives.BinaryAttributeValue]
      def ssValue: scala.Option[List[primitives.StringAttributeValue]]
      def nsValue: scala.Option[List[primitives.NumberAttributeValue]]
      def bsValue: scala.Option[List[primitives.BinaryAttributeValue]]
      def mValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def lValue: scala.Option[List[AttributeValue.ReadOnly]]
      def nulValue: scala.Option[primitives.NullAttributeValue]
      def boolValue: scala.Option[primitives.BooleanAttributeValue]
      def s: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StringAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s", sValue)
      def n: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NumberAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("n", nValue)
      def b: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BinaryAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("b", bValue)
      def ss: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.StringAttributeValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ss", ssValue)
      def ns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.NumberAttributeValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ns", nsValue)
      def bs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.BinaryAttributeValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bs", bsValue)
      def m: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("m", mValue)
      def l: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("l", lValue)
      def nul: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NullAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nul", nulValue)
      def bool: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bool", boolValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AttributeValue) extends AttributeValue.ReadOnly {
      override def sValue: scala.Option[primitives.StringAttributeValue] = scala.Option(impl.s()).map(value => value: primitives.StringAttributeValue)
      override def nValue: scala.Option[primitives.NumberAttributeValue] = scala.Option(impl.n()).map(value => value: primitives.NumberAttributeValue)
      override def bValue: scala.Option[primitives.BinaryAttributeValue] = scala.Option(impl.b()).map(value => Chunk.fromByteBuffer(value.asByteBuffer()))
      override def ssValue: scala.Option[List[primitives.StringAttributeValue]] = scala.Option(impl.ss()).map(value => value.asScala.map { item => 
        item: primitives.StringAttributeValue
      }.toList)
      override def nsValue: scala.Option[List[primitives.NumberAttributeValue]] = scala.Option(impl.ns()).map(value => value.asScala.map { item => 
        item: primitives.NumberAttributeValue
      }.toList)
      override def bsValue: scala.Option[List[primitives.BinaryAttributeValue]] = scala.Option(impl.bs()).map(value => value.asScala.map { item => 
        Chunk.fromByteBuffer(item.asByteBuffer())
      }.toList)
      override def mValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.m()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def lValue: scala.Option[List[AttributeValue.ReadOnly]] = scala.Option(impl.l()).map(value => value.asScala.map { item => 
        AttributeValue.wrap(item)
      }.toList)
      override def nulValue: scala.Option[primitives.NullAttributeValue] = scala.Option(impl.nul()).map(value => value: primitives.NullAttributeValue)
      override def boolValue: scala.Option[primitives.BooleanAttributeValue] = scala.Option(impl.bool()).map(value => value: primitives.BooleanAttributeValue)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AttributeValue): ReadOnly = new Wrapper(impl)
  }
  type AttributeValueList = List[AttributeValue]
  case class AttributeValueUpdate(value: scala.Option[AttributeValue] = None, action: scala.Option[AttributeAction] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate = {
      import AttributeValueUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate.builder().optionallyWith(value.map(value => value.buildAwsValue()))(_.value).optionallyWith(action.map(value => value.unwrap))(_.action).build()
    }
    def asReadOnly: AttributeValueUpdate.ReadOnly = AttributeValueUpdate.wrap(buildAwsValue())
  }
  object AttributeValueUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttributeValueUpdate = AttributeValueUpdate(valueValue.map(value => value.editable), actionValue.map(value => value))
      def valueValue: scala.Option[AttributeValue.ReadOnly]
      def actionValue: scala.Option[AttributeAction]
      def value: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AttributeValue.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("value", valueValue)
      def action: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AttributeAction] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("action", actionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate) extends AttributeValueUpdate.ReadOnly {
      override def valueValue: scala.Option[AttributeValue.ReadOnly] = scala.Option(impl.value()).map(value => AttributeValue.wrap(value))
      override def actionValue: scala.Option[AttributeAction] = scala.Option(impl.action()).map(value => AttributeAction.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate): ReadOnly = new Wrapper(impl)
  }
  case class AutoScalingPolicyDescription(policyName: scala.Option[primitives.AutoScalingPolicyName] = None, targetTrackingScalingPolicyConfiguration: scala.Option[AutoScalingTargetTrackingScalingPolicyConfigurationDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyDescription = {
      import AutoScalingPolicyDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyDescription.builder().optionallyWith(policyName.map(value => value: java.lang.String))(_.policyName).optionallyWith(targetTrackingScalingPolicyConfiguration.map(value => value.buildAwsValue()))(_.targetTrackingScalingPolicyConfiguration).build()
    }
    def asReadOnly: AutoScalingPolicyDescription.ReadOnly = AutoScalingPolicyDescription.wrap(buildAwsValue())
  }
  object AutoScalingPolicyDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoScalingPolicyDescription = AutoScalingPolicyDescription(policyNameValue.map(value => value), targetTrackingScalingPolicyConfigurationValue.map(value => value.editable))
      def policyNameValue: scala.Option[primitives.AutoScalingPolicyName]
      def targetTrackingScalingPolicyConfigurationValue: scala.Option[AutoScalingTargetTrackingScalingPolicyConfigurationDescription.ReadOnly]
      def policyName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AutoScalingPolicyName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("policyName", policyNameValue)
      def targetTrackingScalingPolicyConfiguration: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingTargetTrackingScalingPolicyConfigurationDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targetTrackingScalingPolicyConfiguration", targetTrackingScalingPolicyConfigurationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyDescription) extends AutoScalingPolicyDescription.ReadOnly {
      override def policyNameValue: scala.Option[primitives.AutoScalingPolicyName] = scala.Option(impl.policyName()).map(value => value: primitives.AutoScalingPolicyName)
      override def targetTrackingScalingPolicyConfigurationValue: scala.Option[AutoScalingTargetTrackingScalingPolicyConfigurationDescription.ReadOnly] = scala.Option(impl.targetTrackingScalingPolicyConfiguration()).map(value => AutoScalingTargetTrackingScalingPolicyConfigurationDescription.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyDescription): ReadOnly = new Wrapper(impl)
  }
  type AutoScalingPolicyDescriptionList = List[AutoScalingPolicyDescription]
  case class AutoScalingPolicyUpdate(policyName: scala.Option[primitives.AutoScalingPolicyName] = None, targetTrackingScalingPolicyConfiguration: AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyUpdate = {
      import AutoScalingPolicyUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyUpdate.builder().optionallyWith(policyName.map(value => value: java.lang.String))(_.policyName).targetTrackingScalingPolicyConfiguration(targetTrackingScalingPolicyConfiguration.buildAwsValue()).build()
    }
    def asReadOnly: AutoScalingPolicyUpdate.ReadOnly = AutoScalingPolicyUpdate.wrap(buildAwsValue())
  }
  object AutoScalingPolicyUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoScalingPolicyUpdate = AutoScalingPolicyUpdate(policyNameValue.map(value => value), targetTrackingScalingPolicyConfigurationValue.editable)
      def policyNameValue: scala.Option[primitives.AutoScalingPolicyName]
      def targetTrackingScalingPolicyConfigurationValue: AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.ReadOnly
      def policyName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AutoScalingPolicyName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("policyName", policyNameValue)
      def targetTrackingScalingPolicyConfiguration: ZIO[Any, Nothing, AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.ReadOnly] = ZIO.succeed(targetTrackingScalingPolicyConfigurationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyUpdate) extends AutoScalingPolicyUpdate.ReadOnly {
      override def policyNameValue: scala.Option[primitives.AutoScalingPolicyName] = scala.Option(impl.policyName()).map(value => value: primitives.AutoScalingPolicyName)
      override def targetTrackingScalingPolicyConfigurationValue: AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.ReadOnly = AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.wrap(impl.targetTrackingScalingPolicyConfiguration())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingPolicyUpdate): ReadOnly = new Wrapper(impl)
  }
  case class AutoScalingSettingsDescription(minimumUnits: scala.Option[primitives.PositiveLongObject] = None, maximumUnits: scala.Option[primitives.PositiveLongObject] = None, autoScalingDisabled: scala.Option[primitives.BooleanObject] = None, autoScalingRoleArn: scala.Option[String] = None, scalingPolicies: scala.Option[Iterable[AutoScalingPolicyDescription]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsDescription = {
      import AutoScalingSettingsDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsDescription.builder().optionallyWith(minimumUnits.map(value => value: java.lang.Long))(_.minimumUnits).optionallyWith(maximumUnits.map(value => value: java.lang.Long))(_.maximumUnits).optionallyWith(autoScalingDisabled.map(value => value: java.lang.Boolean))(_.autoScalingDisabled).optionallyWith(autoScalingRoleArn.map(value => value: java.lang.String))(_.autoScalingRoleArn).optionallyWith(scalingPolicies.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.scalingPolicies).build()
    }
    def asReadOnly: AutoScalingSettingsDescription.ReadOnly = AutoScalingSettingsDescription.wrap(buildAwsValue())
  }
  object AutoScalingSettingsDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoScalingSettingsDescription = AutoScalingSettingsDescription(minimumUnitsValue.map(value => value), maximumUnitsValue.map(value => value), autoScalingDisabledValue.map(value => value), autoScalingRoleArnValue.map(value => value), scalingPoliciesValue.map(value => value.map { item => 
        item.editable
      }))
      def minimumUnitsValue: scala.Option[primitives.PositiveLongObject]
      def maximumUnitsValue: scala.Option[primitives.PositiveLongObject]
      def autoScalingDisabledValue: scala.Option[primitives.BooleanObject]
      def autoScalingRoleArnValue: scala.Option[String]
      def scalingPoliciesValue: scala.Option[List[AutoScalingPolicyDescription.ReadOnly]]
      def minimumUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("minimumUnits", minimumUnitsValue)
      def maximumUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumUnits", maximumUnitsValue)
      def autoScalingDisabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("autoScalingDisabled", autoScalingDisabledValue)
      def autoScalingRoleArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("autoScalingRoleArn", autoScalingRoleArnValue)
      def scalingPolicies: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AutoScalingPolicyDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scalingPolicies", scalingPoliciesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsDescription) extends AutoScalingSettingsDescription.ReadOnly {
      override def minimumUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.minimumUnits()).map(value => value: primitives.PositiveLongObject)
      override def maximumUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.maximumUnits()).map(value => value: primitives.PositiveLongObject)
      override def autoScalingDisabledValue: scala.Option[primitives.BooleanObject] = scala.Option(impl.autoScalingDisabled()).map(value => value: primitives.BooleanObject)
      override def autoScalingRoleArnValue: scala.Option[String] = scala.Option(impl.autoScalingRoleArn()).map(value => value: String)
      override def scalingPoliciesValue: scala.Option[List[AutoScalingPolicyDescription.ReadOnly]] = scala.Option(impl.scalingPolicies()).map(value => value.asScala.map { item => 
        AutoScalingPolicyDescription.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsDescription): ReadOnly = new Wrapper(impl)
  }
  case class AutoScalingSettingsUpdate(minimumUnits: scala.Option[primitives.PositiveLongObject] = None, maximumUnits: scala.Option[primitives.PositiveLongObject] = None, autoScalingDisabled: scala.Option[primitives.BooleanObject] = None, autoScalingRoleArn: scala.Option[primitives.AutoScalingRoleArn] = None, scalingPolicyUpdate: scala.Option[AutoScalingPolicyUpdate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsUpdate = {
      import AutoScalingSettingsUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsUpdate.builder().optionallyWith(minimumUnits.map(value => value: java.lang.Long))(_.minimumUnits).optionallyWith(maximumUnits.map(value => value: java.lang.Long))(_.maximumUnits).optionallyWith(autoScalingDisabled.map(value => value: java.lang.Boolean))(_.autoScalingDisabled).optionallyWith(autoScalingRoleArn.map(value => value: java.lang.String))(_.autoScalingRoleArn).optionallyWith(scalingPolicyUpdate.map(value => value.buildAwsValue()))(_.scalingPolicyUpdate).build()
    }
    def asReadOnly: AutoScalingSettingsUpdate.ReadOnly = AutoScalingSettingsUpdate.wrap(buildAwsValue())
  }
  object AutoScalingSettingsUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoScalingSettingsUpdate = AutoScalingSettingsUpdate(minimumUnitsValue.map(value => value), maximumUnitsValue.map(value => value), autoScalingDisabledValue.map(value => value), autoScalingRoleArnValue.map(value => value), scalingPolicyUpdateValue.map(value => value.editable))
      def minimumUnitsValue: scala.Option[primitives.PositiveLongObject]
      def maximumUnitsValue: scala.Option[primitives.PositiveLongObject]
      def autoScalingDisabledValue: scala.Option[primitives.BooleanObject]
      def autoScalingRoleArnValue: scala.Option[primitives.AutoScalingRoleArn]
      def scalingPolicyUpdateValue: scala.Option[AutoScalingPolicyUpdate.ReadOnly]
      def minimumUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("minimumUnits", minimumUnitsValue)
      def maximumUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumUnits", maximumUnitsValue)
      def autoScalingDisabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("autoScalingDisabled", autoScalingDisabledValue)
      def autoScalingRoleArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AutoScalingRoleArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("autoScalingRoleArn", autoScalingRoleArnValue)
      def scalingPolicyUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingPolicyUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scalingPolicyUpdate", scalingPolicyUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsUpdate) extends AutoScalingSettingsUpdate.ReadOnly {
      override def minimumUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.minimumUnits()).map(value => value: primitives.PositiveLongObject)
      override def maximumUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.maximumUnits()).map(value => value: primitives.PositiveLongObject)
      override def autoScalingDisabledValue: scala.Option[primitives.BooleanObject] = scala.Option(impl.autoScalingDisabled()).map(value => value: primitives.BooleanObject)
      override def autoScalingRoleArnValue: scala.Option[primitives.AutoScalingRoleArn] = scala.Option(impl.autoScalingRoleArn()).map(value => value: primitives.AutoScalingRoleArn)
      override def scalingPolicyUpdateValue: scala.Option[AutoScalingPolicyUpdate.ReadOnly] = scala.Option(impl.scalingPolicyUpdate()).map(value => AutoScalingPolicyUpdate.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingSettingsUpdate): ReadOnly = new Wrapper(impl)
  }
  case class AutoScalingTargetTrackingScalingPolicyConfigurationDescription(disableScaleIn: scala.Option[primitives.BooleanObject] = None, scaleInCooldown: scala.Option[primitives.IntegerObject] = None, scaleOutCooldown: scala.Option[primitives.IntegerObject] = None, targetValue: Double) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationDescription = {
      import AutoScalingTargetTrackingScalingPolicyConfigurationDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationDescription.builder().optionallyWith(disableScaleIn.map(value => value: java.lang.Boolean))(_.disableScaleIn).optionallyWith(scaleInCooldown.map(value => value: java.lang.Integer))(_.scaleInCooldown).optionallyWith(scaleOutCooldown.map(value => value: java.lang.Integer))(_.scaleOutCooldown).targetValue(targetValue: java.lang.Double).build()
    }
    def asReadOnly: AutoScalingTargetTrackingScalingPolicyConfigurationDescription.ReadOnly = AutoScalingTargetTrackingScalingPolicyConfigurationDescription.wrap(buildAwsValue())
  }
  object AutoScalingTargetTrackingScalingPolicyConfigurationDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoScalingTargetTrackingScalingPolicyConfigurationDescription = AutoScalingTargetTrackingScalingPolicyConfigurationDescription(disableScaleInValue.map(value => value), scaleInCooldownValue.map(value => value), scaleOutCooldownValue.map(value => value), targetValueValue)
      def disableScaleInValue: scala.Option[primitives.BooleanObject]
      def scaleInCooldownValue: scala.Option[primitives.IntegerObject]
      def scaleOutCooldownValue: scala.Option[primitives.IntegerObject]
      def targetValueValue: Double
      def disableScaleIn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("disableScaleIn", disableScaleInValue)
      def scaleInCooldown: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scaleInCooldown", scaleInCooldownValue)
      def scaleOutCooldown: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scaleOutCooldown", scaleOutCooldownValue)
      def targetValue: ZIO[Any, Nothing, Double] = ZIO.succeed(targetValueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationDescription) extends AutoScalingTargetTrackingScalingPolicyConfigurationDescription.ReadOnly {
      override def disableScaleInValue: scala.Option[primitives.BooleanObject] = scala.Option(impl.disableScaleIn()).map(value => value: primitives.BooleanObject)
      override def scaleInCooldownValue: scala.Option[primitives.IntegerObject] = scala.Option(impl.scaleInCooldown()).map(value => value: primitives.IntegerObject)
      override def scaleOutCooldownValue: scala.Option[primitives.IntegerObject] = scala.Option(impl.scaleOutCooldown()).map(value => value: primitives.IntegerObject)
      override def targetValueValue: Double = impl.targetValue(): Double
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationDescription): ReadOnly = new Wrapper(impl)
  }
  case class AutoScalingTargetTrackingScalingPolicyConfigurationUpdate(disableScaleIn: scala.Option[primitives.BooleanObject] = None, scaleInCooldown: scala.Option[primitives.IntegerObject] = None, scaleOutCooldown: scala.Option[primitives.IntegerObject] = None, targetValue: Double) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationUpdate = {
      import AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.builder().optionallyWith(disableScaleIn.map(value => value: java.lang.Boolean))(_.disableScaleIn).optionallyWith(scaleInCooldown.map(value => value: java.lang.Integer))(_.scaleInCooldown).optionallyWith(scaleOutCooldown.map(value => value: java.lang.Integer))(_.scaleOutCooldown).targetValue(targetValue: java.lang.Double).build()
    }
    def asReadOnly: AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.ReadOnly = AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.wrap(buildAwsValue())
  }
  object AutoScalingTargetTrackingScalingPolicyConfigurationUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoScalingTargetTrackingScalingPolicyConfigurationUpdate = AutoScalingTargetTrackingScalingPolicyConfigurationUpdate(disableScaleInValue.map(value => value), scaleInCooldownValue.map(value => value), scaleOutCooldownValue.map(value => value), targetValueValue)
      def disableScaleInValue: scala.Option[primitives.BooleanObject]
      def scaleInCooldownValue: scala.Option[primitives.IntegerObject]
      def scaleOutCooldownValue: scala.Option[primitives.IntegerObject]
      def targetValueValue: Double
      def disableScaleIn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("disableScaleIn", disableScaleInValue)
      def scaleInCooldown: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scaleInCooldown", scaleInCooldownValue)
      def scaleOutCooldown: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scaleOutCooldown", scaleOutCooldownValue)
      def targetValue: ZIO[Any, Nothing, Double] = ZIO.succeed(targetValueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationUpdate) extends AutoScalingTargetTrackingScalingPolicyConfigurationUpdate.ReadOnly {
      override def disableScaleInValue: scala.Option[primitives.BooleanObject] = scala.Option(impl.disableScaleIn()).map(value => value: primitives.BooleanObject)
      override def scaleInCooldownValue: scala.Option[primitives.IntegerObject] = scala.Option(impl.scaleInCooldown()).map(value => value: primitives.IntegerObject)
      override def scaleOutCooldownValue: scala.Option[primitives.IntegerObject] = scala.Option(impl.scaleOutCooldown()).map(value => value: primitives.IntegerObject)
      override def targetValueValue: Double = impl.targetValue(): Double
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AutoScalingTargetTrackingScalingPolicyConfigurationUpdate): ReadOnly = new Wrapper(impl)
  }
  case class BackupDescription(backupDetails: scala.Option[BackupDetails] = None, sourceTableDetails: scala.Option[SourceTableDetails] = None, sourceTableFeatureDetails: scala.Option[SourceTableFeatureDetails] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BackupDescription = {
      import BackupDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BackupDescription.builder().optionallyWith(backupDetails.map(value => value.buildAwsValue()))(_.backupDetails).optionallyWith(sourceTableDetails.map(value => value.buildAwsValue()))(_.sourceTableDetails).optionallyWith(sourceTableFeatureDetails.map(value => value.buildAwsValue()))(_.sourceTableFeatureDetails).build()
    }
    def asReadOnly: BackupDescription.ReadOnly = BackupDescription.wrap(buildAwsValue())
  }
  object BackupDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BackupDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BackupDescription = BackupDescription(backupDetailsValue.map(value => value.editable), sourceTableDetailsValue.map(value => value.editable), sourceTableFeatureDetailsValue.map(value => value.editable))
      def backupDetailsValue: scala.Option[BackupDetails.ReadOnly]
      def sourceTableDetailsValue: scala.Option[SourceTableDetails.ReadOnly]
      def sourceTableFeatureDetailsValue: scala.Option[SourceTableFeatureDetails.ReadOnly]
      def backupDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BackupDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupDetails", backupDetailsValue)
      def sourceTableDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SourceTableDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceTableDetails", sourceTableDetailsValue)
      def sourceTableFeatureDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SourceTableFeatureDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceTableFeatureDetails", sourceTableFeatureDetailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BackupDescription) extends BackupDescription.ReadOnly {
      override def backupDetailsValue: scala.Option[BackupDetails.ReadOnly] = scala.Option(impl.backupDetails()).map(value => BackupDetails.wrap(value))
      override def sourceTableDetailsValue: scala.Option[SourceTableDetails.ReadOnly] = scala.Option(impl.sourceTableDetails()).map(value => SourceTableDetails.wrap(value))
      override def sourceTableFeatureDetailsValue: scala.Option[SourceTableFeatureDetails.ReadOnly] = scala.Option(impl.sourceTableFeatureDetails()).map(value => SourceTableFeatureDetails.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BackupDescription): ReadOnly = new Wrapper(impl)
  }
  case class BackupDetails(backupArn: primitives.BackupArn, backupName: primitives.BackupName, backupSizeBytes: scala.Option[primitives.BackupSizeBytes] = None, backupStatus: BackupStatus, backupType: BackupType, backupCreationDateTime: primitives.BackupCreationDateTime, backupExpiryDateTime: scala.Option[primitives.Date] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BackupDetails = {
      import BackupDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BackupDetails.builder().backupArn(backupArn: java.lang.String).backupName(backupName: java.lang.String).optionallyWith(backupSizeBytes.map(value => value: java.lang.Long))(_.backupSizeBytes).backupStatus(backupStatus.unwrap).backupType(backupType.unwrap).backupCreationDateTime(backupCreationDateTime: java.time.Instant).optionallyWith(backupExpiryDateTime.map(value => value: java.time.Instant))(_.backupExpiryDateTime).build()
    }
    def asReadOnly: BackupDetails.ReadOnly = BackupDetails.wrap(buildAwsValue())
  }
  object BackupDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BackupDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BackupDetails = BackupDetails(backupArnValue, backupNameValue, backupSizeBytesValue.map(value => value), backupStatusValue, backupTypeValue, backupCreationDateTimeValue, backupExpiryDateTimeValue.map(value => value))
      def backupArnValue: primitives.BackupArn
      def backupNameValue: primitives.BackupName
      def backupSizeBytesValue: scala.Option[primitives.BackupSizeBytes]
      def backupStatusValue: BackupStatus
      def backupTypeValue: BackupType
      def backupCreationDateTimeValue: primitives.BackupCreationDateTime
      def backupExpiryDateTimeValue: scala.Option[primitives.Date]
      def backupArn: ZIO[Any, Nothing, primitives.BackupArn] = ZIO.succeed(backupArnValue)
      def backupName: ZIO[Any, Nothing, primitives.BackupName] = ZIO.succeed(backupNameValue)
      def backupSizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupSizeBytes] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupSizeBytes", backupSizeBytesValue)
      def backupStatus: ZIO[Any, Nothing, BackupStatus] = ZIO.succeed(backupStatusValue)
      def backupType: ZIO[Any, Nothing, BackupType] = ZIO.succeed(backupTypeValue)
      def backupCreationDateTime: ZIO[Any, Nothing, primitives.BackupCreationDateTime] = ZIO.succeed(backupCreationDateTimeValue)
      def backupExpiryDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupExpiryDateTime", backupExpiryDateTimeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BackupDetails) extends BackupDetails.ReadOnly {
      override def backupArnValue: primitives.BackupArn = impl.backupArn(): primitives.BackupArn
      override def backupNameValue: primitives.BackupName = impl.backupName(): primitives.BackupName
      override def backupSizeBytesValue: scala.Option[primitives.BackupSizeBytes] = scala.Option(impl.backupSizeBytes()).map(value => value: primitives.BackupSizeBytes)
      override def backupStatusValue: BackupStatus = BackupStatus.wrap(impl.backupStatus())
      override def backupTypeValue: BackupType = BackupType.wrap(impl.backupType())
      override def backupCreationDateTimeValue: primitives.BackupCreationDateTime = impl.backupCreationDateTime(): primitives.BackupCreationDateTime
      override def backupExpiryDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.backupExpiryDateTime()).map(value => value: primitives.Date)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BackupDetails): ReadOnly = new Wrapper(impl)
  }
  sealed trait BackupStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupStatus }
  object BackupStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.BackupStatus): BackupStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.BackupStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.BackupStatus.CREATING => CREATING
      case software.amazon.awssdk.services.dynamodb.model.BackupStatus.DELETED => DELETED
      case software.amazon.awssdk.services.dynamodb.model.BackupStatus.AVAILABLE => AVAILABLE
    }
    final case object unknownToSdkVersion extends BackupStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupStatus = software.amazon.awssdk.services.dynamodb.model.BackupStatus.UNKNOWN_TO_SDK_VERSION }
    final case object CREATING extends BackupStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupStatus = software.amazon.awssdk.services.dynamodb.model.BackupStatus.CREATING }
    final case object DELETED extends BackupStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupStatus = software.amazon.awssdk.services.dynamodb.model.BackupStatus.DELETED }
    final case object AVAILABLE extends BackupStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupStatus = software.amazon.awssdk.services.dynamodb.model.BackupStatus.AVAILABLE }
  }
  type BackupSummaries = List[BackupSummary]
  case class BackupSummary(tableName: scala.Option[primitives.TableName] = None, tableId: scala.Option[primitives.TableId] = None, tableArn: scala.Option[primitives.TableArn] = None, backupArn: scala.Option[primitives.BackupArn] = None, backupName: scala.Option[primitives.BackupName] = None, backupCreationDateTime: scala.Option[primitives.BackupCreationDateTime] = None, backupExpiryDateTime: scala.Option[primitives.Date] = None, backupStatus: scala.Option[BackupStatus] = None, backupType: scala.Option[BackupType] = None, backupSizeBytes: scala.Option[primitives.BackupSizeBytes] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BackupSummary = {
      import BackupSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BackupSummary.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(tableId.map(value => value: java.lang.String))(_.tableId).optionallyWith(tableArn.map(value => value: java.lang.String))(_.tableArn).optionallyWith(backupArn.map(value => value: java.lang.String))(_.backupArn).optionallyWith(backupName.map(value => value: java.lang.String))(_.backupName).optionallyWith(backupCreationDateTime.map(value => value: java.time.Instant))(_.backupCreationDateTime).optionallyWith(backupExpiryDateTime.map(value => value: java.time.Instant))(_.backupExpiryDateTime).optionallyWith(backupStatus.map(value => value.unwrap))(_.backupStatus).optionallyWith(backupType.map(value => value.unwrap))(_.backupType).optionallyWith(backupSizeBytes.map(value => value: java.lang.Long))(_.backupSizeBytes).build()
    }
    def asReadOnly: BackupSummary.ReadOnly = BackupSummary.wrap(buildAwsValue())
  }
  object BackupSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BackupSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BackupSummary = BackupSummary(tableNameValue.map(value => value), tableIdValue.map(value => value), tableArnValue.map(value => value), backupArnValue.map(value => value), backupNameValue.map(value => value), backupCreationDateTimeValue.map(value => value), backupExpiryDateTimeValue.map(value => value), backupStatusValue.map(value => value), backupTypeValue.map(value => value), backupSizeBytesValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def tableIdValue: scala.Option[primitives.TableId]
      def tableArnValue: scala.Option[primitives.TableArn]
      def backupArnValue: scala.Option[primitives.BackupArn]
      def backupNameValue: scala.Option[primitives.BackupName]
      def backupCreationDateTimeValue: scala.Option[primitives.BackupCreationDateTime]
      def backupExpiryDateTimeValue: scala.Option[primitives.Date]
      def backupStatusValue: scala.Option[BackupStatus]
      def backupTypeValue: scala.Option[BackupType]
      def backupSizeBytesValue: scala.Option[primitives.BackupSizeBytes]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def tableId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableId", tableIdValue)
      def tableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableArn", tableArnValue)
      def backupArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupArn", backupArnValue)
      def backupName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupName", backupNameValue)
      def backupCreationDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupCreationDateTime] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupCreationDateTime", backupCreationDateTimeValue)
      def backupExpiryDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupExpiryDateTime", backupExpiryDateTimeValue)
      def backupStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BackupStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupStatus", backupStatusValue)
      def backupType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BackupType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupType", backupTypeValue)
      def backupSizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupSizeBytes] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupSizeBytes", backupSizeBytesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BackupSummary) extends BackupSummary.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def tableIdValue: scala.Option[primitives.TableId] = scala.Option(impl.tableId()).map(value => value: primitives.TableId)
      override def tableArnValue: scala.Option[primitives.TableArn] = scala.Option(impl.tableArn()).map(value => value: primitives.TableArn)
      override def backupArnValue: scala.Option[primitives.BackupArn] = scala.Option(impl.backupArn()).map(value => value: primitives.BackupArn)
      override def backupNameValue: scala.Option[primitives.BackupName] = scala.Option(impl.backupName()).map(value => value: primitives.BackupName)
      override def backupCreationDateTimeValue: scala.Option[primitives.BackupCreationDateTime] = scala.Option(impl.backupCreationDateTime()).map(value => value: primitives.BackupCreationDateTime)
      override def backupExpiryDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.backupExpiryDateTime()).map(value => value: primitives.Date)
      override def backupStatusValue: scala.Option[BackupStatus] = scala.Option(impl.backupStatus()).map(value => BackupStatus.wrap(value))
      override def backupTypeValue: scala.Option[BackupType] = scala.Option(impl.backupType()).map(value => BackupType.wrap(value))
      override def backupSizeBytesValue: scala.Option[primitives.BackupSizeBytes] = scala.Option(impl.backupSizeBytes()).map(value => value: primitives.BackupSizeBytes)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BackupSummary): ReadOnly = new Wrapper(impl)
  }
  sealed trait BackupType { def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupType }
  object BackupType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.BackupType): BackupType = value match {
      case software.amazon.awssdk.services.dynamodb.model.BackupType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.BackupType.USER => USER
      case software.amazon.awssdk.services.dynamodb.model.BackupType.SYSTEM => SYSTEM
      case software.amazon.awssdk.services.dynamodb.model.BackupType.AWS_BACKUP => AWS_BACKUP
    }
    final case object unknownToSdkVersion extends BackupType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupType = software.amazon.awssdk.services.dynamodb.model.BackupType.UNKNOWN_TO_SDK_VERSION }
    final case object USER extends BackupType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupType = software.amazon.awssdk.services.dynamodb.model.BackupType.USER }
    final case object SYSTEM extends BackupType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupType = software.amazon.awssdk.services.dynamodb.model.BackupType.SYSTEM }
    final case object AWS_BACKUP extends BackupType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupType = software.amazon.awssdk.services.dynamodb.model.BackupType.AWS_BACKUP }
  }
  sealed trait BackupTypeFilter { def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter }
  object BackupTypeFilter {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter): BackupTypeFilter = value match {
      case software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.USER => USER
      case software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.SYSTEM => SYSTEM
      case software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.AWS_BACKUP => AWS_BACKUP
      case software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.ALL => ALL
    }
    final case object unknownToSdkVersion extends BackupTypeFilter { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter = software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.UNKNOWN_TO_SDK_VERSION }
    final case object USER extends BackupTypeFilter { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter = software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.USER }
    final case object SYSTEM extends BackupTypeFilter { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter = software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.SYSTEM }
    final case object AWS_BACKUP extends BackupTypeFilter { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter = software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.AWS_BACKUP }
    final case object ALL extends BackupTypeFilter { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter = software.amazon.awssdk.services.dynamodb.model.BackupTypeFilter.ALL }
  }
  case class BatchExecuteStatementRequest(statements: Iterable[BatchStatementRequest]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementRequest = {
      import BatchExecuteStatementRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementRequest.builder().statements(statements.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: BatchExecuteStatementRequest.ReadOnly = BatchExecuteStatementRequest.wrap(buildAwsValue())
  }
  object BatchExecuteStatementRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchExecuteStatementRequest = BatchExecuteStatementRequest(statementsValue.map { item => 
        item.editable
      })
      def statementsValue: List[BatchStatementRequest.ReadOnly]
      def statements: ZIO[Any, Nothing, List[BatchStatementRequest.ReadOnly]] = ZIO.succeed(statementsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementRequest) extends BatchExecuteStatementRequest.ReadOnly {
      override def statementsValue: List[BatchStatementRequest.ReadOnly] = impl.statements().asScala.map { item => 
        BatchStatementRequest.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementRequest): ReadOnly = new Wrapper(impl)
  }
  case class BatchExecuteStatementResponse(responses: scala.Option[Iterable[BatchStatementResponse]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementResponse = {
      import BatchExecuteStatementResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementResponse.builder().optionallyWith(responses.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.responses).build()
    }
    def asReadOnly: BatchExecuteStatementResponse.ReadOnly = BatchExecuteStatementResponse.wrap(buildAwsValue())
  }
  object BatchExecuteStatementResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchExecuteStatementResponse = BatchExecuteStatementResponse(responsesValue.map(value => value.map { item => 
        item.editable
      }))
      def responsesValue: scala.Option[List[BatchStatementResponse.ReadOnly]]
      def responses: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[BatchStatementResponse.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("responses", responsesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementResponse) extends BatchExecuteStatementResponse.ReadOnly {
      override def responsesValue: scala.Option[List[BatchStatementResponse.ReadOnly]] = scala.Option(impl.responses()).map(value => value.asScala.map { item => 
        BatchStatementResponse.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchExecuteStatementResponse): ReadOnly = new Wrapper(impl)
  }
  case class BatchGetItemRequest(requestItems: Map[primitives.TableName, KeysAndAttributes], returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchGetItemRequest = {
      import BatchGetItemRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchGetItemRequest.builder().requestItems(requestItems.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).build()
    }
    def asReadOnly: BatchGetItemRequest.ReadOnly = BatchGetItemRequest.wrap(buildAwsValue())
  }
  object BatchGetItemRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchGetItemRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchGetItemRequest = BatchGetItemRequest(requestItemsValue.map({
        case (key, value) =>
          key -> value.editable
      }), returnConsumedCapacityValue.map(value => value))
      def requestItemsValue: Map[primitives.TableName, KeysAndAttributes.ReadOnly]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def requestItems: ZIO[Any, Nothing, Map[primitives.TableName, KeysAndAttributes.ReadOnly]] = ZIO.succeed(requestItemsValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchGetItemRequest) extends BatchGetItemRequest.ReadOnly {
      override def requestItemsValue: Map[primitives.TableName, KeysAndAttributes.ReadOnly] = impl.requestItems().asScala.map({
        case (key, value) =>
          (key: primitives.TableName) -> KeysAndAttributes.wrap(value)
      }).toMap
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchGetItemRequest): ReadOnly = new Wrapper(impl)
  }
  case class BatchGetItemResponse(responses: scala.Option[Map[primitives.TableName, Iterable[Map[primitives.AttributeName, AttributeValue]]]] = None, unprocessedKeys: scala.Option[Map[primitives.TableName, KeysAndAttributes]] = None, consumedCapacity: scala.Option[Iterable[ConsumedCapacity]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchGetItemResponse = {
      import BatchGetItemResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchGetItemResponse.builder().optionallyWith(responses.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item.map({
              case (key, value) =>
                (key: java.lang.String) -> value.buildAwsValue()
            }).asJava
          }.asJavaCollection
      }).asJava))(_.responses).optionallyWith(unprocessedKeys.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.unprocessedKeys).optionallyWith(consumedCapacity.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.consumedCapacity).build()
    }
    def asReadOnly: BatchGetItemResponse.ReadOnly = BatchGetItemResponse.wrap(buildAwsValue())
  }
  object BatchGetItemResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchGetItemResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchGetItemResponse = BatchGetItemResponse(responsesValue.map(value => value.map({
        case (key, value) =>
          key -> value.map { item => 
            item.map({
              case (key, value) =>
                key -> value.editable
            })
          }
      })), unprocessedKeysValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consumedCapacityValue.map(value => value.map { item => 
        item.editable
      }))
      def responsesValue: scala.Option[Map[primitives.TableName, List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]]]
      def unprocessedKeysValue: scala.Option[Map[primitives.TableName, KeysAndAttributes.ReadOnly]]
      def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]]
      def responses: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TableName, List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("responses", responsesValue)
      def unprocessedKeys: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TableName, KeysAndAttributes.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("unprocessedKeys", unprocessedKeysValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ConsumedCapacity.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchGetItemResponse) extends BatchGetItemResponse.ReadOnly {
      override def responsesValue: scala.Option[Map[primitives.TableName, List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]]] = scala.Option(impl.responses()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TableName) -> value.asScala.map { item => 
            item.asScala.map({
              case (key, value) =>
                (key: primitives.AttributeName) -> AttributeValue.wrap(value)
            }).toMap
          }.toList
      }).toMap)
      override def unprocessedKeysValue: scala.Option[Map[primitives.TableName, KeysAndAttributes.ReadOnly]] = scala.Option(impl.unprocessedKeys()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TableName) -> KeysAndAttributes.wrap(value)
      }).toMap)
      override def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]] = scala.Option(impl.consumedCapacity()).map(value => value.asScala.map { item => 
        ConsumedCapacity.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchGetItemResponse): ReadOnly = new Wrapper(impl)
  }
  type BatchGetRequestMap = Map[primitives.TableName, KeysAndAttributes]
  type BatchGetResponseMap = Map[primitives.TableName, Iterable[Map[primitives.AttributeName, AttributeValue]]]
  case class BatchStatementError(code: scala.Option[BatchStatementErrorCodeEnum] = None, message: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchStatementError = {
      import BatchStatementError.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchStatementError.builder().optionallyWith(code.map(value => value.unwrap))(_.code).optionallyWith(message.map(value => value: java.lang.String))(_.message).build()
    }
    def asReadOnly: BatchStatementError.ReadOnly = BatchStatementError.wrap(buildAwsValue())
  }
  object BatchStatementError {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchStatementError] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchStatementError = BatchStatementError(codeValue.map(value => value), messageValue.map(value => value))
      def codeValue: scala.Option[BatchStatementErrorCodeEnum]
      def messageValue: scala.Option[String]
      def code: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BatchStatementErrorCodeEnum] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("code", codeValue)
      def message: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("message", messageValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchStatementError) extends BatchStatementError.ReadOnly {
      override def codeValue: scala.Option[BatchStatementErrorCodeEnum] = scala.Option(impl.code()).map(value => BatchStatementErrorCodeEnum.wrap(value))
      override def messageValue: scala.Option[String] = scala.Option(impl.message()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchStatementError): ReadOnly = new Wrapper(impl)
  }
  sealed trait BatchStatementErrorCodeEnum { def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum }
  object BatchStatementErrorCodeEnum {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum): BatchStatementErrorCodeEnum = value match {
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.CONDITIONAL_CHECK_FAILED => ConditionalCheckFailed
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.ITEM_COLLECTION_SIZE_LIMIT_EXCEEDED => ItemCollectionSizeLimitExceeded
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.REQUEST_LIMIT_EXCEEDED => RequestLimitExceeded
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.VALIDATION_ERROR => ValidationError
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.PROVISIONED_THROUGHPUT_EXCEEDED => ProvisionedThroughputExceeded
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.TRANSACTION_CONFLICT => TransactionConflict
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.THROTTLING_ERROR => ThrottlingError
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.INTERNAL_SERVER_ERROR => InternalServerError
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.RESOURCE_NOT_FOUND => ResourceNotFound
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.ACCESS_DENIED => AccessDenied
      case software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.DUPLICATE_ITEM => DuplicateItem
    }
    final case object unknownToSdkVersion extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.UNKNOWN_TO_SDK_VERSION }
    final case object ConditionalCheckFailed extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.CONDITIONAL_CHECK_FAILED }
    final case object ItemCollectionSizeLimitExceeded extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.ITEM_COLLECTION_SIZE_LIMIT_EXCEEDED }
    final case object RequestLimitExceeded extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.REQUEST_LIMIT_EXCEEDED }
    final case object ValidationError extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.VALIDATION_ERROR }
    final case object ProvisionedThroughputExceeded extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.PROVISIONED_THROUGHPUT_EXCEEDED }
    final case object TransactionConflict extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.TRANSACTION_CONFLICT }
    final case object ThrottlingError extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.THROTTLING_ERROR }
    final case object InternalServerError extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.INTERNAL_SERVER_ERROR }
    final case object ResourceNotFound extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.RESOURCE_NOT_FOUND }
    final case object AccessDenied extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.ACCESS_DENIED }
    final case object DuplicateItem extends BatchStatementErrorCodeEnum { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum = software.amazon.awssdk.services.dynamodb.model.BatchStatementErrorCodeEnum.DUPLICATE_ITEM }
  }
  case class BatchStatementRequest(statement: primitives.PartiQLStatement, parameters: scala.Option[Iterable[AttributeValue]] = None, consistentRead: scala.Option[primitives.ConsistentRead] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchStatementRequest = {
      import BatchStatementRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchStatementRequest.builder().statement(statement: java.lang.String).optionallyWith(parameters.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.parameters).optionallyWith(consistentRead.map(value => value: java.lang.Boolean))(_.consistentRead).build()
    }
    def asReadOnly: BatchStatementRequest.ReadOnly = BatchStatementRequest.wrap(buildAwsValue())
  }
  object BatchStatementRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchStatementRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchStatementRequest = BatchStatementRequest(statementValue, parametersValue.map(value => value.map { item => 
        item.editable
      }), consistentReadValue.map(value => value))
      def statementValue: primitives.PartiQLStatement
      def parametersValue: scala.Option[List[AttributeValue.ReadOnly]]
      def consistentReadValue: scala.Option[primitives.ConsistentRead]
      def statement: ZIO[Any, Nothing, primitives.PartiQLStatement] = ZIO.succeed(statementValue)
      def parameters: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parameters", parametersValue)
      def consistentRead: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsistentRead] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consistentRead", consistentReadValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchStatementRequest) extends BatchStatementRequest.ReadOnly {
      override def statementValue: primitives.PartiQLStatement = impl.statement(): primitives.PartiQLStatement
      override def parametersValue: scala.Option[List[AttributeValue.ReadOnly]] = scala.Option(impl.parameters()).map(value => value.asScala.map { item => 
        AttributeValue.wrap(item)
      }.toList)
      override def consistentReadValue: scala.Option[primitives.ConsistentRead] = scala.Option(impl.consistentRead()).map(value => value: primitives.ConsistentRead)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchStatementRequest): ReadOnly = new Wrapper(impl)
  }
  case class BatchStatementResponse(error: scala.Option[BatchStatementError] = None, tableName: scala.Option[primitives.TableName] = None, item: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchStatementResponse = {
      import BatchStatementResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchStatementResponse.builder().optionallyWith(error.map(value => value.buildAwsValue()))(_.error).optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(item.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.item).build()
    }
    def asReadOnly: BatchStatementResponse.ReadOnly = BatchStatementResponse.wrap(buildAwsValue())
  }
  object BatchStatementResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchStatementResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchStatementResponse = BatchStatementResponse(errorValue.map(value => value.editable), tableNameValue.map(value => value), itemValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })))
      def errorValue: scala.Option[BatchStatementError.ReadOnly]
      def tableNameValue: scala.Option[primitives.TableName]
      def itemValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def error: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BatchStatementError.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("error", errorValue)
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def item: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("item", itemValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchStatementResponse) extends BatchStatementResponse.ReadOnly {
      override def errorValue: scala.Option[BatchStatementError.ReadOnly] = scala.Option(impl.error()).map(value => BatchStatementError.wrap(value))
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def itemValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.item()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchStatementResponse): ReadOnly = new Wrapper(impl)
  }
  case class BatchWriteItemRequest(requestItems: Map[primitives.TableName, Iterable[WriteRequest]], returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, returnItemCollectionMetrics: scala.Option[ReturnItemCollectionMetrics] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchWriteItemRequest = {
      import BatchWriteItemRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchWriteItemRequest.builder().requestItems(requestItems.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item.buildAwsValue()
          }.asJavaCollection
      }).asJava).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(returnItemCollectionMetrics.map(value => value.unwrap))(_.returnItemCollectionMetrics).build()
    }
    def asReadOnly: BatchWriteItemRequest.ReadOnly = BatchWriteItemRequest.wrap(buildAwsValue())
  }
  object BatchWriteItemRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchWriteItemRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchWriteItemRequest = BatchWriteItemRequest(requestItemsValue.map({
        case (key, value) =>
          key -> value.map { item => 
            item.editable
          }
      }), returnConsumedCapacityValue.map(value => value), returnItemCollectionMetricsValue.map(value => value))
      def requestItemsValue: Map[primitives.TableName, List[WriteRequest.ReadOnly]]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics]
      def requestItems: ZIO[Any, Nothing, Map[primitives.TableName, List[WriteRequest.ReadOnly]]] = ZIO.succeed(requestItemsValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def returnItemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnItemCollectionMetrics] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnItemCollectionMetrics", returnItemCollectionMetricsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchWriteItemRequest) extends BatchWriteItemRequest.ReadOnly {
      override def requestItemsValue: Map[primitives.TableName, List[WriteRequest.ReadOnly]] = impl.requestItems().asScala.map({
        case (key, value) =>
          (key: primitives.TableName) -> value.asScala.map { item => 
            WriteRequest.wrap(item)
          }.toList
      }).toMap
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics] = scala.Option(impl.returnItemCollectionMetrics()).map(value => ReturnItemCollectionMetrics.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchWriteItemRequest): ReadOnly = new Wrapper(impl)
  }
  type BatchWriteItemRequestMap = Map[primitives.TableName, Iterable[WriteRequest]]
  case class BatchWriteItemResponse(unprocessedItems: scala.Option[Map[primitives.TableName, Iterable[WriteRequest]]] = None, itemCollectionMetrics: scala.Option[Map[primitives.TableName, Iterable[ItemCollectionMetrics]]] = None, consumedCapacity: scala.Option[Iterable[ConsumedCapacity]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BatchWriteItemResponse = {
      import BatchWriteItemResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BatchWriteItemResponse.builder().optionallyWith(unprocessedItems.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item.buildAwsValue()
          }.asJavaCollection
      }).asJava))(_.unprocessedItems).optionallyWith(itemCollectionMetrics.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item.buildAwsValue()
          }.asJavaCollection
      }).asJava))(_.itemCollectionMetrics).optionallyWith(consumedCapacity.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.consumedCapacity).build()
    }
    def asReadOnly: BatchWriteItemResponse.ReadOnly = BatchWriteItemResponse.wrap(buildAwsValue())
  }
  object BatchWriteItemResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BatchWriteItemResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BatchWriteItemResponse = BatchWriteItemResponse(unprocessedItemsValue.map(value => value.map({
        case (key, value) =>
          key -> value.map { item => 
            item.editable
          }
      })), itemCollectionMetricsValue.map(value => value.map({
        case (key, value) =>
          key -> value.map { item => 
            item.editable
          }
      })), consumedCapacityValue.map(value => value.map { item => 
        item.editable
      }))
      def unprocessedItemsValue: scala.Option[Map[primitives.TableName, List[WriteRequest.ReadOnly]]]
      def itemCollectionMetricsValue: scala.Option[Map[primitives.TableName, List[ItemCollectionMetrics.ReadOnly]]]
      def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]]
      def unprocessedItems: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TableName, List[WriteRequest.ReadOnly]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("unprocessedItems", unprocessedItemsValue)
      def itemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TableName, List[ItemCollectionMetrics.ReadOnly]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCollectionMetrics", itemCollectionMetricsValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ConsumedCapacity.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BatchWriteItemResponse) extends BatchWriteItemResponse.ReadOnly {
      override def unprocessedItemsValue: scala.Option[Map[primitives.TableName, List[WriteRequest.ReadOnly]]] = scala.Option(impl.unprocessedItems()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TableName) -> value.asScala.map { item => 
            WriteRequest.wrap(item)
          }.toList
      }).toMap)
      override def itemCollectionMetricsValue: scala.Option[Map[primitives.TableName, List[ItemCollectionMetrics.ReadOnly]]] = scala.Option(impl.itemCollectionMetrics()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TableName) -> value.asScala.map { item => 
            ItemCollectionMetrics.wrap(item)
          }.toList
      }).toMap)
      override def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]] = scala.Option(impl.consumedCapacity()).map(value => value.asScala.map { item => 
        ConsumedCapacity.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BatchWriteItemResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait BillingMode { def unwrap: software.amazon.awssdk.services.dynamodb.model.BillingMode }
  object BillingMode {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.BillingMode): BillingMode = value match {
      case software.amazon.awssdk.services.dynamodb.model.BillingMode.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.BillingMode.PROVISIONED => PROVISIONED
      case software.amazon.awssdk.services.dynamodb.model.BillingMode.PAY_PER_REQUEST => PAY_PER_REQUEST
    }
    final case object unknownToSdkVersion extends BillingMode { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BillingMode = software.amazon.awssdk.services.dynamodb.model.BillingMode.UNKNOWN_TO_SDK_VERSION }
    final case object PROVISIONED extends BillingMode { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BillingMode = software.amazon.awssdk.services.dynamodb.model.BillingMode.PROVISIONED }
    final case object PAY_PER_REQUEST extends BillingMode { override def unwrap: software.amazon.awssdk.services.dynamodb.model.BillingMode = software.amazon.awssdk.services.dynamodb.model.BillingMode.PAY_PER_REQUEST }
  }
  case class BillingModeSummary(billingMode: scala.Option[BillingMode] = None, lastUpdateToPayPerRequestDateTime: scala.Option[primitives.Date] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.BillingModeSummary = {
      import BillingModeSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.BillingModeSummary.builder().optionallyWith(billingMode.map(value => value.unwrap))(_.billingMode).optionallyWith(lastUpdateToPayPerRequestDateTime.map(value => value: java.time.Instant))(_.lastUpdateToPayPerRequestDateTime).build()
    }
    def asReadOnly: BillingModeSummary.ReadOnly = BillingModeSummary.wrap(buildAwsValue())
  }
  object BillingModeSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.BillingModeSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: BillingModeSummary = BillingModeSummary(billingModeValue.map(value => value), lastUpdateToPayPerRequestDateTimeValue.map(value => value))
      def billingModeValue: scala.Option[BillingMode]
      def lastUpdateToPayPerRequestDateTimeValue: scala.Option[primitives.Date]
      def billingMode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billingMode", billingModeValue)
      def lastUpdateToPayPerRequestDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdateToPayPerRequestDateTime", lastUpdateToPayPerRequestDateTimeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.BillingModeSummary) extends BillingModeSummary.ReadOnly {
      override def billingModeValue: scala.Option[BillingMode] = scala.Option(impl.billingMode()).map(value => BillingMode.wrap(value))
      override def lastUpdateToPayPerRequestDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.lastUpdateToPayPerRequestDateTime()).map(value => value: primitives.Date)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.BillingModeSummary): ReadOnly = new Wrapper(impl)
  }
  type BinarySetAttributeValue = List[primitives.BinaryAttributeValue]
  case class Capacity(readCapacityUnits: scala.Option[primitives.ConsumedCapacityUnits] = None, writeCapacityUnits: scala.Option[primitives.ConsumedCapacityUnits] = None, capacityUnits: scala.Option[primitives.ConsumedCapacityUnits] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Capacity = {
      import Capacity.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Capacity.builder().optionallyWith(readCapacityUnits.map(value => value: java.lang.Double))(_.readCapacityUnits).optionallyWith(writeCapacityUnits.map(value => value: java.lang.Double))(_.writeCapacityUnits).optionallyWith(capacityUnits.map(value => value: java.lang.Double))(_.capacityUnits).build()
    }
    def asReadOnly: Capacity.ReadOnly = Capacity.wrap(buildAwsValue())
  }
  object Capacity {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Capacity] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Capacity = Capacity(readCapacityUnitsValue.map(value => value), writeCapacityUnitsValue.map(value => value), capacityUnitsValue.map(value => value))
      def readCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits]
      def writeCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits]
      def capacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits]
      def readCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsumedCapacityUnits] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("readCapacityUnits", readCapacityUnitsValue)
      def writeCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsumedCapacityUnits] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("writeCapacityUnits", writeCapacityUnitsValue)
      def capacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsumedCapacityUnits] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("capacityUnits", capacityUnitsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Capacity) extends Capacity.ReadOnly {
      override def readCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits] = scala.Option(impl.readCapacityUnits()).map(value => value: primitives.ConsumedCapacityUnits)
      override def writeCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits] = scala.Option(impl.writeCapacityUnits()).map(value => value: primitives.ConsumedCapacityUnits)
      override def capacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits] = scala.Option(impl.capacityUnits()).map(value => value: primitives.ConsumedCapacityUnits)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Capacity): ReadOnly = new Wrapper(impl)
  }
  sealed trait ComparisonOperator { def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator }
  object ComparisonOperator {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator): ComparisonOperator = value match {
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.EQ => EQ
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NE => NE
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.IN => IN
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.LE => LE
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.LT => LT
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.GE => GE
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.GT => GT
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NOT_NULL => NOT_NULL
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NULL => NULL
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.CONTAINS => CONTAINS
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NOT_CONTAINS => NOT_CONTAINS
      case software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.BEGINS_WITH => BEGINS_WITH
    }
    final case object unknownToSdkVersion extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.UNKNOWN_TO_SDK_VERSION }
    final case object EQ extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.EQ }
    final case object NE extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NE }
    final case object IN extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.IN }
    final case object LE extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.LE }
    final case object LT extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.LT }
    final case object GE extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.GE }
    final case object GT extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.GT }
    final case object BETWEEN extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.BETWEEN }
    final case object NOT_NULL extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NOT_NULL }
    final case object NULL extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NULL }
    final case object CONTAINS extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.CONTAINS }
    final case object NOT_CONTAINS extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.NOT_CONTAINS }
    final case object BEGINS_WITH extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ComparisonOperator = software.amazon.awssdk.services.dynamodb.model.ComparisonOperator.BEGINS_WITH }
  }
  case class Condition(attributeValueList: scala.Option[Iterable[AttributeValue]] = None, comparisonOperator: ComparisonOperator) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Condition = {
      import Condition.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Condition.builder().optionallyWith(attributeValueList.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.attributeValueList).comparisonOperator(comparisonOperator.unwrap).build()
    }
    def asReadOnly: Condition.ReadOnly = Condition.wrap(buildAwsValue())
  }
  object Condition {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Condition] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Condition = Condition(attributeValueListValue.map(value => value.map { item => 
        item.editable
      }), comparisonOperatorValue)
      def attributeValueListValue: scala.Option[List[AttributeValue.ReadOnly]]
      def comparisonOperatorValue: ComparisonOperator
      def attributeValueList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributeValueList", attributeValueListValue)
      def comparisonOperator: ZIO[Any, Nothing, ComparisonOperator] = ZIO.succeed(comparisonOperatorValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Condition) extends Condition.ReadOnly {
      override def attributeValueListValue: scala.Option[List[AttributeValue.ReadOnly]] = scala.Option(impl.attributeValueList()).map(value => value.asScala.map { item => 
        AttributeValue.wrap(item)
      }.toList)
      override def comparisonOperatorValue: ComparisonOperator = ComparisonOperator.wrap(impl.comparisonOperator())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Condition): ReadOnly = new Wrapper(impl)
  }
  case class ConditionCheck(key: Map[primitives.AttributeName, AttributeValue], tableName: primitives.TableName, conditionExpression: primitives.ConditionExpression, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None, returnValuesOnConditionCheckFailure: scala.Option[ReturnValuesOnConditionCheckFailure] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ConditionCheck = {
      import ConditionCheck.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ConditionCheck.builder().key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).tableName(tableName: java.lang.String).conditionExpression(conditionExpression: java.lang.String).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).optionallyWith(returnValuesOnConditionCheckFailure.map(value => value.unwrap))(_.returnValuesOnConditionCheckFailure).build()
    }
    def asReadOnly: ConditionCheck.ReadOnly = ConditionCheck.wrap(buildAwsValue())
  }
  object ConditionCheck {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ConditionCheck] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConditionCheck = ConditionCheck(keyValue.map({
        case (key, value) =>
          key -> value.editable
      }), tableNameValue, conditionExpressionValue, expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), returnValuesOnConditionCheckFailureValue.map(value => value))
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def tableNameValue: primitives.TableName
      def conditionExpressionValue: primitives.ConditionExpression
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure]
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def conditionExpression: ZIO[Any, Nothing, primitives.ConditionExpression] = ZIO.succeed(conditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
      def returnValuesOnConditionCheckFailure: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnValuesOnConditionCheckFailure] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnValuesOnConditionCheckFailure", returnValuesOnConditionCheckFailureValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ConditionCheck) extends ConditionCheck.ReadOnly {
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def conditionExpressionValue: primitives.ConditionExpression = impl.conditionExpression(): primitives.ConditionExpression
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
      override def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure] = scala.Option(impl.returnValuesOnConditionCheckFailure()).map(value => ReturnValuesOnConditionCheckFailure.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ConditionCheck): ReadOnly = new Wrapper(impl)
  }
  sealed trait ConditionalOperator { def unwrap: software.amazon.awssdk.services.dynamodb.model.ConditionalOperator }
  object ConditionalOperator {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ConditionalOperator): ConditionalOperator = value match {
      case software.amazon.awssdk.services.dynamodb.model.ConditionalOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ConditionalOperator.AND => AND
      case software.amazon.awssdk.services.dynamodb.model.ConditionalOperator.OR => OR
    }
    final case object unknownToSdkVersion extends ConditionalOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ConditionalOperator = software.amazon.awssdk.services.dynamodb.model.ConditionalOperator.UNKNOWN_TO_SDK_VERSION }
    final case object AND extends ConditionalOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ConditionalOperator = software.amazon.awssdk.services.dynamodb.model.ConditionalOperator.AND }
    final case object OR extends ConditionalOperator { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ConditionalOperator = software.amazon.awssdk.services.dynamodb.model.ConditionalOperator.OR }
  }
  case class ConsumedCapacity(tableName: scala.Option[primitives.TableName] = None, capacityUnits: scala.Option[primitives.ConsumedCapacityUnits] = None, readCapacityUnits: scala.Option[primitives.ConsumedCapacityUnits] = None, writeCapacityUnits: scala.Option[primitives.ConsumedCapacityUnits] = None, table: scala.Option[Capacity] = None, localSecondaryIndexes: scala.Option[Map[primitives.IndexName, Capacity]] = None, globalSecondaryIndexes: scala.Option[Map[primitives.IndexName, Capacity]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity = {
      import ConsumedCapacity.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(capacityUnits.map(value => value: java.lang.Double))(_.capacityUnits).optionallyWith(readCapacityUnits.map(value => value: java.lang.Double))(_.readCapacityUnits).optionallyWith(writeCapacityUnits.map(value => value: java.lang.Double))(_.writeCapacityUnits).optionallyWith(table.map(value => value.buildAwsValue()))(_.table).optionallyWith(localSecondaryIndexes.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.localSecondaryIndexes).optionallyWith(globalSecondaryIndexes.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.globalSecondaryIndexes).build()
    }
    def asReadOnly: ConsumedCapacity.ReadOnly = ConsumedCapacity.wrap(buildAwsValue())
  }
  object ConsumedCapacity {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConsumedCapacity = ConsumedCapacity(tableNameValue.map(value => value), capacityUnitsValue.map(value => value), readCapacityUnitsValue.map(value => value), writeCapacityUnitsValue.map(value => value), tableValue.map(value => value.editable), localSecondaryIndexesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), globalSecondaryIndexesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })))
      def tableNameValue: scala.Option[primitives.TableName]
      def capacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits]
      def readCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits]
      def writeCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits]
      def tableValue: scala.Option[Capacity.ReadOnly]
      def localSecondaryIndexesValue: scala.Option[Map[primitives.IndexName, Capacity.ReadOnly]]
      def globalSecondaryIndexesValue: scala.Option[Map[primitives.IndexName, Capacity.ReadOnly]]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def capacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsumedCapacityUnits] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("capacityUnits", capacityUnitsValue)
      def readCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsumedCapacityUnits] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("readCapacityUnits", readCapacityUnitsValue)
      def writeCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsumedCapacityUnits] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("writeCapacityUnits", writeCapacityUnitsValue)
      def table: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Capacity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("table", tableValue)
      def localSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.IndexName, Capacity.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("localSecondaryIndexes", localSecondaryIndexesValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.IndexName, Capacity.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity) extends ConsumedCapacity.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def capacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits] = scala.Option(impl.capacityUnits()).map(value => value: primitives.ConsumedCapacityUnits)
      override def readCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits] = scala.Option(impl.readCapacityUnits()).map(value => value: primitives.ConsumedCapacityUnits)
      override def writeCapacityUnitsValue: scala.Option[primitives.ConsumedCapacityUnits] = scala.Option(impl.writeCapacityUnits()).map(value => value: primitives.ConsumedCapacityUnits)
      override def tableValue: scala.Option[Capacity.ReadOnly] = scala.Option(impl.table()).map(value => Capacity.wrap(value))
      override def localSecondaryIndexesValue: scala.Option[Map[primitives.IndexName, Capacity.ReadOnly]] = scala.Option(impl.localSecondaryIndexes()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.IndexName) -> Capacity.wrap(value)
      }).toMap)
      override def globalSecondaryIndexesValue: scala.Option[Map[primitives.IndexName, Capacity.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.IndexName) -> Capacity.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity): ReadOnly = new Wrapper(impl)
  }
  type ConsumedCapacityMultiple = List[ConsumedCapacity]
  case class ContinuousBackupsDescription(continuousBackupsStatus: ContinuousBackupsStatus, pointInTimeRecoveryDescription: scala.Option[PointInTimeRecoveryDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsDescription = {
      import ContinuousBackupsDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsDescription.builder().continuousBackupsStatus(continuousBackupsStatus.unwrap).optionallyWith(pointInTimeRecoveryDescription.map(value => value.buildAwsValue()))(_.pointInTimeRecoveryDescription).build()
    }
    def asReadOnly: ContinuousBackupsDescription.ReadOnly = ContinuousBackupsDescription.wrap(buildAwsValue())
  }
  object ContinuousBackupsDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContinuousBackupsDescription = ContinuousBackupsDescription(continuousBackupsStatusValue, pointInTimeRecoveryDescriptionValue.map(value => value.editable))
      def continuousBackupsStatusValue: ContinuousBackupsStatus
      def pointInTimeRecoveryDescriptionValue: scala.Option[PointInTimeRecoveryDescription.ReadOnly]
      def continuousBackupsStatus: ZIO[Any, Nothing, ContinuousBackupsStatus] = ZIO.succeed(continuousBackupsStatusValue)
      def pointInTimeRecoveryDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PointInTimeRecoveryDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pointInTimeRecoveryDescription", pointInTimeRecoveryDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsDescription) extends ContinuousBackupsDescription.ReadOnly {
      override def continuousBackupsStatusValue: ContinuousBackupsStatus = ContinuousBackupsStatus.wrap(impl.continuousBackupsStatus())
      override def pointInTimeRecoveryDescriptionValue: scala.Option[PointInTimeRecoveryDescription.ReadOnly] = scala.Option(impl.pointInTimeRecoveryDescription()).map(value => PointInTimeRecoveryDescription.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsDescription): ReadOnly = new Wrapper(impl)
  }
  sealed trait ContinuousBackupsStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus }
  object ContinuousBackupsStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus): ContinuousBackupsStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus.ENABLED => ENABLED
      case software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus.DISABLED => DISABLED
    }
    final case object unknownToSdkVersion extends ContinuousBackupsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus = software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLED extends ContinuousBackupsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus = software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus.ENABLED }
    final case object DISABLED extends ContinuousBackupsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus = software.amazon.awssdk.services.dynamodb.model.ContinuousBackupsStatus.DISABLED }
  }
  sealed trait ContributorInsightsAction { def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction }
  object ContributorInsightsAction {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction): ContributorInsightsAction = value match {
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction.ENABLE => ENABLE
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction.DISABLE => DISABLE
    }
    final case object unknownToSdkVersion extends ContributorInsightsAction { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLE extends ContributorInsightsAction { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction.ENABLE }
    final case object DISABLE extends ContributorInsightsAction { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsAction.DISABLE }
  }
  type ContributorInsightsRuleList = List[primitives.ContributorInsightsRule]
  sealed trait ContributorInsightsStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus }
  object ContributorInsightsStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus): ContributorInsightsStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.ENABLING => ENABLING
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.ENABLED => ENABLED
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.DISABLING => DISABLING
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.DISABLED => DISABLED
      case software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.FAILED => FAILED
    }
    final case object unknownToSdkVersion extends ContributorInsightsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLING extends ContributorInsightsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.ENABLING }
    final case object ENABLED extends ContributorInsightsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.ENABLED }
    final case object DISABLING extends ContributorInsightsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.DISABLING }
    final case object DISABLED extends ContributorInsightsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.DISABLED }
    final case object FAILED extends ContributorInsightsStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus = software.amazon.awssdk.services.dynamodb.model.ContributorInsightsStatus.FAILED }
  }
  type ContributorInsightsSummaries = List[ContributorInsightsSummary]
  case class ContributorInsightsSummary(tableName: scala.Option[primitives.TableName] = None, indexName: scala.Option[primitives.IndexName] = None, contributorInsightsStatus: scala.Option[ContributorInsightsStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ContributorInsightsSummary = {
      import ContributorInsightsSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ContributorInsightsSummary.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(contributorInsightsStatus.map(value => value.unwrap))(_.contributorInsightsStatus).build()
    }
    def asReadOnly: ContributorInsightsSummary.ReadOnly = ContributorInsightsSummary.wrap(buildAwsValue())
  }
  object ContributorInsightsSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ContributorInsightsSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContributorInsightsSummary = ContributorInsightsSummary(tableNameValue.map(value => value), indexNameValue.map(value => value), contributorInsightsStatusValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def indexNameValue: scala.Option[primitives.IndexName]
      def contributorInsightsStatusValue: scala.Option[ContributorInsightsStatus]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def contributorInsightsStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContributorInsightsStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contributorInsightsStatus", contributorInsightsStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsSummary) extends ContributorInsightsSummary.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def contributorInsightsStatusValue: scala.Option[ContributorInsightsStatus] = scala.Option(impl.contributorInsightsStatus()).map(value => ContributorInsightsStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ContributorInsightsSummary): ReadOnly = new Wrapper(impl)
  }
  case class CreateBackupRequest(tableName: primitives.TableName, backupName: primitives.BackupName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateBackupRequest = {
      import CreateBackupRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateBackupRequest.builder().tableName(tableName: java.lang.String).backupName(backupName: java.lang.String).build()
    }
    def asReadOnly: CreateBackupRequest.ReadOnly = CreateBackupRequest.wrap(buildAwsValue())
  }
  object CreateBackupRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateBackupRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateBackupRequest = CreateBackupRequest(tableNameValue, backupNameValue)
      def tableNameValue: primitives.TableName
      def backupNameValue: primitives.BackupName
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def backupName: ZIO[Any, Nothing, primitives.BackupName] = ZIO.succeed(backupNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateBackupRequest) extends CreateBackupRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def backupNameValue: primitives.BackupName = impl.backupName(): primitives.BackupName
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateBackupRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateBackupResponse(backupDetails: scala.Option[BackupDetails] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateBackupResponse = {
      import CreateBackupResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateBackupResponse.builder().optionallyWith(backupDetails.map(value => value.buildAwsValue()))(_.backupDetails).build()
    }
    def asReadOnly: CreateBackupResponse.ReadOnly = CreateBackupResponse.wrap(buildAwsValue())
  }
  object CreateBackupResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateBackupResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateBackupResponse = CreateBackupResponse(backupDetailsValue.map(value => value.editable))
      def backupDetailsValue: scala.Option[BackupDetails.ReadOnly]
      def backupDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BackupDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupDetails", backupDetailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateBackupResponse) extends CreateBackupResponse.ReadOnly { override def backupDetailsValue: scala.Option[BackupDetails.ReadOnly] = scala.Option(impl.backupDetails()).map(value => BackupDetails.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateBackupResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateGlobalSecondaryIndexAction(indexName: primitives.IndexName, keySchema: Iterable[KeySchemaElement], projection: Projection, provisionedThroughput: scala.Option[ProvisionedThroughput] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateGlobalSecondaryIndexAction = {
      import CreateGlobalSecondaryIndexAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateGlobalSecondaryIndexAction.builder().indexName(indexName: java.lang.String).keySchema(keySchema.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).projection(projection.buildAwsValue()).optionallyWith(provisionedThroughput.map(value => value.buildAwsValue()))(_.provisionedThroughput).build()
    }
    def asReadOnly: CreateGlobalSecondaryIndexAction.ReadOnly = CreateGlobalSecondaryIndexAction.wrap(buildAwsValue())
  }
  object CreateGlobalSecondaryIndexAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateGlobalSecondaryIndexAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateGlobalSecondaryIndexAction = CreateGlobalSecondaryIndexAction(indexNameValue, keySchemaValue.map { item => 
        item.editable
      }, projectionValue.editable, provisionedThroughputValue.map(value => value.editable))
      def indexNameValue: primitives.IndexName
      def keySchemaValue: List[KeySchemaElement.ReadOnly]
      def projectionValue: Projection.ReadOnly
      def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly]
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def keySchema: ZIO[Any, Nothing, List[KeySchemaElement.ReadOnly]] = ZIO.succeed(keySchemaValue)
      def projection: ZIO[Any, Nothing, Projection.ReadOnly] = ZIO.succeed(projectionValue)
      def provisionedThroughput: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughput.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughput", provisionedThroughputValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateGlobalSecondaryIndexAction) extends CreateGlobalSecondaryIndexAction.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def keySchemaValue: List[KeySchemaElement.ReadOnly] = impl.keySchema().asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList
      override def projectionValue: Projection.ReadOnly = Projection.wrap(impl.projection())
      override def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly] = scala.Option(impl.provisionedThroughput()).map(value => ProvisionedThroughput.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateGlobalSecondaryIndexAction): ReadOnly = new Wrapper(impl)
  }
  case class CreateGlobalTableRequest(globalTableName: primitives.TableName, replicationGroup: Iterable[Replica]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableRequest = {
      import CreateGlobalTableRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableRequest.builder().globalTableName(globalTableName: java.lang.String).replicationGroup(replicationGroup.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: CreateGlobalTableRequest.ReadOnly = CreateGlobalTableRequest.wrap(buildAwsValue())
  }
  object CreateGlobalTableRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateGlobalTableRequest = CreateGlobalTableRequest(globalTableNameValue, replicationGroupValue.map { item => 
        item.editable
      })
      def globalTableNameValue: primitives.TableName
      def replicationGroupValue: List[Replica.ReadOnly]
      def globalTableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(globalTableNameValue)
      def replicationGroup: ZIO[Any, Nothing, List[Replica.ReadOnly]] = ZIO.succeed(replicationGroupValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableRequest) extends CreateGlobalTableRequest.ReadOnly {
      override def globalTableNameValue: primitives.TableName = impl.globalTableName(): primitives.TableName
      override def replicationGroupValue: List[Replica.ReadOnly] = impl.replicationGroup().asScala.map { item => 
        Replica.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateGlobalTableResponse(globalTableDescription: scala.Option[GlobalTableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableResponse = {
      import CreateGlobalTableResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableResponse.builder().optionallyWith(globalTableDescription.map(value => value.buildAwsValue()))(_.globalTableDescription).build()
    }
    def asReadOnly: CreateGlobalTableResponse.ReadOnly = CreateGlobalTableResponse.wrap(buildAwsValue())
  }
  object CreateGlobalTableResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateGlobalTableResponse = CreateGlobalTableResponse(globalTableDescriptionValue.map(value => value.editable))
      def globalTableDescriptionValue: scala.Option[GlobalTableDescription.ReadOnly]
      def globalTableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GlobalTableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableDescription", globalTableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableResponse) extends CreateGlobalTableResponse.ReadOnly { override def globalTableDescriptionValue: scala.Option[GlobalTableDescription.ReadOnly] = scala.Option(impl.globalTableDescription()).map(value => GlobalTableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateGlobalTableResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateReplicaAction(regionName: primitives.RegionName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateReplicaAction = {
      import CreateReplicaAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateReplicaAction.builder().regionName(regionName: java.lang.String).build()
    }
    def asReadOnly: CreateReplicaAction.ReadOnly = CreateReplicaAction.wrap(buildAwsValue())
  }
  object CreateReplicaAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateReplicaAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateReplicaAction = CreateReplicaAction(regionNameValue)
      def regionNameValue: primitives.RegionName
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateReplicaAction) extends CreateReplicaAction.ReadOnly { override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateReplicaAction): ReadOnly = new Wrapper(impl)
  }
  case class CreateReplicationGroupMemberAction(regionName: primitives.RegionName, kmsMasterKeyId: scala.Option[primitives.KMSMasterKeyId] = None, provisionedThroughputOverride: scala.Option[ProvisionedThroughputOverride] = None, globalSecondaryIndexes: scala.Option[Iterable[ReplicaGlobalSecondaryIndex]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateReplicationGroupMemberAction = {
      import CreateReplicationGroupMemberAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateReplicationGroupMemberAction.builder().regionName(regionName: java.lang.String).optionallyWith(kmsMasterKeyId.map(value => value: java.lang.String))(_.kmsMasterKeyId).optionallyWith(provisionedThroughputOverride.map(value => value.buildAwsValue()))(_.provisionedThroughputOverride).optionallyWith(globalSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexes).build()
    }
    def asReadOnly: CreateReplicationGroupMemberAction.ReadOnly = CreateReplicationGroupMemberAction.wrap(buildAwsValue())
  }
  object CreateReplicationGroupMemberAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateReplicationGroupMemberAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateReplicationGroupMemberAction = CreateReplicationGroupMemberAction(regionNameValue, kmsMasterKeyIdValue.map(value => value), provisionedThroughputOverrideValue.map(value => value.editable), globalSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }))
      def regionNameValue: primitives.RegionName
      def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId]
      def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly]
      def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndex.ReadOnly]]
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
      def kmsMasterKeyId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSMasterKeyId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsMasterKeyId", kmsMasterKeyIdValue)
      def provisionedThroughputOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughputOverride.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughputOverride", provisionedThroughputOverrideValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaGlobalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateReplicationGroupMemberAction) extends CreateReplicationGroupMemberAction.ReadOnly {
      override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName
      override def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId] = scala.Option(impl.kmsMasterKeyId()).map(value => value: primitives.KMSMasterKeyId)
      override def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly] = scala.Option(impl.provisionedThroughputOverride()).map(value => ProvisionedThroughputOverride.wrap(value))
      override def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndex.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map { item => 
        ReplicaGlobalSecondaryIndex.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateReplicationGroupMemberAction): ReadOnly = new Wrapper(impl)
  }
  case class CreateTableRequest(attributeDefinitions: Iterable[AttributeDefinition], tableName: primitives.TableName, keySchema: Iterable[KeySchemaElement], localSecondaryIndexes: scala.Option[Iterable[LocalSecondaryIndex]] = None, globalSecondaryIndexes: scala.Option[Iterable[GlobalSecondaryIndex]] = None, billingMode: scala.Option[BillingMode] = None, provisionedThroughput: scala.Option[ProvisionedThroughput] = None, streamSpecification: scala.Option[StreamSpecification] = None, sseSpecification: scala.Option[SSESpecification] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateTableRequest = {
      import CreateTableRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateTableRequest.builder().attributeDefinitions(attributeDefinitions.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).tableName(tableName: java.lang.String).keySchema(keySchema.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(localSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.localSecondaryIndexes).optionallyWith(globalSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexes).optionallyWith(billingMode.map(value => value.unwrap))(_.billingMode).optionallyWith(provisionedThroughput.map(value => value.buildAwsValue()))(_.provisionedThroughput).optionallyWith(streamSpecification.map(value => value.buildAwsValue()))(_.streamSpecification).optionallyWith(sseSpecification.map(value => value.buildAwsValue()))(_.sseSpecification).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateTableRequest.ReadOnly = CreateTableRequest.wrap(buildAwsValue())
  }
  object CreateTableRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateTableRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateTableRequest = CreateTableRequest(attributeDefinitionsValue.map { item => 
        item.editable
      }, tableNameValue, keySchemaValue.map { item => 
        item.editable
      }, localSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), globalSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), billingModeValue.map(value => value), provisionedThroughputValue.map(value => value.editable), streamSpecificationValue.map(value => value.editable), sseSpecificationValue.map(value => value.editable), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def attributeDefinitionsValue: List[AttributeDefinition.ReadOnly]
      def tableNameValue: primitives.TableName
      def keySchemaValue: List[KeySchemaElement.ReadOnly]
      def localSecondaryIndexesValue: scala.Option[List[LocalSecondaryIndex.ReadOnly]]
      def globalSecondaryIndexesValue: scala.Option[List[GlobalSecondaryIndex.ReadOnly]]
      def billingModeValue: scala.Option[BillingMode]
      def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly]
      def streamSpecificationValue: scala.Option[StreamSpecification.ReadOnly]
      def sseSpecificationValue: scala.Option[SSESpecification.ReadOnly]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def attributeDefinitions: ZIO[Any, Nothing, List[AttributeDefinition.ReadOnly]] = ZIO.succeed(attributeDefinitionsValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def keySchema: ZIO[Any, Nothing, List[KeySchemaElement.ReadOnly]] = ZIO.succeed(keySchemaValue)
      def localSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LocalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("localSecondaryIndexes", localSecondaryIndexesValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
      def billingMode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billingMode", billingModeValue)
      def provisionedThroughput: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughput.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughput", provisionedThroughputValue)
      def streamSpecification: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamSpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamSpecification", streamSpecificationValue)
      def sseSpecification: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSESpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseSpecification", sseSpecificationValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateTableRequest) extends CreateTableRequest.ReadOnly {
      override def attributeDefinitionsValue: List[AttributeDefinition.ReadOnly] = impl.attributeDefinitions().asScala.map { item => 
        AttributeDefinition.wrap(item)
      }.toList
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def keySchemaValue: List[KeySchemaElement.ReadOnly] = impl.keySchema().asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList
      override def localSecondaryIndexesValue: scala.Option[List[LocalSecondaryIndex.ReadOnly]] = scala.Option(impl.localSecondaryIndexes()).map(value => value.asScala.map { item => 
        LocalSecondaryIndex.wrap(item)
      }.toList)
      override def globalSecondaryIndexesValue: scala.Option[List[GlobalSecondaryIndex.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map { item => 
        GlobalSecondaryIndex.wrap(item)
      }.toList)
      override def billingModeValue: scala.Option[BillingMode] = scala.Option(impl.billingMode()).map(value => BillingMode.wrap(value))
      override def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly] = scala.Option(impl.provisionedThroughput()).map(value => ProvisionedThroughput.wrap(value))
      override def streamSpecificationValue: scala.Option[StreamSpecification.ReadOnly] = scala.Option(impl.streamSpecification()).map(value => StreamSpecification.wrap(value))
      override def sseSpecificationValue: scala.Option[SSESpecification.ReadOnly] = scala.Option(impl.sseSpecification()).map(value => SSESpecification.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateTableRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateTableResponse(tableDescription: scala.Option[TableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.CreateTableResponse = {
      import CreateTableResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.CreateTableResponse.builder().optionallyWith(tableDescription.map(value => value.buildAwsValue()))(_.tableDescription).build()
    }
    def asReadOnly: CreateTableResponse.ReadOnly = CreateTableResponse.wrap(buildAwsValue())
  }
  object CreateTableResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.CreateTableResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateTableResponse = CreateTableResponse(tableDescriptionValue.map(value => value.editable))
      def tableDescriptionValue: scala.Option[TableDescription.ReadOnly]
      def tableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableDescription", tableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.CreateTableResponse) extends CreateTableResponse.ReadOnly { override def tableDescriptionValue: scala.Option[TableDescription.ReadOnly] = scala.Option(impl.tableDescription()).map(value => TableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.CreateTableResponse): ReadOnly = new Wrapper(impl)
  }
  case class Delete(key: Map[primitives.AttributeName, AttributeValue], tableName: primitives.TableName, conditionExpression: scala.Option[primitives.ConditionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None, returnValuesOnConditionCheckFailure: scala.Option[ReturnValuesOnConditionCheckFailure] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Delete = {
      import Delete.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Delete.builder().key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).tableName(tableName: java.lang.String).optionallyWith(conditionExpression.map(value => value: java.lang.String))(_.conditionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).optionallyWith(returnValuesOnConditionCheckFailure.map(value => value.unwrap))(_.returnValuesOnConditionCheckFailure).build()
    }
    def asReadOnly: Delete.ReadOnly = Delete.wrap(buildAwsValue())
  }
  object Delete {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Delete] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Delete = Delete(keyValue.map({
        case (key, value) =>
          key -> value.editable
      }), tableNameValue, conditionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), returnValuesOnConditionCheckFailureValue.map(value => value))
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def tableNameValue: primitives.TableName
      def conditionExpressionValue: scala.Option[primitives.ConditionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure]
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def conditionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionExpression", conditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
      def returnValuesOnConditionCheckFailure: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnValuesOnConditionCheckFailure] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnValuesOnConditionCheckFailure", returnValuesOnConditionCheckFailureValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Delete) extends Delete.ReadOnly {
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def conditionExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.conditionExpression()).map(value => value: primitives.ConditionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
      override def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure] = scala.Option(impl.returnValuesOnConditionCheckFailure()).map(value => ReturnValuesOnConditionCheckFailure.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Delete): ReadOnly = new Wrapper(impl)
  }
  case class DeleteBackupRequest(backupArn: primitives.BackupArn) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteBackupRequest = {
      import DeleteBackupRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteBackupRequest.builder().backupArn(backupArn: java.lang.String).build()
    }
    def asReadOnly: DeleteBackupRequest.ReadOnly = DeleteBackupRequest.wrap(buildAwsValue())
  }
  object DeleteBackupRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteBackupRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteBackupRequest = DeleteBackupRequest(backupArnValue)
      def backupArnValue: primitives.BackupArn
      def backupArn: ZIO[Any, Nothing, primitives.BackupArn] = ZIO.succeed(backupArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteBackupRequest) extends DeleteBackupRequest.ReadOnly { override def backupArnValue: primitives.BackupArn = impl.backupArn(): primitives.BackupArn }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteBackupRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteBackupResponse(backupDescription: scala.Option[BackupDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteBackupResponse = {
      import DeleteBackupResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteBackupResponse.builder().optionallyWith(backupDescription.map(value => value.buildAwsValue()))(_.backupDescription).build()
    }
    def asReadOnly: DeleteBackupResponse.ReadOnly = DeleteBackupResponse.wrap(buildAwsValue())
  }
  object DeleteBackupResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteBackupResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteBackupResponse = DeleteBackupResponse(backupDescriptionValue.map(value => value.editable))
      def backupDescriptionValue: scala.Option[BackupDescription.ReadOnly]
      def backupDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BackupDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupDescription", backupDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteBackupResponse) extends DeleteBackupResponse.ReadOnly { override def backupDescriptionValue: scala.Option[BackupDescription.ReadOnly] = scala.Option(impl.backupDescription()).map(value => BackupDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteBackupResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteGlobalSecondaryIndexAction(indexName: primitives.IndexName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteGlobalSecondaryIndexAction = {
      import DeleteGlobalSecondaryIndexAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteGlobalSecondaryIndexAction.builder().indexName(indexName: java.lang.String).build()
    }
    def asReadOnly: DeleteGlobalSecondaryIndexAction.ReadOnly = DeleteGlobalSecondaryIndexAction.wrap(buildAwsValue())
  }
  object DeleteGlobalSecondaryIndexAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteGlobalSecondaryIndexAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteGlobalSecondaryIndexAction = DeleteGlobalSecondaryIndexAction(indexNameValue)
      def indexNameValue: primitives.IndexName
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteGlobalSecondaryIndexAction) extends DeleteGlobalSecondaryIndexAction.ReadOnly { override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteGlobalSecondaryIndexAction): ReadOnly = new Wrapper(impl)
  }
  case class DeleteItemRequest(tableName: primitives.TableName, key: Map[primitives.AttributeName, AttributeValue], expected: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue]] = None, conditionalOperator: scala.Option[ConditionalOperator] = None, returnValues: scala.Option[ReturnValue] = None, returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, returnItemCollectionMetrics: scala.Option[ReturnItemCollectionMetrics] = None, conditionExpression: scala.Option[primitives.ConditionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest = {
      import DeleteItemRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest.builder().tableName(tableName: java.lang.String).key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).optionallyWith(expected.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expected).optionallyWith(conditionalOperator.map(value => value.unwrap))(_.conditionalOperator).optionallyWith(returnValues.map(value => value.unwrap))(_.returnValues).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(returnItemCollectionMetrics.map(value => value.unwrap))(_.returnItemCollectionMetrics).optionallyWith(conditionExpression.map(value => value: java.lang.String))(_.conditionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).build()
    }
    def asReadOnly: DeleteItemRequest.ReadOnly = DeleteItemRequest.wrap(buildAwsValue())
  }
  object DeleteItemRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteItemRequest = DeleteItemRequest(tableNameValue, keyValue.map({
        case (key, value) =>
          key -> value.editable
      }), expectedValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), conditionalOperatorValue.map(value => value), returnValuesValue.map(value => value), returnConsumedCapacityValue.map(value => value), returnItemCollectionMetricsValue.map(value => value), conditionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })))
      def tableNameValue: primitives.TableName
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def expectedValue: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]]
      def conditionalOperatorValue: scala.Option[ConditionalOperator]
      def returnValuesValue: scala.Option[ReturnValue]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics]
      def conditionExpressionValue: scala.Option[primitives.ConditionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
      def expected: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expected", expectedValue)
      def conditionalOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConditionalOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionalOperator", conditionalOperatorValue)
      def returnValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnValues", returnValuesValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def returnItemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnItemCollectionMetrics] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnItemCollectionMetrics", returnItemCollectionMetricsValue)
      def conditionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionExpression", conditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest) extends DeleteItemRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def expectedValue: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]] = scala.Option(impl.expected()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> ExpectedAttributeValue.wrap(value)
      }).toMap)
      override def conditionalOperatorValue: scala.Option[ConditionalOperator] = scala.Option(impl.conditionalOperator()).map(value => ConditionalOperator.wrap(value))
      override def returnValuesValue: scala.Option[ReturnValue] = scala.Option(impl.returnValues()).map(value => ReturnValue.wrap(value))
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics] = scala.Option(impl.returnItemCollectionMetrics()).map(value => ReturnItemCollectionMetrics.wrap(value))
      override def conditionExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.conditionExpression()).map(value => value: primitives.ConditionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteItemResponse(attributes: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, consumedCapacity: scala.Option[ConsumedCapacity] = None, itemCollectionMetrics: scala.Option[ItemCollectionMetrics] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse = {
      import DeleteItemResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse.builder().optionallyWith(attributes.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.attributes).optionallyWith(consumedCapacity.map(value => value.buildAwsValue()))(_.consumedCapacity).optionallyWith(itemCollectionMetrics.map(value => value.buildAwsValue()))(_.itemCollectionMetrics).build()
    }
    def asReadOnly: DeleteItemResponse.ReadOnly = DeleteItemResponse.wrap(buildAwsValue())
  }
  object DeleteItemResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteItemResponse = DeleteItemResponse(attributesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consumedCapacityValue.map(value => value.editable), itemCollectionMetricsValue.map(value => value.editable))
      def attributesValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly]
      def itemCollectionMetricsValue: scala.Option[ItemCollectionMetrics.ReadOnly]
      def attributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributes", attributesValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConsumedCapacity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
      def itemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ItemCollectionMetrics.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCollectionMetrics", itemCollectionMetricsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse) extends DeleteItemResponse.ReadOnly {
      override def attributesValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.attributes()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly] = scala.Option(impl.consumedCapacity()).map(value => ConsumedCapacity.wrap(value))
      override def itemCollectionMetricsValue: scala.Option[ItemCollectionMetrics.ReadOnly] = scala.Option(impl.itemCollectionMetrics()).map(value => ItemCollectionMetrics.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteReplicaAction(regionName: primitives.RegionName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteReplicaAction = {
      import DeleteReplicaAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteReplicaAction.builder().regionName(regionName: java.lang.String).build()
    }
    def asReadOnly: DeleteReplicaAction.ReadOnly = DeleteReplicaAction.wrap(buildAwsValue())
  }
  object DeleteReplicaAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteReplicaAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteReplicaAction = DeleteReplicaAction(regionNameValue)
      def regionNameValue: primitives.RegionName
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteReplicaAction) extends DeleteReplicaAction.ReadOnly { override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteReplicaAction): ReadOnly = new Wrapper(impl)
  }
  case class DeleteReplicationGroupMemberAction(regionName: primitives.RegionName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteReplicationGroupMemberAction = {
      import DeleteReplicationGroupMemberAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteReplicationGroupMemberAction.builder().regionName(regionName: java.lang.String).build()
    }
    def asReadOnly: DeleteReplicationGroupMemberAction.ReadOnly = DeleteReplicationGroupMemberAction.wrap(buildAwsValue())
  }
  object DeleteReplicationGroupMemberAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteReplicationGroupMemberAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteReplicationGroupMemberAction = DeleteReplicationGroupMemberAction(regionNameValue)
      def regionNameValue: primitives.RegionName
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteReplicationGroupMemberAction) extends DeleteReplicationGroupMemberAction.ReadOnly { override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteReplicationGroupMemberAction): ReadOnly = new Wrapper(impl)
  }
  case class DeleteRequest(key: Map[primitives.AttributeName, AttributeValue]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteRequest = {
      import DeleteRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteRequest.builder().key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).build()
    }
    def asReadOnly: DeleteRequest.ReadOnly = DeleteRequest.wrap(buildAwsValue())
  }
  object DeleteRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteRequest = DeleteRequest(keyValue.map({
        case (key, value) =>
          key -> value.editable
      }))
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteRequest) extends DeleteRequest.ReadOnly {
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteTableRequest(tableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest = {
      import DeleteTableRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest.builder().tableName(tableName: java.lang.String).build()
    }
    def asReadOnly: DeleteTableRequest.ReadOnly = DeleteTableRequest.wrap(buildAwsValue())
  }
  object DeleteTableRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteTableRequest = DeleteTableRequest(tableNameValue)
      def tableNameValue: primitives.TableName
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest) extends DeleteTableRequest.ReadOnly { override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteTableResponse(tableDescription: scala.Option[TableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DeleteTableResponse = {
      import DeleteTableResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DeleteTableResponse.builder().optionallyWith(tableDescription.map(value => value.buildAwsValue()))(_.tableDescription).build()
    }
    def asReadOnly: DeleteTableResponse.ReadOnly = DeleteTableResponse.wrap(buildAwsValue())
  }
  object DeleteTableResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DeleteTableResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteTableResponse = DeleteTableResponse(tableDescriptionValue.map(value => value.editable))
      def tableDescriptionValue: scala.Option[TableDescription.ReadOnly]
      def tableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableDescription", tableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DeleteTableResponse) extends DeleteTableResponse.ReadOnly { override def tableDescriptionValue: scala.Option[TableDescription.ReadOnly] = scala.Option(impl.tableDescription()).map(value => TableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DeleteTableResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeBackupRequest(backupArn: primitives.BackupArn) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeBackupRequest = {
      import DescribeBackupRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeBackupRequest.builder().backupArn(backupArn: java.lang.String).build()
    }
    def asReadOnly: DescribeBackupRequest.ReadOnly = DescribeBackupRequest.wrap(buildAwsValue())
  }
  object DescribeBackupRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeBackupRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeBackupRequest = DescribeBackupRequest(backupArnValue)
      def backupArnValue: primitives.BackupArn
      def backupArn: ZIO[Any, Nothing, primitives.BackupArn] = ZIO.succeed(backupArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeBackupRequest) extends DescribeBackupRequest.ReadOnly { override def backupArnValue: primitives.BackupArn = impl.backupArn(): primitives.BackupArn }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeBackupRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeBackupResponse(backupDescription: scala.Option[BackupDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeBackupResponse = {
      import DescribeBackupResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeBackupResponse.builder().optionallyWith(backupDescription.map(value => value.buildAwsValue()))(_.backupDescription).build()
    }
    def asReadOnly: DescribeBackupResponse.ReadOnly = DescribeBackupResponse.wrap(buildAwsValue())
  }
  object DescribeBackupResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeBackupResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeBackupResponse = DescribeBackupResponse(backupDescriptionValue.map(value => value.editable))
      def backupDescriptionValue: scala.Option[BackupDescription.ReadOnly]
      def backupDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BackupDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupDescription", backupDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeBackupResponse) extends DescribeBackupResponse.ReadOnly { override def backupDescriptionValue: scala.Option[BackupDescription.ReadOnly] = scala.Option(impl.backupDescription()).map(value => BackupDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeBackupResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeContinuousBackupsRequest(tableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsRequest = {
      import DescribeContinuousBackupsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsRequest.builder().tableName(tableName: java.lang.String).build()
    }
    def asReadOnly: DescribeContinuousBackupsRequest.ReadOnly = DescribeContinuousBackupsRequest.wrap(buildAwsValue())
  }
  object DescribeContinuousBackupsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeContinuousBackupsRequest = DescribeContinuousBackupsRequest(tableNameValue)
      def tableNameValue: primitives.TableName
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsRequest) extends DescribeContinuousBackupsRequest.ReadOnly { override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeContinuousBackupsResponse(continuousBackupsDescription: scala.Option[ContinuousBackupsDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsResponse = {
      import DescribeContinuousBackupsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsResponse.builder().optionallyWith(continuousBackupsDescription.map(value => value.buildAwsValue()))(_.continuousBackupsDescription).build()
    }
    def asReadOnly: DescribeContinuousBackupsResponse.ReadOnly = DescribeContinuousBackupsResponse.wrap(buildAwsValue())
  }
  object DescribeContinuousBackupsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeContinuousBackupsResponse = DescribeContinuousBackupsResponse(continuousBackupsDescriptionValue.map(value => value.editable))
      def continuousBackupsDescriptionValue: scala.Option[ContinuousBackupsDescription.ReadOnly]
      def continuousBackupsDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContinuousBackupsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("continuousBackupsDescription", continuousBackupsDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsResponse) extends DescribeContinuousBackupsResponse.ReadOnly { override def continuousBackupsDescriptionValue: scala.Option[ContinuousBackupsDescription.ReadOnly] = scala.Option(impl.continuousBackupsDescription()).map(value => ContinuousBackupsDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContinuousBackupsResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeContributorInsightsRequest(tableName: primitives.TableName, indexName: scala.Option[primitives.IndexName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsRequest = {
      import DescribeContributorInsightsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsRequest.builder().tableName(tableName: java.lang.String).optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).build()
    }
    def asReadOnly: DescribeContributorInsightsRequest.ReadOnly = DescribeContributorInsightsRequest.wrap(buildAwsValue())
  }
  object DescribeContributorInsightsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeContributorInsightsRequest = DescribeContributorInsightsRequest(tableNameValue, indexNameValue.map(value => value))
      def tableNameValue: primitives.TableName
      def indexNameValue: scala.Option[primitives.IndexName]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsRequest) extends DescribeContributorInsightsRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeContributorInsightsResponse(tableName: scala.Option[primitives.TableName] = None, indexName: scala.Option[primitives.IndexName] = None, contributorInsightsRuleList: scala.Option[Iterable[primitives.ContributorInsightsRule]] = None, contributorInsightsStatus: scala.Option[ContributorInsightsStatus] = None, lastUpdateDateTime: scala.Option[primitives.LastUpdateDateTime] = None, failureException: scala.Option[FailureException] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsResponse = {
      import DescribeContributorInsightsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsResponse.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(contributorInsightsRuleList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.contributorInsightsRuleList).optionallyWith(contributorInsightsStatus.map(value => value.unwrap))(_.contributorInsightsStatus).optionallyWith(lastUpdateDateTime.map(value => value: java.time.Instant))(_.lastUpdateDateTime).optionallyWith(failureException.map(value => value.buildAwsValue()))(_.failureException).build()
    }
    def asReadOnly: DescribeContributorInsightsResponse.ReadOnly = DescribeContributorInsightsResponse.wrap(buildAwsValue())
  }
  object DescribeContributorInsightsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeContributorInsightsResponse = DescribeContributorInsightsResponse(tableNameValue.map(value => value), indexNameValue.map(value => value), contributorInsightsRuleListValue.map(value => value), contributorInsightsStatusValue.map(value => value), lastUpdateDateTimeValue.map(value => value), failureExceptionValue.map(value => value.editable))
      def tableNameValue: scala.Option[primitives.TableName]
      def indexNameValue: scala.Option[primitives.IndexName]
      def contributorInsightsRuleListValue: scala.Option[List[primitives.ContributorInsightsRule]]
      def contributorInsightsStatusValue: scala.Option[ContributorInsightsStatus]
      def lastUpdateDateTimeValue: scala.Option[primitives.LastUpdateDateTime]
      def failureExceptionValue: scala.Option[FailureException.ReadOnly]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def contributorInsightsRuleList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.ContributorInsightsRule]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contributorInsightsRuleList", contributorInsightsRuleListValue)
      def contributorInsightsStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContributorInsightsStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contributorInsightsStatus", contributorInsightsStatusValue)
      def lastUpdateDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.LastUpdateDateTime] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdateDateTime", lastUpdateDateTimeValue)
      def failureException: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FailureException.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("failureException", failureExceptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsResponse) extends DescribeContributorInsightsResponse.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def contributorInsightsRuleListValue: scala.Option[List[primitives.ContributorInsightsRule]] = scala.Option(impl.contributorInsightsRuleList()).map(value => value.asScala.map { item => 
        item: primitives.ContributorInsightsRule
      }.toList)
      override def contributorInsightsStatusValue: scala.Option[ContributorInsightsStatus] = scala.Option(impl.contributorInsightsStatus()).map(value => ContributorInsightsStatus.wrap(value))
      override def lastUpdateDateTimeValue: scala.Option[primitives.LastUpdateDateTime] = scala.Option(impl.lastUpdateDateTime()).map(value => value: primitives.LastUpdateDateTime)
      override def failureExceptionValue: scala.Option[FailureException.ReadOnly] = scala.Option(impl.failureException()).map(value => FailureException.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeContributorInsightsResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeEndpointsRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsRequest = {
      import DescribeEndpointsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsRequest.builder().build()
    }
    def asReadOnly: DescribeEndpointsRequest.ReadOnly = DescribeEndpointsRequest.wrap(buildAwsValue())
  }
  object DescribeEndpointsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DescribeEndpointsRequest = DescribeEndpointsRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsRequest) extends DescribeEndpointsRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeEndpointsResponse(endpoints: Iterable[Endpoint]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsResponse = {
      import DescribeEndpointsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsResponse.builder().endpoints(endpoints.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: DescribeEndpointsResponse.ReadOnly = DescribeEndpointsResponse.wrap(buildAwsValue())
  }
  object DescribeEndpointsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeEndpointsResponse = DescribeEndpointsResponse(endpointsValue.map { item => 
        item.editable
      })
      def endpointsValue: List[Endpoint.ReadOnly]
      def endpoints: ZIO[Any, Nothing, List[Endpoint.ReadOnly]] = ZIO.succeed(endpointsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsResponse) extends DescribeEndpointsResponse.ReadOnly {
      override def endpointsValue: List[Endpoint.ReadOnly] = impl.endpoints().asScala.map { item => 
        Endpoint.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeEndpointsResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeExportRequest(exportArn: primitives.ExportArn) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeExportRequest = {
      import DescribeExportRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeExportRequest.builder().exportArn(exportArn: java.lang.String).build()
    }
    def asReadOnly: DescribeExportRequest.ReadOnly = DescribeExportRequest.wrap(buildAwsValue())
  }
  object DescribeExportRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeExportRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeExportRequest = DescribeExportRequest(exportArnValue)
      def exportArnValue: primitives.ExportArn
      def exportArn: ZIO[Any, Nothing, primitives.ExportArn] = ZIO.succeed(exportArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeExportRequest) extends DescribeExportRequest.ReadOnly { override def exportArnValue: primitives.ExportArn = impl.exportArn(): primitives.ExportArn }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeExportRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeExportResponse(exportDescription: scala.Option[ExportDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeExportResponse = {
      import DescribeExportResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeExportResponse.builder().optionallyWith(exportDescription.map(value => value.buildAwsValue()))(_.exportDescription).build()
    }
    def asReadOnly: DescribeExportResponse.ReadOnly = DescribeExportResponse.wrap(buildAwsValue())
  }
  object DescribeExportResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeExportResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeExportResponse = DescribeExportResponse(exportDescriptionValue.map(value => value.editable))
      def exportDescriptionValue: scala.Option[ExportDescription.ReadOnly]
      def exportDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportDescription", exportDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeExportResponse) extends DescribeExportResponse.ReadOnly { override def exportDescriptionValue: scala.Option[ExportDescription.ReadOnly] = scala.Option(impl.exportDescription()).map(value => ExportDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeExportResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeGlobalTableRequest(globalTableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableRequest = {
      import DescribeGlobalTableRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableRequest.builder().globalTableName(globalTableName: java.lang.String).build()
    }
    def asReadOnly: DescribeGlobalTableRequest.ReadOnly = DescribeGlobalTableRequest.wrap(buildAwsValue())
  }
  object DescribeGlobalTableRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeGlobalTableRequest = DescribeGlobalTableRequest(globalTableNameValue)
      def globalTableNameValue: primitives.TableName
      def globalTableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(globalTableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableRequest) extends DescribeGlobalTableRequest.ReadOnly { override def globalTableNameValue: primitives.TableName = impl.globalTableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeGlobalTableResponse(globalTableDescription: scala.Option[GlobalTableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableResponse = {
      import DescribeGlobalTableResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableResponse.builder().optionallyWith(globalTableDescription.map(value => value.buildAwsValue()))(_.globalTableDescription).build()
    }
    def asReadOnly: DescribeGlobalTableResponse.ReadOnly = DescribeGlobalTableResponse.wrap(buildAwsValue())
  }
  object DescribeGlobalTableResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeGlobalTableResponse = DescribeGlobalTableResponse(globalTableDescriptionValue.map(value => value.editable))
      def globalTableDescriptionValue: scala.Option[GlobalTableDescription.ReadOnly]
      def globalTableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GlobalTableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableDescription", globalTableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableResponse) extends DescribeGlobalTableResponse.ReadOnly { override def globalTableDescriptionValue: scala.Option[GlobalTableDescription.ReadOnly] = scala.Option(impl.globalTableDescription()).map(value => GlobalTableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeGlobalTableSettingsRequest(globalTableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsRequest = {
      import DescribeGlobalTableSettingsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsRequest.builder().globalTableName(globalTableName: java.lang.String).build()
    }
    def asReadOnly: DescribeGlobalTableSettingsRequest.ReadOnly = DescribeGlobalTableSettingsRequest.wrap(buildAwsValue())
  }
  object DescribeGlobalTableSettingsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeGlobalTableSettingsRequest = DescribeGlobalTableSettingsRequest(globalTableNameValue)
      def globalTableNameValue: primitives.TableName
      def globalTableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(globalTableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsRequest) extends DescribeGlobalTableSettingsRequest.ReadOnly { override def globalTableNameValue: primitives.TableName = impl.globalTableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeGlobalTableSettingsResponse(globalTableName: scala.Option[primitives.TableName] = None, replicaSettings: scala.Option[Iterable[ReplicaSettingsDescription]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsResponse = {
      import DescribeGlobalTableSettingsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsResponse.builder().optionallyWith(globalTableName.map(value => value: java.lang.String))(_.globalTableName).optionallyWith(replicaSettings.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaSettings).build()
    }
    def asReadOnly: DescribeGlobalTableSettingsResponse.ReadOnly = DescribeGlobalTableSettingsResponse.wrap(buildAwsValue())
  }
  object DescribeGlobalTableSettingsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeGlobalTableSettingsResponse = DescribeGlobalTableSettingsResponse(globalTableNameValue.map(value => value), replicaSettingsValue.map(value => value.map { item => 
        item.editable
      }))
      def globalTableNameValue: scala.Option[primitives.TableName]
      def replicaSettingsValue: scala.Option[List[ReplicaSettingsDescription.ReadOnly]]
      def globalTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableName", globalTableNameValue)
      def replicaSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaSettingsDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaSettings", replicaSettingsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsResponse) extends DescribeGlobalTableSettingsResponse.ReadOnly {
      override def globalTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.globalTableName()).map(value => value: primitives.TableName)
      override def replicaSettingsValue: scala.Option[List[ReplicaSettingsDescription.ReadOnly]] = scala.Option(impl.replicaSettings()).map(value => value.asScala.map { item => 
        ReplicaSettingsDescription.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeGlobalTableSettingsResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeKinesisStreamingDestinationRequest(tableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationRequest = {
      import DescribeKinesisStreamingDestinationRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationRequest.builder().tableName(tableName: java.lang.String).build()
    }
    def asReadOnly: DescribeKinesisStreamingDestinationRequest.ReadOnly = DescribeKinesisStreamingDestinationRequest.wrap(buildAwsValue())
  }
  object DescribeKinesisStreamingDestinationRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeKinesisStreamingDestinationRequest = DescribeKinesisStreamingDestinationRequest(tableNameValue)
      def tableNameValue: primitives.TableName
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationRequest) extends DescribeKinesisStreamingDestinationRequest.ReadOnly { override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeKinesisStreamingDestinationResponse(tableName: scala.Option[primitives.TableName] = None, kinesisDataStreamDestinations: scala.Option[Iterable[KinesisDataStreamDestination]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationResponse = {
      import DescribeKinesisStreamingDestinationResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationResponse.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(kinesisDataStreamDestinations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.kinesisDataStreamDestinations).build()
    }
    def asReadOnly: DescribeKinesisStreamingDestinationResponse.ReadOnly = DescribeKinesisStreamingDestinationResponse.wrap(buildAwsValue())
  }
  object DescribeKinesisStreamingDestinationResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeKinesisStreamingDestinationResponse = DescribeKinesisStreamingDestinationResponse(tableNameValue.map(value => value), kinesisDataStreamDestinationsValue.map(value => value.map { item => 
        item.editable
      }))
      def tableNameValue: scala.Option[primitives.TableName]
      def kinesisDataStreamDestinationsValue: scala.Option[List[KinesisDataStreamDestination.ReadOnly]]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def kinesisDataStreamDestinations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KinesisDataStreamDestination.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kinesisDataStreamDestinations", kinesisDataStreamDestinationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationResponse) extends DescribeKinesisStreamingDestinationResponse.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def kinesisDataStreamDestinationsValue: scala.Option[List[KinesisDataStreamDestination.ReadOnly]] = scala.Option(impl.kinesisDataStreamDestinations()).map(value => value.asScala.map { item => 
        KinesisDataStreamDestination.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeKinesisStreamingDestinationResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeLimitsRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeLimitsRequest = {
      import DescribeLimitsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeLimitsRequest.builder().build()
    }
    def asReadOnly: DescribeLimitsRequest.ReadOnly = DescribeLimitsRequest.wrap(buildAwsValue())
  }
  object DescribeLimitsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeLimitsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DescribeLimitsRequest = DescribeLimitsRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeLimitsRequest) extends DescribeLimitsRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeLimitsRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeLimitsResponse(accountMaxReadCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, accountMaxWriteCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, tableMaxReadCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, tableMaxWriteCapacityUnits: scala.Option[primitives.PositiveLongObject] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeLimitsResponse = {
      import DescribeLimitsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeLimitsResponse.builder().optionallyWith(accountMaxReadCapacityUnits.map(value => value: java.lang.Long))(_.accountMaxReadCapacityUnits).optionallyWith(accountMaxWriteCapacityUnits.map(value => value: java.lang.Long))(_.accountMaxWriteCapacityUnits).optionallyWith(tableMaxReadCapacityUnits.map(value => value: java.lang.Long))(_.tableMaxReadCapacityUnits).optionallyWith(tableMaxWriteCapacityUnits.map(value => value: java.lang.Long))(_.tableMaxWriteCapacityUnits).build()
    }
    def asReadOnly: DescribeLimitsResponse.ReadOnly = DescribeLimitsResponse.wrap(buildAwsValue())
  }
  object DescribeLimitsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeLimitsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeLimitsResponse = DescribeLimitsResponse(accountMaxReadCapacityUnitsValue.map(value => value), accountMaxWriteCapacityUnitsValue.map(value => value), tableMaxReadCapacityUnitsValue.map(value => value), tableMaxWriteCapacityUnitsValue.map(value => value))
      def accountMaxReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def accountMaxWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def tableMaxReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def tableMaxWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def accountMaxReadCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accountMaxReadCapacityUnits", accountMaxReadCapacityUnitsValue)
      def accountMaxWriteCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accountMaxWriteCapacityUnits", accountMaxWriteCapacityUnitsValue)
      def tableMaxReadCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableMaxReadCapacityUnits", tableMaxReadCapacityUnitsValue)
      def tableMaxWriteCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableMaxWriteCapacityUnits", tableMaxWriteCapacityUnitsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeLimitsResponse) extends DescribeLimitsResponse.ReadOnly {
      override def accountMaxReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.accountMaxReadCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def accountMaxWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.accountMaxWriteCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def tableMaxReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.tableMaxReadCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def tableMaxWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.tableMaxWriteCapacityUnits()).map(value => value: primitives.PositiveLongObject)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeLimitsResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeTableReplicaAutoScalingRequest(tableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingRequest = {
      import DescribeTableReplicaAutoScalingRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingRequest.builder().tableName(tableName: java.lang.String).build()
    }
    def asReadOnly: DescribeTableReplicaAutoScalingRequest.ReadOnly = DescribeTableReplicaAutoScalingRequest.wrap(buildAwsValue())
  }
  object DescribeTableReplicaAutoScalingRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeTableReplicaAutoScalingRequest = DescribeTableReplicaAutoScalingRequest(tableNameValue)
      def tableNameValue: primitives.TableName
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingRequest) extends DescribeTableReplicaAutoScalingRequest.ReadOnly { override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeTableReplicaAutoScalingResponse(tableAutoScalingDescription: scala.Option[TableAutoScalingDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingResponse = {
      import DescribeTableReplicaAutoScalingResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingResponse.builder().optionallyWith(tableAutoScalingDescription.map(value => value.buildAwsValue()))(_.tableAutoScalingDescription).build()
    }
    def asReadOnly: DescribeTableReplicaAutoScalingResponse.ReadOnly = DescribeTableReplicaAutoScalingResponse.wrap(buildAwsValue())
  }
  object DescribeTableReplicaAutoScalingResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeTableReplicaAutoScalingResponse = DescribeTableReplicaAutoScalingResponse(tableAutoScalingDescriptionValue.map(value => value.editable))
      def tableAutoScalingDescriptionValue: scala.Option[TableAutoScalingDescription.ReadOnly]
      def tableAutoScalingDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableAutoScalingDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableAutoScalingDescription", tableAutoScalingDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingResponse) extends DescribeTableReplicaAutoScalingResponse.ReadOnly { override def tableAutoScalingDescriptionValue: scala.Option[TableAutoScalingDescription.ReadOnly] = scala.Option(impl.tableAutoScalingDescription()).map(value => TableAutoScalingDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableReplicaAutoScalingResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeTableRequest(tableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest = {
      import DescribeTableRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest.builder().tableName(tableName: java.lang.String).build()
    }
    def asReadOnly: DescribeTableRequest.ReadOnly = DescribeTableRequest.wrap(buildAwsValue())
  }
  object DescribeTableRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeTableRequest = DescribeTableRequest(tableNameValue)
      def tableNameValue: primitives.TableName
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest) extends DescribeTableRequest.ReadOnly { override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeTableResponse(table: scala.Option[TableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse = {
      import DescribeTableResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse.builder().optionallyWith(table.map(value => value.buildAwsValue()))(_.table).build()
    }
    def asReadOnly: DescribeTableResponse.ReadOnly = DescribeTableResponse.wrap(buildAwsValue())
  }
  object DescribeTableResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeTableResponse = DescribeTableResponse(tableValue.map(value => value.editable))
      def tableValue: scala.Option[TableDescription.ReadOnly]
      def table: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("table", tableValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse) extends DescribeTableResponse.ReadOnly { override def tableValue: scala.Option[TableDescription.ReadOnly] = scala.Option(impl.table()).map(value => TableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeTimeToLiveRequest(tableName: primitives.TableName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveRequest = {
      import DescribeTimeToLiveRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveRequest.builder().tableName(tableName: java.lang.String).build()
    }
    def asReadOnly: DescribeTimeToLiveRequest.ReadOnly = DescribeTimeToLiveRequest.wrap(buildAwsValue())
  }
  object DescribeTimeToLiveRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeTimeToLiveRequest = DescribeTimeToLiveRequest(tableNameValue)
      def tableNameValue: primitives.TableName
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveRequest) extends DescribeTimeToLiveRequest.ReadOnly { override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeTimeToLiveResponse(timeToLiveDescription: scala.Option[TimeToLiveDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveResponse = {
      import DescribeTimeToLiveResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveResponse.builder().optionallyWith(timeToLiveDescription.map(value => value.buildAwsValue()))(_.timeToLiveDescription).build()
    }
    def asReadOnly: DescribeTimeToLiveResponse.ReadOnly = DescribeTimeToLiveResponse.wrap(buildAwsValue())
  }
  object DescribeTimeToLiveResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeTimeToLiveResponse = DescribeTimeToLiveResponse(timeToLiveDescriptionValue.map(value => value.editable))
      def timeToLiveDescriptionValue: scala.Option[TimeToLiveDescription.ReadOnly]
      def timeToLiveDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TimeToLiveDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeToLiveDescription", timeToLiveDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveResponse) extends DescribeTimeToLiveResponse.ReadOnly { override def timeToLiveDescriptionValue: scala.Option[TimeToLiveDescription.ReadOnly] = scala.Option(impl.timeToLiveDescription()).map(value => TimeToLiveDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeTimeToLiveResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait DestinationStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.DestinationStatus }
  object DestinationStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.DestinationStatus): DestinationStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.DestinationStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.DestinationStatus.ENABLING => ENABLING
      case software.amazon.awssdk.services.dynamodb.model.DestinationStatus.ACTIVE => ACTIVE
      case software.amazon.awssdk.services.dynamodb.model.DestinationStatus.DISABLING => DISABLING
      case software.amazon.awssdk.services.dynamodb.model.DestinationStatus.DISABLED => DISABLED
      case software.amazon.awssdk.services.dynamodb.model.DestinationStatus.ENABLE_FAILED => ENABLE_FAILED
    }
    final case object unknownToSdkVersion extends DestinationStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.DestinationStatus = software.amazon.awssdk.services.dynamodb.model.DestinationStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLING extends DestinationStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.DestinationStatus = software.amazon.awssdk.services.dynamodb.model.DestinationStatus.ENABLING }
    final case object ACTIVE extends DestinationStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.DestinationStatus = software.amazon.awssdk.services.dynamodb.model.DestinationStatus.ACTIVE }
    final case object DISABLING extends DestinationStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.DestinationStatus = software.amazon.awssdk.services.dynamodb.model.DestinationStatus.DISABLING }
    final case object DISABLED extends DestinationStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.DestinationStatus = software.amazon.awssdk.services.dynamodb.model.DestinationStatus.DISABLED }
    final case object ENABLE_FAILED extends DestinationStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.DestinationStatus = software.amazon.awssdk.services.dynamodb.model.DestinationStatus.ENABLE_FAILED }
  }
  case class DisableKinesisStreamingDestinationRequest(tableName: primitives.TableName, streamArn: primitives.StreamArn) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationRequest = {
      import DisableKinesisStreamingDestinationRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationRequest.builder().tableName(tableName: java.lang.String).streamArn(streamArn: java.lang.String).build()
    }
    def asReadOnly: DisableKinesisStreamingDestinationRequest.ReadOnly = DisableKinesisStreamingDestinationRequest.wrap(buildAwsValue())
  }
  object DisableKinesisStreamingDestinationRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DisableKinesisStreamingDestinationRequest = DisableKinesisStreamingDestinationRequest(tableNameValue, streamArnValue)
      def tableNameValue: primitives.TableName
      def streamArnValue: primitives.StreamArn
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def streamArn: ZIO[Any, Nothing, primitives.StreamArn] = ZIO.succeed(streamArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationRequest) extends DisableKinesisStreamingDestinationRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def streamArnValue: primitives.StreamArn = impl.streamArn(): primitives.StreamArn
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationRequest): ReadOnly = new Wrapper(impl)
  }
  case class DisableKinesisStreamingDestinationResponse(tableName: scala.Option[primitives.TableName] = None, streamArn: scala.Option[primitives.StreamArn] = None, destinationStatus: scala.Option[DestinationStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationResponse = {
      import DisableKinesisStreamingDestinationResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationResponse.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(streamArn.map(value => value: java.lang.String))(_.streamArn).optionallyWith(destinationStatus.map(value => value.unwrap))(_.destinationStatus).build()
    }
    def asReadOnly: DisableKinesisStreamingDestinationResponse.ReadOnly = DisableKinesisStreamingDestinationResponse.wrap(buildAwsValue())
  }
  object DisableKinesisStreamingDestinationResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DisableKinesisStreamingDestinationResponse = DisableKinesisStreamingDestinationResponse(tableNameValue.map(value => value), streamArnValue.map(value => value), destinationStatusValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def streamArnValue: scala.Option[primitives.StreamArn]
      def destinationStatusValue: scala.Option[DestinationStatus]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def streamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamArn", streamArnValue)
      def destinationStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DestinationStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationStatus", destinationStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationResponse) extends DisableKinesisStreamingDestinationResponse.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def streamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.streamArn()).map(value => value: primitives.StreamArn)
      override def destinationStatusValue: scala.Option[DestinationStatus] = scala.Option(impl.destinationStatus()).map(value => DestinationStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DisableKinesisStreamingDestinationResponse): ReadOnly = new Wrapper(impl)
  }
  case class EnableKinesisStreamingDestinationRequest(tableName: primitives.TableName, streamArn: primitives.StreamArn) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationRequest = {
      import EnableKinesisStreamingDestinationRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationRequest.builder().tableName(tableName: java.lang.String).streamArn(streamArn: java.lang.String).build()
    }
    def asReadOnly: EnableKinesisStreamingDestinationRequest.ReadOnly = EnableKinesisStreamingDestinationRequest.wrap(buildAwsValue())
  }
  object EnableKinesisStreamingDestinationRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: EnableKinesisStreamingDestinationRequest = EnableKinesisStreamingDestinationRequest(tableNameValue, streamArnValue)
      def tableNameValue: primitives.TableName
      def streamArnValue: primitives.StreamArn
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def streamArn: ZIO[Any, Nothing, primitives.StreamArn] = ZIO.succeed(streamArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationRequest) extends EnableKinesisStreamingDestinationRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def streamArnValue: primitives.StreamArn = impl.streamArn(): primitives.StreamArn
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationRequest): ReadOnly = new Wrapper(impl)
  }
  case class EnableKinesisStreamingDestinationResponse(tableName: scala.Option[primitives.TableName] = None, streamArn: scala.Option[primitives.StreamArn] = None, destinationStatus: scala.Option[DestinationStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationResponse = {
      import EnableKinesisStreamingDestinationResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationResponse.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(streamArn.map(value => value: java.lang.String))(_.streamArn).optionallyWith(destinationStatus.map(value => value.unwrap))(_.destinationStatus).build()
    }
    def asReadOnly: EnableKinesisStreamingDestinationResponse.ReadOnly = EnableKinesisStreamingDestinationResponse.wrap(buildAwsValue())
  }
  object EnableKinesisStreamingDestinationResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: EnableKinesisStreamingDestinationResponse = EnableKinesisStreamingDestinationResponse(tableNameValue.map(value => value), streamArnValue.map(value => value), destinationStatusValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def streamArnValue: scala.Option[primitives.StreamArn]
      def destinationStatusValue: scala.Option[DestinationStatus]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def streamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamArn", streamArnValue)
      def destinationStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DestinationStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationStatus", destinationStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationResponse) extends EnableKinesisStreamingDestinationResponse.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def streamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.streamArn()).map(value => value: primitives.StreamArn)
      override def destinationStatusValue: scala.Option[DestinationStatus] = scala.Option(impl.destinationStatus()).map(value => DestinationStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.EnableKinesisStreamingDestinationResponse): ReadOnly = new Wrapper(impl)
  }
  case class Endpoint(address: String, cachePeriodInMinutes: Long) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Endpoint = {
      import Endpoint.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Endpoint.builder().address(address: java.lang.String).cachePeriodInMinutes(cachePeriodInMinutes: java.lang.Long).build()
    }
    def asReadOnly: Endpoint.ReadOnly = Endpoint.wrap(buildAwsValue())
  }
  object Endpoint {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Endpoint] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Endpoint = Endpoint(addressValue, cachePeriodInMinutesValue)
      def addressValue: String
      def cachePeriodInMinutesValue: Long
      def address: ZIO[Any, Nothing, String] = ZIO.succeed(addressValue)
      def cachePeriodInMinutes: ZIO[Any, Nothing, Long] = ZIO.succeed(cachePeriodInMinutesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Endpoint) extends Endpoint.ReadOnly {
      override def addressValue: String = impl.address(): String
      override def cachePeriodInMinutesValue: Long = impl.cachePeriodInMinutes(): Long
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Endpoint): ReadOnly = new Wrapper(impl)
  }
  type Endpoints = List[Endpoint]
  case class ExecuteStatementRequest(statement: primitives.PartiQLStatement, parameters: scala.Option[Iterable[AttributeValue]] = None, consistentRead: scala.Option[primitives.ConsistentRead] = None, nextToken: scala.Option[primitives.PartiQLNextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExecuteStatementRequest = {
      import ExecuteStatementRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExecuteStatementRequest.builder().statement(statement: java.lang.String).optionallyWith(parameters.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.parameters).optionallyWith(consistentRead.map(value => value: java.lang.Boolean))(_.consistentRead).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ExecuteStatementRequest.ReadOnly = ExecuteStatementRequest.wrap(buildAwsValue())
  }
  object ExecuteStatementRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExecuteStatementRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecuteStatementRequest = ExecuteStatementRequest(statementValue, parametersValue.map(value => value.map { item => 
        item.editable
      }), consistentReadValue.map(value => value), nextTokenValue.map(value => value))
      def statementValue: primitives.PartiQLStatement
      def parametersValue: scala.Option[List[AttributeValue.ReadOnly]]
      def consistentReadValue: scala.Option[primitives.ConsistentRead]
      def nextTokenValue: scala.Option[primitives.PartiQLNextToken]
      def statement: ZIO[Any, Nothing, primitives.PartiQLStatement] = ZIO.succeed(statementValue)
      def parameters: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parameters", parametersValue)
      def consistentRead: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsistentRead] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consistentRead", consistentReadValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PartiQLNextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteStatementRequest) extends ExecuteStatementRequest.ReadOnly {
      override def statementValue: primitives.PartiQLStatement = impl.statement(): primitives.PartiQLStatement
      override def parametersValue: scala.Option[List[AttributeValue.ReadOnly]] = scala.Option(impl.parameters()).map(value => value.asScala.map { item => 
        AttributeValue.wrap(item)
      }.toList)
      override def consistentReadValue: scala.Option[primitives.ConsistentRead] = scala.Option(impl.consistentRead()).map(value => value: primitives.ConsistentRead)
      override def nextTokenValue: scala.Option[primitives.PartiQLNextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.PartiQLNextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteStatementRequest): ReadOnly = new Wrapper(impl)
  }
  case class ExecuteStatementResponse(items: scala.Option[Iterable[Map[primitives.AttributeName, AttributeValue]]] = None, nextToken: scala.Option[primitives.PartiQLNextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExecuteStatementResponse = {
      import ExecuteStatementResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExecuteStatementResponse.builder().optionallyWith(items.map(value => value.map { item => 
        item.map({
          case (key, value) =>
            (key: java.lang.String) -> value.buildAwsValue()
        }).asJava
      }.asJavaCollection))(_.items).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ExecuteStatementResponse.ReadOnly = ExecuteStatementResponse.wrap(buildAwsValue())
  }
  object ExecuteStatementResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExecuteStatementResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecuteStatementResponse = ExecuteStatementResponse(itemsValue.map(value => value.map { item => 
        item.map({
          case (key, value) =>
            key -> value.editable
        })
      }), nextTokenValue.map(value => value))
      def itemsValue: scala.Option[List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]]
      def nextTokenValue: scala.Option[primitives.PartiQLNextToken]
      def items: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("items", itemsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PartiQLNextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteStatementResponse) extends ExecuteStatementResponse.ReadOnly {
      override def itemsValue: scala.Option[List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]] = scala.Option(impl.items()).map(value => value.asScala.map { item => 
        item.asScala.map({
          case (key, value) =>
            (key: primitives.AttributeName) -> AttributeValue.wrap(value)
        }).toMap
      }.toList)
      override def nextTokenValue: scala.Option[primitives.PartiQLNextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.PartiQLNextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteStatementResponse): ReadOnly = new Wrapper(impl)
  }
  case class ExecuteTransactionRequest(transactStatements: Iterable[ParameterizedStatement], clientRequestToken: scala.Option[primitives.ClientRequestToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionRequest = {
      import ExecuteTransactionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionRequest.builder().transactStatements(transactStatements.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(clientRequestToken.map(value => value: java.lang.String))(_.clientRequestToken).build()
    }
    def asReadOnly: ExecuteTransactionRequest.ReadOnly = ExecuteTransactionRequest.wrap(buildAwsValue())
  }
  object ExecuteTransactionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecuteTransactionRequest = ExecuteTransactionRequest(transactStatementsValue.map { item => 
        item.editable
      }, clientRequestTokenValue.map(value => value))
      def transactStatementsValue: List[ParameterizedStatement.ReadOnly]
      def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken]
      def transactStatements: ZIO[Any, Nothing, List[ParameterizedStatement.ReadOnly]] = ZIO.succeed(transactStatementsValue)
      def clientRequestToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ClientRequestToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("clientRequestToken", clientRequestTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionRequest) extends ExecuteTransactionRequest.ReadOnly {
      override def transactStatementsValue: List[ParameterizedStatement.ReadOnly] = impl.transactStatements().asScala.map { item => 
        ParameterizedStatement.wrap(item)
      }.toList
      override def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken] = scala.Option(impl.clientRequestToken()).map(value => value: primitives.ClientRequestToken)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionRequest): ReadOnly = new Wrapper(impl)
  }
  case class ExecuteTransactionResponse(responses: scala.Option[Iterable[ItemResponse]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionResponse = {
      import ExecuteTransactionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionResponse.builder().optionallyWith(responses.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.responses).build()
    }
    def asReadOnly: ExecuteTransactionResponse.ReadOnly = ExecuteTransactionResponse.wrap(buildAwsValue())
  }
  object ExecuteTransactionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecuteTransactionResponse = ExecuteTransactionResponse(responsesValue.map(value => value.map { item => 
        item.editable
      }))
      def responsesValue: scala.Option[List[ItemResponse.ReadOnly]]
      def responses: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ItemResponse.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("responses", responsesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionResponse) extends ExecuteTransactionResponse.ReadOnly {
      override def responsesValue: scala.Option[List[ItemResponse.ReadOnly]] = scala.Option(impl.responses()).map(value => value.asScala.map { item => 
        ItemResponse.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExecuteTransactionResponse): ReadOnly = new Wrapper(impl)
  }
  type ExpectedAttributeMap = Map[primitives.AttributeName, ExpectedAttributeValue]
  case class ExpectedAttributeValue(value: scala.Option[AttributeValue] = None, exists: scala.Option[primitives.BooleanObject] = None, comparisonOperator: scala.Option[ComparisonOperator] = None, attributeValueList: scala.Option[Iterable[AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExpectedAttributeValue = {
      import ExpectedAttributeValue.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExpectedAttributeValue.builder().optionallyWith(value.map(value => value.buildAwsValue()))(_.value).optionallyWith(exists.map(value => value: java.lang.Boolean))(_.exists).optionallyWith(comparisonOperator.map(value => value.unwrap))(_.comparisonOperator).optionallyWith(attributeValueList.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.attributeValueList).build()
    }
    def asReadOnly: ExpectedAttributeValue.ReadOnly = ExpectedAttributeValue.wrap(buildAwsValue())
  }
  object ExpectedAttributeValue {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExpectedAttributeValue] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExpectedAttributeValue = ExpectedAttributeValue(valueValue.map(value => value.editable), existsValue.map(value => value), comparisonOperatorValue.map(value => value), attributeValueListValue.map(value => value.map { item => 
        item.editable
      }))
      def valueValue: scala.Option[AttributeValue.ReadOnly]
      def existsValue: scala.Option[primitives.BooleanObject]
      def comparisonOperatorValue: scala.Option[ComparisonOperator]
      def attributeValueListValue: scala.Option[List[AttributeValue.ReadOnly]]
      def value: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AttributeValue.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("value", valueValue)
      def exists: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exists", existsValue)
      def comparisonOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ComparisonOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("comparisonOperator", comparisonOperatorValue)
      def attributeValueList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributeValueList", attributeValueListValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExpectedAttributeValue) extends ExpectedAttributeValue.ReadOnly {
      override def valueValue: scala.Option[AttributeValue.ReadOnly] = scala.Option(impl.value()).map(value => AttributeValue.wrap(value))
      override def existsValue: scala.Option[primitives.BooleanObject] = scala.Option(impl.exists()).map(value => value: primitives.BooleanObject)
      override def comparisonOperatorValue: scala.Option[ComparisonOperator] = scala.Option(impl.comparisonOperator()).map(value => ComparisonOperator.wrap(value))
      override def attributeValueListValue: scala.Option[List[AttributeValue.ReadOnly]] = scala.Option(impl.attributeValueList()).map(value => value.asScala.map { item => 
        AttributeValue.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExpectedAttributeValue): ReadOnly = new Wrapper(impl)
  }
  case class ExportDescription(exportArn: scala.Option[primitives.ExportArn] = None, exportStatus: scala.Option[ExportStatus] = None, startTime: scala.Option[primitives.ExportStartTime] = None, endTime: scala.Option[primitives.ExportEndTime] = None, exportManifest: scala.Option[primitives.ExportManifest] = None, tableArn: scala.Option[primitives.TableArn] = None, tableId: scala.Option[primitives.TableId] = None, exportTime: scala.Option[primitives.ExportTime] = None, clientToken: scala.Option[primitives.ClientToken] = None, s3Bucket: scala.Option[primitives.S3Bucket] = None, s3BucketOwner: scala.Option[primitives.S3BucketOwner] = None, s3Prefix: scala.Option[primitives.S3Prefix] = None, s3SseAlgorithm: scala.Option[S3SseAlgorithm] = None, s3SseKmsKeyId: scala.Option[primitives.S3SseKmsKeyId] = None, failureCode: scala.Option[primitives.FailureCode] = None, failureMessage: scala.Option[primitives.FailureMessage] = None, exportFormat: scala.Option[ExportFormat] = None, billedSizeBytes: scala.Option[primitives.BilledSizeBytes] = None, itemCount: scala.Option[primitives.ItemCount] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExportDescription = {
      import ExportDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExportDescription.builder().optionallyWith(exportArn.map(value => value: java.lang.String))(_.exportArn).optionallyWith(exportStatus.map(value => value.unwrap))(_.exportStatus).optionallyWith(startTime.map(value => value: java.time.Instant))(_.startTime).optionallyWith(endTime.map(value => value: java.time.Instant))(_.endTime).optionallyWith(exportManifest.map(value => value: java.lang.String))(_.exportManifest).optionallyWith(tableArn.map(value => value: java.lang.String))(_.tableArn).optionallyWith(tableId.map(value => value: java.lang.String))(_.tableId).optionallyWith(exportTime.map(value => value: java.time.Instant))(_.exportTime).optionallyWith(clientToken.map(value => value: java.lang.String))(_.clientToken).optionallyWith(s3Bucket.map(value => value: java.lang.String))(_.s3Bucket).optionallyWith(s3BucketOwner.map(value => value: java.lang.String))(_.s3BucketOwner).optionallyWith(s3Prefix.map(value => value: java.lang.String))(_.s3Prefix).optionallyWith(s3SseAlgorithm.map(value => value.unwrap))(_.s3SseAlgorithm).optionallyWith(s3SseKmsKeyId.map(value => value: java.lang.String))(_.s3SseKmsKeyId).optionallyWith(failureCode.map(value => value: java.lang.String))(_.failureCode).optionallyWith(failureMessage.map(value => value: java.lang.String))(_.failureMessage).optionallyWith(exportFormat.map(value => value.unwrap))(_.exportFormat).optionallyWith(billedSizeBytes.map(value => value: java.lang.Long))(_.billedSizeBytes).optionallyWith(itemCount.map(value => value: java.lang.Long))(_.itemCount).build()
    }
    def asReadOnly: ExportDescription.ReadOnly = ExportDescription.wrap(buildAwsValue())
  }
  object ExportDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExportDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportDescription = ExportDescription(exportArnValue.map(value => value), exportStatusValue.map(value => value), startTimeValue.map(value => value), endTimeValue.map(value => value), exportManifestValue.map(value => value), tableArnValue.map(value => value), tableIdValue.map(value => value), exportTimeValue.map(value => value), clientTokenValue.map(value => value), s3BucketValue.map(value => value), s3BucketOwnerValue.map(value => value), s3PrefixValue.map(value => value), s3SseAlgorithmValue.map(value => value), s3SseKmsKeyIdValue.map(value => value), failureCodeValue.map(value => value), failureMessageValue.map(value => value), exportFormatValue.map(value => value), billedSizeBytesValue.map(value => value), itemCountValue.map(value => value))
      def exportArnValue: scala.Option[primitives.ExportArn]
      def exportStatusValue: scala.Option[ExportStatus]
      def startTimeValue: scala.Option[primitives.ExportStartTime]
      def endTimeValue: scala.Option[primitives.ExportEndTime]
      def exportManifestValue: scala.Option[primitives.ExportManifest]
      def tableArnValue: scala.Option[primitives.TableArn]
      def tableIdValue: scala.Option[primitives.TableId]
      def exportTimeValue: scala.Option[primitives.ExportTime]
      def clientTokenValue: scala.Option[primitives.ClientToken]
      def s3BucketValue: scala.Option[primitives.S3Bucket]
      def s3BucketOwnerValue: scala.Option[primitives.S3BucketOwner]
      def s3PrefixValue: scala.Option[primitives.S3Prefix]
      def s3SseAlgorithmValue: scala.Option[S3SseAlgorithm]
      def s3SseKmsKeyIdValue: scala.Option[primitives.S3SseKmsKeyId]
      def failureCodeValue: scala.Option[primitives.FailureCode]
      def failureMessageValue: scala.Option[primitives.FailureMessage]
      def exportFormatValue: scala.Option[ExportFormat]
      def billedSizeBytesValue: scala.Option[primitives.BilledSizeBytes]
      def itemCountValue: scala.Option[primitives.ItemCount]
      def exportArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportArn", exportArnValue)
      def exportStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportStatus", exportStatusValue)
      def startTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportStartTime] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startTime", startTimeValue)
      def endTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportEndTime] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("endTime", endTimeValue)
      def exportManifest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportManifest] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportManifest", exportManifestValue)
      def tableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableArn", tableArnValue)
      def tableId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableId", tableIdValue)
      def exportTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportTime] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportTime", exportTimeValue)
      def clientToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ClientToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("clientToken", clientTokenValue)
      def s3Bucket: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.S3Bucket] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3Bucket", s3BucketValue)
      def s3BucketOwner: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.S3BucketOwner] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3BucketOwner", s3BucketOwnerValue)
      def s3Prefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.S3Prefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3Prefix", s3PrefixValue)
      def s3SseAlgorithm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, S3SseAlgorithm] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3SseAlgorithm", s3SseAlgorithmValue)
      def s3SseKmsKeyId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.S3SseKmsKeyId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3SseKmsKeyId", s3SseKmsKeyIdValue)
      def failureCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureCode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("failureCode", failureCodeValue)
      def failureMessage: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureMessage] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("failureMessage", failureMessageValue)
      def exportFormat: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportFormat] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportFormat", exportFormatValue)
      def billedSizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BilledSizeBytes] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billedSizeBytes", billedSizeBytesValue)
      def itemCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ItemCount] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCount", itemCountValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExportDescription) extends ExportDescription.ReadOnly {
      override def exportArnValue: scala.Option[primitives.ExportArn] = scala.Option(impl.exportArn()).map(value => value: primitives.ExportArn)
      override def exportStatusValue: scala.Option[ExportStatus] = scala.Option(impl.exportStatus()).map(value => ExportStatus.wrap(value))
      override def startTimeValue: scala.Option[primitives.ExportStartTime] = scala.Option(impl.startTime()).map(value => value: primitives.ExportStartTime)
      override def endTimeValue: scala.Option[primitives.ExportEndTime] = scala.Option(impl.endTime()).map(value => value: primitives.ExportEndTime)
      override def exportManifestValue: scala.Option[primitives.ExportManifest] = scala.Option(impl.exportManifest()).map(value => value: primitives.ExportManifest)
      override def tableArnValue: scala.Option[primitives.TableArn] = scala.Option(impl.tableArn()).map(value => value: primitives.TableArn)
      override def tableIdValue: scala.Option[primitives.TableId] = scala.Option(impl.tableId()).map(value => value: primitives.TableId)
      override def exportTimeValue: scala.Option[primitives.ExportTime] = scala.Option(impl.exportTime()).map(value => value: primitives.ExportTime)
      override def clientTokenValue: scala.Option[primitives.ClientToken] = scala.Option(impl.clientToken()).map(value => value: primitives.ClientToken)
      override def s3BucketValue: scala.Option[primitives.S3Bucket] = scala.Option(impl.s3Bucket()).map(value => value: primitives.S3Bucket)
      override def s3BucketOwnerValue: scala.Option[primitives.S3BucketOwner] = scala.Option(impl.s3BucketOwner()).map(value => value: primitives.S3BucketOwner)
      override def s3PrefixValue: scala.Option[primitives.S3Prefix] = scala.Option(impl.s3Prefix()).map(value => value: primitives.S3Prefix)
      override def s3SseAlgorithmValue: scala.Option[S3SseAlgorithm] = scala.Option(impl.s3SseAlgorithm()).map(value => S3SseAlgorithm.wrap(value))
      override def s3SseKmsKeyIdValue: scala.Option[primitives.S3SseKmsKeyId] = scala.Option(impl.s3SseKmsKeyId()).map(value => value: primitives.S3SseKmsKeyId)
      override def failureCodeValue: scala.Option[primitives.FailureCode] = scala.Option(impl.failureCode()).map(value => value: primitives.FailureCode)
      override def failureMessageValue: scala.Option[primitives.FailureMessage] = scala.Option(impl.failureMessage()).map(value => value: primitives.FailureMessage)
      override def exportFormatValue: scala.Option[ExportFormat] = scala.Option(impl.exportFormat()).map(value => ExportFormat.wrap(value))
      override def billedSizeBytesValue: scala.Option[primitives.BilledSizeBytes] = scala.Option(impl.billedSizeBytes()).map(value => value: primitives.BilledSizeBytes)
      override def itemCountValue: scala.Option[primitives.ItemCount] = scala.Option(impl.itemCount()).map(value => value: primitives.ItemCount)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExportDescription): ReadOnly = new Wrapper(impl)
  }
  sealed trait ExportFormat { def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportFormat }
  object ExportFormat {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ExportFormat): ExportFormat = value match {
      case software.amazon.awssdk.services.dynamodb.model.ExportFormat.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ExportFormat.DYNAMODB_JSON => DYNAMODB_JSON
      case software.amazon.awssdk.services.dynamodb.model.ExportFormat.ION => ION
    }
    final case object unknownToSdkVersion extends ExportFormat { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportFormat = software.amazon.awssdk.services.dynamodb.model.ExportFormat.UNKNOWN_TO_SDK_VERSION }
    final case object DYNAMODB_JSON extends ExportFormat { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportFormat = software.amazon.awssdk.services.dynamodb.model.ExportFormat.DYNAMODB_JSON }
    final case object ION extends ExportFormat { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportFormat = software.amazon.awssdk.services.dynamodb.model.ExportFormat.ION }
  }
  sealed trait ExportStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportStatus }
  object ExportStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ExportStatus): ExportStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.ExportStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ExportStatus.IN_PROGRESS => IN_PROGRESS
      case software.amazon.awssdk.services.dynamodb.model.ExportStatus.COMPLETED => COMPLETED
      case software.amazon.awssdk.services.dynamodb.model.ExportStatus.FAILED => FAILED
    }
    final case object unknownToSdkVersion extends ExportStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportStatus = software.amazon.awssdk.services.dynamodb.model.ExportStatus.UNKNOWN_TO_SDK_VERSION }
    final case object IN_PROGRESS extends ExportStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportStatus = software.amazon.awssdk.services.dynamodb.model.ExportStatus.IN_PROGRESS }
    final case object COMPLETED extends ExportStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportStatus = software.amazon.awssdk.services.dynamodb.model.ExportStatus.COMPLETED }
    final case object FAILED extends ExportStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ExportStatus = software.amazon.awssdk.services.dynamodb.model.ExportStatus.FAILED }
  }
  type ExportSummaries = List[ExportSummary]
  case class ExportSummary(exportArn: scala.Option[primitives.ExportArn] = None, exportStatus: scala.Option[ExportStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExportSummary = {
      import ExportSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExportSummary.builder().optionallyWith(exportArn.map(value => value: java.lang.String))(_.exportArn).optionallyWith(exportStatus.map(value => value.unwrap))(_.exportStatus).build()
    }
    def asReadOnly: ExportSummary.ReadOnly = ExportSummary.wrap(buildAwsValue())
  }
  object ExportSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExportSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportSummary = ExportSummary(exportArnValue.map(value => value), exportStatusValue.map(value => value))
      def exportArnValue: scala.Option[primitives.ExportArn]
      def exportStatusValue: scala.Option[ExportStatus]
      def exportArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportArn", exportArnValue)
      def exportStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportStatus", exportStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExportSummary) extends ExportSummary.ReadOnly {
      override def exportArnValue: scala.Option[primitives.ExportArn] = scala.Option(impl.exportArn()).map(value => value: primitives.ExportArn)
      override def exportStatusValue: scala.Option[ExportStatus] = scala.Option(impl.exportStatus()).map(value => ExportStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExportSummary): ReadOnly = new Wrapper(impl)
  }
  case class ExportTableToPointInTimeRequest(tableArn: primitives.TableArn, exportTime: scala.Option[primitives.ExportTime] = None, clientToken: scala.Option[primitives.ClientToken] = None, s3Bucket: primitives.S3Bucket, s3BucketOwner: scala.Option[primitives.S3BucketOwner] = None, s3Prefix: scala.Option[primitives.S3Prefix] = None, s3SseAlgorithm: scala.Option[S3SseAlgorithm] = None, s3SseKmsKeyId: scala.Option[primitives.S3SseKmsKeyId] = None, exportFormat: scala.Option[ExportFormat] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeRequest = {
      import ExportTableToPointInTimeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeRequest.builder().tableArn(tableArn: java.lang.String).optionallyWith(exportTime.map(value => value: java.time.Instant))(_.exportTime).optionallyWith(clientToken.map(value => value: java.lang.String))(_.clientToken).s3Bucket(s3Bucket: java.lang.String).optionallyWith(s3BucketOwner.map(value => value: java.lang.String))(_.s3BucketOwner).optionallyWith(s3Prefix.map(value => value: java.lang.String))(_.s3Prefix).optionallyWith(s3SseAlgorithm.map(value => value.unwrap))(_.s3SseAlgorithm).optionallyWith(s3SseKmsKeyId.map(value => value: java.lang.String))(_.s3SseKmsKeyId).optionallyWith(exportFormat.map(value => value.unwrap))(_.exportFormat).build()
    }
    def asReadOnly: ExportTableToPointInTimeRequest.ReadOnly = ExportTableToPointInTimeRequest.wrap(buildAwsValue())
  }
  object ExportTableToPointInTimeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportTableToPointInTimeRequest = ExportTableToPointInTimeRequest(tableArnValue, exportTimeValue.map(value => value), clientTokenValue.map(value => value), s3BucketValue, s3BucketOwnerValue.map(value => value), s3PrefixValue.map(value => value), s3SseAlgorithmValue.map(value => value), s3SseKmsKeyIdValue.map(value => value), exportFormatValue.map(value => value))
      def tableArnValue: primitives.TableArn
      def exportTimeValue: scala.Option[primitives.ExportTime]
      def clientTokenValue: scala.Option[primitives.ClientToken]
      def s3BucketValue: primitives.S3Bucket
      def s3BucketOwnerValue: scala.Option[primitives.S3BucketOwner]
      def s3PrefixValue: scala.Option[primitives.S3Prefix]
      def s3SseAlgorithmValue: scala.Option[S3SseAlgorithm]
      def s3SseKmsKeyIdValue: scala.Option[primitives.S3SseKmsKeyId]
      def exportFormatValue: scala.Option[ExportFormat]
      def tableArn: ZIO[Any, Nothing, primitives.TableArn] = ZIO.succeed(tableArnValue)
      def exportTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportTime] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportTime", exportTimeValue)
      def clientToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ClientToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("clientToken", clientTokenValue)
      def s3Bucket: ZIO[Any, Nothing, primitives.S3Bucket] = ZIO.succeed(s3BucketValue)
      def s3BucketOwner: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.S3BucketOwner] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3BucketOwner", s3BucketOwnerValue)
      def s3Prefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.S3Prefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3Prefix", s3PrefixValue)
      def s3SseAlgorithm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, S3SseAlgorithm] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3SseAlgorithm", s3SseAlgorithmValue)
      def s3SseKmsKeyId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.S3SseKmsKeyId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3SseKmsKeyId", s3SseKmsKeyIdValue)
      def exportFormat: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportFormat] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportFormat", exportFormatValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeRequest) extends ExportTableToPointInTimeRequest.ReadOnly {
      override def tableArnValue: primitives.TableArn = impl.tableArn(): primitives.TableArn
      override def exportTimeValue: scala.Option[primitives.ExportTime] = scala.Option(impl.exportTime()).map(value => value: primitives.ExportTime)
      override def clientTokenValue: scala.Option[primitives.ClientToken] = scala.Option(impl.clientToken()).map(value => value: primitives.ClientToken)
      override def s3BucketValue: primitives.S3Bucket = impl.s3Bucket(): primitives.S3Bucket
      override def s3BucketOwnerValue: scala.Option[primitives.S3BucketOwner] = scala.Option(impl.s3BucketOwner()).map(value => value: primitives.S3BucketOwner)
      override def s3PrefixValue: scala.Option[primitives.S3Prefix] = scala.Option(impl.s3Prefix()).map(value => value: primitives.S3Prefix)
      override def s3SseAlgorithmValue: scala.Option[S3SseAlgorithm] = scala.Option(impl.s3SseAlgorithm()).map(value => S3SseAlgorithm.wrap(value))
      override def s3SseKmsKeyIdValue: scala.Option[primitives.S3SseKmsKeyId] = scala.Option(impl.s3SseKmsKeyId()).map(value => value: primitives.S3SseKmsKeyId)
      override def exportFormatValue: scala.Option[ExportFormat] = scala.Option(impl.exportFormat()).map(value => ExportFormat.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeRequest): ReadOnly = new Wrapper(impl)
  }
  case class ExportTableToPointInTimeResponse(exportDescription: scala.Option[ExportDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeResponse = {
      import ExportTableToPointInTimeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeResponse.builder().optionallyWith(exportDescription.map(value => value.buildAwsValue()))(_.exportDescription).build()
    }
    def asReadOnly: ExportTableToPointInTimeResponse.ReadOnly = ExportTableToPointInTimeResponse.wrap(buildAwsValue())
  }
  object ExportTableToPointInTimeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportTableToPointInTimeResponse = ExportTableToPointInTimeResponse(exportDescriptionValue.map(value => value.editable))
      def exportDescriptionValue: scala.Option[ExportDescription.ReadOnly]
      def exportDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportDescription", exportDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeResponse) extends ExportTableToPointInTimeResponse.ReadOnly { override def exportDescriptionValue: scala.Option[ExportDescription.ReadOnly] = scala.Option(impl.exportDescription()).map(value => ExportDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ExportTableToPointInTimeResponse): ReadOnly = new Wrapper(impl)
  }
  type ExpressionAttributeNameMap = Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]
  type ExpressionAttributeValueMap = Map[primitives.ExpressionAttributeValueVariable, AttributeValue]
  case class FailureException(exceptionName: scala.Option[primitives.ExceptionName] = None, exceptionDescription: scala.Option[primitives.ExceptionDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.FailureException = {
      import FailureException.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.FailureException.builder().optionallyWith(exceptionName.map(value => value: java.lang.String))(_.exceptionName).optionallyWith(exceptionDescription.map(value => value: java.lang.String))(_.exceptionDescription).build()
    }
    def asReadOnly: FailureException.ReadOnly = FailureException.wrap(buildAwsValue())
  }
  object FailureException {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.FailureException] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: FailureException = FailureException(exceptionNameValue.map(value => value), exceptionDescriptionValue.map(value => value))
      def exceptionNameValue: scala.Option[primitives.ExceptionName]
      def exceptionDescriptionValue: scala.Option[primitives.ExceptionDescription]
      def exceptionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExceptionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exceptionName", exceptionNameValue)
      def exceptionDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExceptionDescription] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exceptionDescription", exceptionDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.FailureException) extends FailureException.ReadOnly {
      override def exceptionNameValue: scala.Option[primitives.ExceptionName] = scala.Option(impl.exceptionName()).map(value => value: primitives.ExceptionName)
      override def exceptionDescriptionValue: scala.Option[primitives.ExceptionDescription] = scala.Option(impl.exceptionDescription()).map(value => value: primitives.ExceptionDescription)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.FailureException): ReadOnly = new Wrapper(impl)
  }
  type FilterConditionMap = Map[primitives.AttributeName, Condition]
  case class Get(key: Map[primitives.AttributeName, AttributeValue], tableName: primitives.TableName, projectionExpression: scala.Option[primitives.ProjectionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Get = {
      import Get.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Get.builder().key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).tableName(tableName: java.lang.String).optionallyWith(projectionExpression.map(value => value: java.lang.String))(_.projectionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).build()
    }
    def asReadOnly: Get.ReadOnly = Get.wrap(buildAwsValue())
  }
  object Get {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Get] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Get = Get(keyValue.map({
        case (key, value) =>
          key -> value.editable
      }), tableNameValue, projectionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value))
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def tableNameValue: primitives.TableName
      def projectionExpressionValue: scala.Option[primitives.ProjectionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def projectionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ProjectionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projectionExpression", projectionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Get) extends Get.ReadOnly {
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def projectionExpressionValue: scala.Option[primitives.ProjectionExpression] = scala.Option(impl.projectionExpression()).map(value => value: primitives.ProjectionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Get): ReadOnly = new Wrapper(impl)
  }
  case class GetItemRequest(tableName: primitives.TableName, key: Map[primitives.AttributeName, AttributeValue], attributesToGet: scala.Option[Iterable[primitives.AttributeName]] = None, consistentRead: scala.Option[primitives.ConsistentRead] = None, returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, projectionExpression: scala.Option[primitives.ProjectionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GetItemRequest = {
      import GetItemRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GetItemRequest.builder().tableName(tableName: java.lang.String).key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).optionallyWith(attributesToGet.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.attributesToGet).optionallyWith(consistentRead.map(value => value: java.lang.Boolean))(_.consistentRead).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(projectionExpression.map(value => value: java.lang.String))(_.projectionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).build()
    }
    def asReadOnly: GetItemRequest.ReadOnly = GetItemRequest.wrap(buildAwsValue())
  }
  object GetItemRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GetItemRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetItemRequest = GetItemRequest(tableNameValue, keyValue.map({
        case (key, value) =>
          key -> value.editable
      }), attributesToGetValue.map(value => value), consistentReadValue.map(value => value), returnConsumedCapacityValue.map(value => value), projectionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value))
      def tableNameValue: primitives.TableName
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def attributesToGetValue: scala.Option[List[primitives.AttributeName]]
      def consistentReadValue: scala.Option[primitives.ConsistentRead]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def projectionExpressionValue: scala.Option[primitives.ProjectionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
      def attributesToGet: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributesToGet", attributesToGetValue)
      def consistentRead: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsistentRead] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consistentRead", consistentReadValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def projectionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ProjectionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projectionExpression", projectionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GetItemRequest) extends GetItemRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def attributesToGetValue: scala.Option[List[primitives.AttributeName]] = scala.Option(impl.attributesToGet()).map(value => value.asScala.map { item => 
        item: primitives.AttributeName
      }.toList)
      override def consistentReadValue: scala.Option[primitives.ConsistentRead] = scala.Option(impl.consistentRead()).map(value => value: primitives.ConsistentRead)
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def projectionExpressionValue: scala.Option[primitives.ProjectionExpression] = scala.Option(impl.projectionExpression()).map(value => value: primitives.ProjectionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GetItemRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetItemResponse(item: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, consumedCapacity: scala.Option[ConsumedCapacity] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GetItemResponse = {
      import GetItemResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GetItemResponse.builder().optionallyWith(item.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.item).optionallyWith(consumedCapacity.map(value => value.buildAwsValue()))(_.consumedCapacity).build()
    }
    def asReadOnly: GetItemResponse.ReadOnly = GetItemResponse.wrap(buildAwsValue())
  }
  object GetItemResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GetItemResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetItemResponse = GetItemResponse(itemValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consumedCapacityValue.map(value => value.editable))
      def itemValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly]
      def item: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("item", itemValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConsumedCapacity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GetItemResponse) extends GetItemResponse.ReadOnly {
      override def itemValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.item()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly] = scala.Option(impl.consumedCapacity()).map(value => ConsumedCapacity.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GetItemResponse): ReadOnly = new Wrapper(impl)
  }
  case class GlobalSecondaryIndex(indexName: primitives.IndexName, keySchema: Iterable[KeySchemaElement], projection: Projection, provisionedThroughput: scala.Option[ProvisionedThroughput] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex = {
      import GlobalSecondaryIndex.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex.builder().indexName(indexName: java.lang.String).keySchema(keySchema.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).projection(projection.buildAwsValue()).optionallyWith(provisionedThroughput.map(value => value.buildAwsValue()))(_.provisionedThroughput).build()
    }
    def asReadOnly: GlobalSecondaryIndex.ReadOnly = GlobalSecondaryIndex.wrap(buildAwsValue())
  }
  object GlobalSecondaryIndex {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalSecondaryIndex = GlobalSecondaryIndex(indexNameValue, keySchemaValue.map { item => 
        item.editable
      }, projectionValue.editable, provisionedThroughputValue.map(value => value.editable))
      def indexNameValue: primitives.IndexName
      def keySchemaValue: List[KeySchemaElement.ReadOnly]
      def projectionValue: Projection.ReadOnly
      def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly]
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def keySchema: ZIO[Any, Nothing, List[KeySchemaElement.ReadOnly]] = ZIO.succeed(keySchemaValue)
      def projection: ZIO[Any, Nothing, Projection.ReadOnly] = ZIO.succeed(projectionValue)
      def provisionedThroughput: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughput.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughput", provisionedThroughputValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex) extends GlobalSecondaryIndex.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def keySchemaValue: List[KeySchemaElement.ReadOnly] = impl.keySchema().asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList
      override def projectionValue: Projection.ReadOnly = Projection.wrap(impl.projection())
      override def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly] = scala.Option(impl.provisionedThroughput()).map(value => ProvisionedThroughput.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndex): ReadOnly = new Wrapper(impl)
  }
  case class GlobalSecondaryIndexAutoScalingUpdate(indexName: scala.Option[primitives.IndexName] = None, provisionedWriteCapacityAutoScalingUpdate: scala.Option[AutoScalingSettingsUpdate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexAutoScalingUpdate = {
      import GlobalSecondaryIndexAutoScalingUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexAutoScalingUpdate.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(provisionedWriteCapacityAutoScalingUpdate.map(value => value.buildAwsValue()))(_.provisionedWriteCapacityAutoScalingUpdate).build()
    }
    def asReadOnly: GlobalSecondaryIndexAutoScalingUpdate.ReadOnly = GlobalSecondaryIndexAutoScalingUpdate.wrap(buildAwsValue())
  }
  object GlobalSecondaryIndexAutoScalingUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexAutoScalingUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalSecondaryIndexAutoScalingUpdate = GlobalSecondaryIndexAutoScalingUpdate(indexNameValue.map(value => value), provisionedWriteCapacityAutoScalingUpdateValue.map(value => value.editable))
      def indexNameValue: scala.Option[primitives.IndexName]
      def provisionedWriteCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def provisionedWriteCapacityAutoScalingUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedWriteCapacityAutoScalingUpdate", provisionedWriteCapacityAutoScalingUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexAutoScalingUpdate) extends GlobalSecondaryIndexAutoScalingUpdate.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def provisionedWriteCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.provisionedWriteCapacityAutoScalingUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexAutoScalingUpdate): ReadOnly = new Wrapper(impl)
  }
  type GlobalSecondaryIndexAutoScalingUpdateList = List[GlobalSecondaryIndexAutoScalingUpdate]
  case class GlobalSecondaryIndexDescription(indexName: scala.Option[primitives.IndexName] = None, keySchema: scala.Option[Iterable[KeySchemaElement]] = None, projection: scala.Option[Projection] = None, indexStatus: scala.Option[IndexStatus] = None, backfilling: scala.Option[primitives.Backfilling] = None, provisionedThroughput: scala.Option[ProvisionedThroughputDescription] = None, indexSizeBytes: scala.Option[Long] = None, itemCount: scala.Option[Long] = None, indexArn: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexDescription = {
      import GlobalSecondaryIndexDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexDescription.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(keySchema.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.keySchema).optionallyWith(projection.map(value => value.buildAwsValue()))(_.projection).optionallyWith(indexStatus.map(value => value.unwrap))(_.indexStatus).optionallyWith(backfilling.map(value => value: java.lang.Boolean))(_.backfilling).optionallyWith(provisionedThroughput.map(value => value.buildAwsValue()))(_.provisionedThroughput).optionallyWith(indexSizeBytes.map(value => value: java.lang.Long))(_.indexSizeBytes).optionallyWith(itemCount.map(value => value: java.lang.Long))(_.itemCount).optionallyWith(indexArn.map(value => value: java.lang.String))(_.indexArn).build()
    }
    def asReadOnly: GlobalSecondaryIndexDescription.ReadOnly = GlobalSecondaryIndexDescription.wrap(buildAwsValue())
  }
  object GlobalSecondaryIndexDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalSecondaryIndexDescription = GlobalSecondaryIndexDescription(indexNameValue.map(value => value), keySchemaValue.map(value => value.map { item => 
        item.editable
      }), projectionValue.map(value => value.editable), indexStatusValue.map(value => value), backfillingValue.map(value => value), provisionedThroughputValue.map(value => value.editable), indexSizeBytesValue.map(value => value), itemCountValue.map(value => value), indexArnValue.map(value => value))
      def indexNameValue: scala.Option[primitives.IndexName]
      def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]]
      def projectionValue: scala.Option[Projection.ReadOnly]
      def indexStatusValue: scala.Option[IndexStatus]
      def backfillingValue: scala.Option[primitives.Backfilling]
      def provisionedThroughputValue: scala.Option[ProvisionedThroughputDescription.ReadOnly]
      def indexSizeBytesValue: scala.Option[Long]
      def itemCountValue: scala.Option[Long]
      def indexArnValue: scala.Option[String]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def keySchema: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KeySchemaElement.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keySchema", keySchemaValue)
      def projection: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Projection.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projection", projectionValue)
      def indexStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IndexStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexStatus", indexStatusValue)
      def backfilling: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Backfilling] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backfilling", backfillingValue)
      def provisionedThroughput: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughputDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughput", provisionedThroughputValue)
      def indexSizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexSizeBytes", indexSizeBytesValue)
      def itemCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCount", itemCountValue)
      def indexArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexArn", indexArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexDescription) extends GlobalSecondaryIndexDescription.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]] = scala.Option(impl.keySchema()).map(value => value.asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList)
      override def projectionValue: scala.Option[Projection.ReadOnly] = scala.Option(impl.projection()).map(value => Projection.wrap(value))
      override def indexStatusValue: scala.Option[IndexStatus] = scala.Option(impl.indexStatus()).map(value => IndexStatus.wrap(value))
      override def backfillingValue: scala.Option[primitives.Backfilling] = scala.Option(impl.backfilling()).map(value => value: primitives.Backfilling)
      override def provisionedThroughputValue: scala.Option[ProvisionedThroughputDescription.ReadOnly] = scala.Option(impl.provisionedThroughput()).map(value => ProvisionedThroughputDescription.wrap(value))
      override def indexSizeBytesValue: scala.Option[Long] = scala.Option(impl.indexSizeBytes()).map(value => value: Long)
      override def itemCountValue: scala.Option[Long] = scala.Option(impl.itemCount()).map(value => value: Long)
      override def indexArnValue: scala.Option[String] = scala.Option(impl.indexArn()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexDescription): ReadOnly = new Wrapper(impl)
  }
  type GlobalSecondaryIndexDescriptionList = List[GlobalSecondaryIndexDescription]
  case class GlobalSecondaryIndexInfo(indexName: scala.Option[primitives.IndexName] = None, keySchema: scala.Option[Iterable[KeySchemaElement]] = None, projection: scala.Option[Projection] = None, provisionedThroughput: scala.Option[ProvisionedThroughput] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexInfo = {
      import GlobalSecondaryIndexInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexInfo.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(keySchema.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.keySchema).optionallyWith(projection.map(value => value.buildAwsValue()))(_.projection).optionallyWith(provisionedThroughput.map(value => value.buildAwsValue()))(_.provisionedThroughput).build()
    }
    def asReadOnly: GlobalSecondaryIndexInfo.ReadOnly = GlobalSecondaryIndexInfo.wrap(buildAwsValue())
  }
  object GlobalSecondaryIndexInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalSecondaryIndexInfo = GlobalSecondaryIndexInfo(indexNameValue.map(value => value), keySchemaValue.map(value => value.map { item => 
        item.editable
      }), projectionValue.map(value => value.editable), provisionedThroughputValue.map(value => value.editable))
      def indexNameValue: scala.Option[primitives.IndexName]
      def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]]
      def projectionValue: scala.Option[Projection.ReadOnly]
      def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def keySchema: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KeySchemaElement.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keySchema", keySchemaValue)
      def projection: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Projection.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projection", projectionValue)
      def provisionedThroughput: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughput.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughput", provisionedThroughputValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexInfo) extends GlobalSecondaryIndexInfo.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]] = scala.Option(impl.keySchema()).map(value => value.asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList)
      override def projectionValue: scala.Option[Projection.ReadOnly] = scala.Option(impl.projection()).map(value => Projection.wrap(value))
      override def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly] = scala.Option(impl.provisionedThroughput()).map(value => ProvisionedThroughput.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexInfo): ReadOnly = new Wrapper(impl)
  }
  type GlobalSecondaryIndexList = List[GlobalSecondaryIndex]
  case class GlobalSecondaryIndexUpdate(update: scala.Option[UpdateGlobalSecondaryIndexAction] = None, create: scala.Option[CreateGlobalSecondaryIndexAction] = None, delete: scala.Option[DeleteGlobalSecondaryIndexAction] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexUpdate = {
      import GlobalSecondaryIndexUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexUpdate.builder().optionallyWith(update.map(value => value.buildAwsValue()))(_.update).optionallyWith(create.map(value => value.buildAwsValue()))(_.create).optionallyWith(delete.map(value => value.buildAwsValue()))(_.delete).build()
    }
    def asReadOnly: GlobalSecondaryIndexUpdate.ReadOnly = GlobalSecondaryIndexUpdate.wrap(buildAwsValue())
  }
  object GlobalSecondaryIndexUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalSecondaryIndexUpdate = GlobalSecondaryIndexUpdate(updateValue.map(value => value.editable), createValue.map(value => value.editable), deleteValue.map(value => value.editable))
      def updateValue: scala.Option[UpdateGlobalSecondaryIndexAction.ReadOnly]
      def createValue: scala.Option[CreateGlobalSecondaryIndexAction.ReadOnly]
      def deleteValue: scala.Option[DeleteGlobalSecondaryIndexAction.ReadOnly]
      def update: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, UpdateGlobalSecondaryIndexAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("update", updateValue)
      def create: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CreateGlobalSecondaryIndexAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("create", createValue)
      def delete: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DeleteGlobalSecondaryIndexAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("delete", deleteValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexUpdate) extends GlobalSecondaryIndexUpdate.ReadOnly {
      override def updateValue: scala.Option[UpdateGlobalSecondaryIndexAction.ReadOnly] = scala.Option(impl.update()).map(value => UpdateGlobalSecondaryIndexAction.wrap(value))
      override def createValue: scala.Option[CreateGlobalSecondaryIndexAction.ReadOnly] = scala.Option(impl.create()).map(value => CreateGlobalSecondaryIndexAction.wrap(value))
      override def deleteValue: scala.Option[DeleteGlobalSecondaryIndexAction.ReadOnly] = scala.Option(impl.delete()).map(value => DeleteGlobalSecondaryIndexAction.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalSecondaryIndexUpdate): ReadOnly = new Wrapper(impl)
  }
  type GlobalSecondaryIndexUpdateList = List[GlobalSecondaryIndexUpdate]
  type GlobalSecondaryIndexes = List[GlobalSecondaryIndexInfo]
  case class GlobalTable(globalTableName: scala.Option[primitives.TableName] = None, replicationGroup: scala.Option[Iterable[Replica]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalTable = {
      import GlobalTable.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalTable.builder().optionallyWith(globalTableName.map(value => value: java.lang.String))(_.globalTableName).optionallyWith(replicationGroup.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicationGroup).build()
    }
    def asReadOnly: GlobalTable.ReadOnly = GlobalTable.wrap(buildAwsValue())
  }
  object GlobalTable {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalTable] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalTable = GlobalTable(globalTableNameValue.map(value => value), replicationGroupValue.map(value => value.map { item => 
        item.editable
      }))
      def globalTableNameValue: scala.Option[primitives.TableName]
      def replicationGroupValue: scala.Option[List[Replica.ReadOnly]]
      def globalTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableName", globalTableNameValue)
      def replicationGroup: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Replica.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicationGroup", replicationGroupValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalTable) extends GlobalTable.ReadOnly {
      override def globalTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.globalTableName()).map(value => value: primitives.TableName)
      override def replicationGroupValue: scala.Option[List[Replica.ReadOnly]] = scala.Option(impl.replicationGroup()).map(value => value.asScala.map { item => 
        Replica.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalTable): ReadOnly = new Wrapper(impl)
  }
  case class GlobalTableDescription(replicationGroup: scala.Option[Iterable[ReplicaDescription]] = None, globalTableArn: scala.Option[primitives.GlobalTableArnString] = None, creationDateTime: scala.Option[primitives.Date] = None, globalTableStatus: scala.Option[GlobalTableStatus] = None, globalTableName: scala.Option[primitives.TableName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalTableDescription = {
      import GlobalTableDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalTableDescription.builder().optionallyWith(replicationGroup.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicationGroup).optionallyWith(globalTableArn.map(value => value: java.lang.String))(_.globalTableArn).optionallyWith(creationDateTime.map(value => value: java.time.Instant))(_.creationDateTime).optionallyWith(globalTableStatus.map(value => value.unwrap))(_.globalTableStatus).optionallyWith(globalTableName.map(value => value: java.lang.String))(_.globalTableName).build()
    }
    def asReadOnly: GlobalTableDescription.ReadOnly = GlobalTableDescription.wrap(buildAwsValue())
  }
  object GlobalTableDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalTableDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalTableDescription = GlobalTableDescription(replicationGroupValue.map(value => value.map { item => 
        item.editable
      }), globalTableArnValue.map(value => value), creationDateTimeValue.map(value => value), globalTableStatusValue.map(value => value), globalTableNameValue.map(value => value))
      def replicationGroupValue: scala.Option[List[ReplicaDescription.ReadOnly]]
      def globalTableArnValue: scala.Option[primitives.GlobalTableArnString]
      def creationDateTimeValue: scala.Option[primitives.Date]
      def globalTableStatusValue: scala.Option[GlobalTableStatus]
      def globalTableNameValue: scala.Option[primitives.TableName]
      def replicationGroup: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicationGroup", replicationGroupValue)
      def globalTableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.GlobalTableArnString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableArn", globalTableArnValue)
      def creationDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("creationDateTime", creationDateTimeValue)
      def globalTableStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GlobalTableStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableStatus", globalTableStatusValue)
      def globalTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableName", globalTableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalTableDescription) extends GlobalTableDescription.ReadOnly {
      override def replicationGroupValue: scala.Option[List[ReplicaDescription.ReadOnly]] = scala.Option(impl.replicationGroup()).map(value => value.asScala.map { item => 
        ReplicaDescription.wrap(item)
      }.toList)
      override def globalTableArnValue: scala.Option[primitives.GlobalTableArnString] = scala.Option(impl.globalTableArn()).map(value => value: primitives.GlobalTableArnString)
      override def creationDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.creationDateTime()).map(value => value: primitives.Date)
      override def globalTableStatusValue: scala.Option[GlobalTableStatus] = scala.Option(impl.globalTableStatus()).map(value => GlobalTableStatus.wrap(value))
      override def globalTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.globalTableName()).map(value => value: primitives.TableName)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalTableDescription): ReadOnly = new Wrapper(impl)
  }
  case class GlobalTableGlobalSecondaryIndexSettingsUpdate(indexName: primitives.IndexName, provisionedWriteCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, provisionedWriteCapacityAutoScalingSettingsUpdate: scala.Option[AutoScalingSettingsUpdate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GlobalTableGlobalSecondaryIndexSettingsUpdate = {
      import GlobalTableGlobalSecondaryIndexSettingsUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GlobalTableGlobalSecondaryIndexSettingsUpdate.builder().indexName(indexName: java.lang.String).optionallyWith(provisionedWriteCapacityUnits.map(value => value: java.lang.Long))(_.provisionedWriteCapacityUnits).optionallyWith(provisionedWriteCapacityAutoScalingSettingsUpdate.map(value => value.buildAwsValue()))(_.provisionedWriteCapacityAutoScalingSettingsUpdate).build()
    }
    def asReadOnly: GlobalTableGlobalSecondaryIndexSettingsUpdate.ReadOnly = GlobalTableGlobalSecondaryIndexSettingsUpdate.wrap(buildAwsValue())
  }
  object GlobalTableGlobalSecondaryIndexSettingsUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GlobalTableGlobalSecondaryIndexSettingsUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GlobalTableGlobalSecondaryIndexSettingsUpdate = GlobalTableGlobalSecondaryIndexSettingsUpdate(indexNameValue, provisionedWriteCapacityUnitsValue.map(value => value), provisionedWriteCapacityAutoScalingSettingsUpdateValue.map(value => value.editable))
      def indexNameValue: primitives.IndexName
      def provisionedWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def provisionedWriteCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def provisionedWriteCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedWriteCapacityUnits", provisionedWriteCapacityUnitsValue)
      def provisionedWriteCapacityAutoScalingSettingsUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedWriteCapacityAutoScalingSettingsUpdate", provisionedWriteCapacityAutoScalingSettingsUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GlobalTableGlobalSecondaryIndexSettingsUpdate) extends GlobalTableGlobalSecondaryIndexSettingsUpdate.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def provisionedWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.provisionedWriteCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def provisionedWriteCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.provisionedWriteCapacityAutoScalingSettingsUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GlobalTableGlobalSecondaryIndexSettingsUpdate): ReadOnly = new Wrapper(impl)
  }
  type GlobalTableGlobalSecondaryIndexSettingsUpdateList = List[GlobalTableGlobalSecondaryIndexSettingsUpdate]
  type GlobalTableList = List[GlobalTable]
  sealed trait GlobalTableStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus }
  object GlobalTableStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus): GlobalTableStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.CREATING => CREATING
      case software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.ACTIVE => ACTIVE
      case software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.DELETING => DELETING
      case software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.UPDATING => UPDATING
    }
    final case object unknownToSdkVersion extends GlobalTableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus = software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.UNKNOWN_TO_SDK_VERSION }
    final case object CREATING extends GlobalTableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus = software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.CREATING }
    final case object ACTIVE extends GlobalTableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus = software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.ACTIVE }
    final case object DELETING extends GlobalTableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus = software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.DELETING }
    final case object UPDATING extends GlobalTableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus = software.amazon.awssdk.services.dynamodb.model.GlobalTableStatus.UPDATING }
  }
  sealed trait IndexStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.IndexStatus }
  object IndexStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.IndexStatus): IndexStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.IndexStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.IndexStatus.CREATING => CREATING
      case software.amazon.awssdk.services.dynamodb.model.IndexStatus.UPDATING => UPDATING
      case software.amazon.awssdk.services.dynamodb.model.IndexStatus.DELETING => DELETING
      case software.amazon.awssdk.services.dynamodb.model.IndexStatus.ACTIVE => ACTIVE
    }
    final case object unknownToSdkVersion extends IndexStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.IndexStatus = software.amazon.awssdk.services.dynamodb.model.IndexStatus.UNKNOWN_TO_SDK_VERSION }
    final case object CREATING extends IndexStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.IndexStatus = software.amazon.awssdk.services.dynamodb.model.IndexStatus.CREATING }
    final case object UPDATING extends IndexStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.IndexStatus = software.amazon.awssdk.services.dynamodb.model.IndexStatus.UPDATING }
    final case object DELETING extends IndexStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.IndexStatus = software.amazon.awssdk.services.dynamodb.model.IndexStatus.DELETING }
    final case object ACTIVE extends IndexStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.IndexStatus = software.amazon.awssdk.services.dynamodb.model.IndexStatus.ACTIVE }
  }
  type ItemCollectionKeyAttributeMap = Map[primitives.AttributeName, AttributeValue]
  case class ItemCollectionMetrics(itemCollectionKey: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, sizeEstimateRangeGB: scala.Option[Iterable[primitives.ItemCollectionSizeEstimateBound]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ItemCollectionMetrics = {
      import ItemCollectionMetrics.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ItemCollectionMetrics.builder().optionallyWith(itemCollectionKey.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.itemCollectionKey).optionallyWith(sizeEstimateRangeGB.map(value => value.map { item => 
        item: java.lang.Double
      }.asJavaCollection))(_.sizeEstimateRangeGB).build()
    }
    def asReadOnly: ItemCollectionMetrics.ReadOnly = ItemCollectionMetrics.wrap(buildAwsValue())
  }
  object ItemCollectionMetrics {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ItemCollectionMetrics] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ItemCollectionMetrics = ItemCollectionMetrics(itemCollectionKeyValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), sizeEstimateRangeGBValue.map(value => value))
      def itemCollectionKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def sizeEstimateRangeGBValue: scala.Option[List[primitives.ItemCollectionSizeEstimateBound]]
      def itemCollectionKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCollectionKey", itemCollectionKeyValue)
      def sizeEstimateRangeGB: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.ItemCollectionSizeEstimateBound]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeEstimateRangeGB", sizeEstimateRangeGBValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ItemCollectionMetrics) extends ItemCollectionMetrics.ReadOnly {
      override def itemCollectionKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.itemCollectionKey()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def sizeEstimateRangeGBValue: scala.Option[List[primitives.ItemCollectionSizeEstimateBound]] = scala.Option(impl.sizeEstimateRangeGB()).map(value => value.asScala.map { item => 
        item: primitives.ItemCollectionSizeEstimateBound
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ItemCollectionMetrics): ReadOnly = new Wrapper(impl)
  }
  type ItemCollectionMetricsMultiple = List[ItemCollectionMetrics]
  type ItemCollectionMetricsPerTable = Map[primitives.TableName, Iterable[ItemCollectionMetrics]]
  type ItemCollectionSizeEstimateRange = List[primitives.ItemCollectionSizeEstimateBound]
  type ItemList = List[Map[primitives.AttributeName, AttributeValue]]
  case class ItemResponse(item: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ItemResponse = {
      import ItemResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ItemResponse.builder().optionallyWith(item.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.item).build()
    }
    def asReadOnly: ItemResponse.ReadOnly = ItemResponse.wrap(buildAwsValue())
  }
  object ItemResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ItemResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ItemResponse = ItemResponse(itemValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })))
      def itemValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def item: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("item", itemValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ItemResponse) extends ItemResponse.ReadOnly {
      override def itemValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.item()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ItemResponse): ReadOnly = new Wrapper(impl)
  }
  type ItemResponseList = List[ItemResponse]
  type Key = Map[primitives.AttributeName, AttributeValue]
  type KeyConditions = Map[primitives.AttributeName, Condition]
  type KeyList = List[Map[primitives.AttributeName, AttributeValue]]
  type KeySchema = List[KeySchemaElement]
  case class KeySchemaElement(attributeName: primitives.KeySchemaAttributeName, keyType: KeyType) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.KeySchemaElement = {
      import KeySchemaElement.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.KeySchemaElement.builder().attributeName(attributeName: java.lang.String).keyType(keyType.unwrap).build()
    }
    def asReadOnly: KeySchemaElement.ReadOnly = KeySchemaElement.wrap(buildAwsValue())
  }
  object KeySchemaElement {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.KeySchemaElement] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: KeySchemaElement = KeySchemaElement(attributeNameValue, keyTypeValue)
      def attributeNameValue: primitives.KeySchemaAttributeName
      def keyTypeValue: KeyType
      def attributeName: ZIO[Any, Nothing, primitives.KeySchemaAttributeName] = ZIO.succeed(attributeNameValue)
      def keyType: ZIO[Any, Nothing, KeyType] = ZIO.succeed(keyTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.KeySchemaElement) extends KeySchemaElement.ReadOnly {
      override def attributeNameValue: primitives.KeySchemaAttributeName = impl.attributeName(): primitives.KeySchemaAttributeName
      override def keyTypeValue: KeyType = KeyType.wrap(impl.keyType())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.KeySchemaElement): ReadOnly = new Wrapper(impl)
  }
  sealed trait KeyType { def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType }
  object KeyType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.KeyType): KeyType = value match {
      case software.amazon.awssdk.services.dynamodb.model.KeyType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.KeyType.HASH => HASH
      case software.amazon.awssdk.services.dynamodb.model.KeyType.RANGE => RANGE
    }
    final case object unknownToSdkVersion extends KeyType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType = software.amazon.awssdk.services.dynamodb.model.KeyType.UNKNOWN_TO_SDK_VERSION }
    final case object HASH extends KeyType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType = software.amazon.awssdk.services.dynamodb.model.KeyType.HASH }
    final case object RANGE extends KeyType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType = software.amazon.awssdk.services.dynamodb.model.KeyType.RANGE }
  }
  case class KeysAndAttributes(keys: Iterable[Map[primitives.AttributeName, AttributeValue]], attributesToGet: scala.Option[Iterable[primitives.AttributeName]] = None, consistentRead: scala.Option[primitives.ConsistentRead] = None, projectionExpression: scala.Option[primitives.ProjectionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.KeysAndAttributes = {
      import KeysAndAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.KeysAndAttributes.builder().keys(keys.map { item => 
        item.map({
          case (key, value) =>
            (key: java.lang.String) -> value.buildAwsValue()
        }).asJava
      }.asJavaCollection).optionallyWith(attributesToGet.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.attributesToGet).optionallyWith(consistentRead.map(value => value: java.lang.Boolean))(_.consistentRead).optionallyWith(projectionExpression.map(value => value: java.lang.String))(_.projectionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).build()
    }
    def asReadOnly: KeysAndAttributes.ReadOnly = KeysAndAttributes.wrap(buildAwsValue())
  }
  object KeysAndAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.KeysAndAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: KeysAndAttributes = KeysAndAttributes(keysValue.map { item => 
        item.map({
          case (key, value) =>
            key -> value.editable
        })
      }, attributesToGetValue.map(value => value), consistentReadValue.map(value => value), projectionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value))
      def keysValue: List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def attributesToGetValue: scala.Option[List[primitives.AttributeName]]
      def consistentReadValue: scala.Option[primitives.ConsistentRead]
      def projectionExpressionValue: scala.Option[primitives.ProjectionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def keys: ZIO[Any, Nothing, List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]] = ZIO.succeed(keysValue)
      def attributesToGet: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributesToGet", attributesToGetValue)
      def consistentRead: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsistentRead] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consistentRead", consistentReadValue)
      def projectionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ProjectionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projectionExpression", projectionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.KeysAndAttributes) extends KeysAndAttributes.ReadOnly {
      override def keysValue: List[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = impl.keys().asScala.map { item => 
        item.asScala.map({
          case (key, value) =>
            (key: primitives.AttributeName) -> AttributeValue.wrap(value)
        }).toMap
      }.toList
      override def attributesToGetValue: scala.Option[List[primitives.AttributeName]] = scala.Option(impl.attributesToGet()).map(value => value.asScala.map { item => 
        item: primitives.AttributeName
      }.toList)
      override def consistentReadValue: scala.Option[primitives.ConsistentRead] = scala.Option(impl.consistentRead()).map(value => value: primitives.ConsistentRead)
      override def projectionExpressionValue: scala.Option[primitives.ProjectionExpression] = scala.Option(impl.projectionExpression()).map(value => value: primitives.ProjectionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.KeysAndAttributes): ReadOnly = new Wrapper(impl)
  }
  case class KinesisDataStreamDestination(streamArn: scala.Option[primitives.StreamArn] = None, destinationStatus: scala.Option[DestinationStatus] = None, destinationStatusDescription: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.KinesisDataStreamDestination = {
      import KinesisDataStreamDestination.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.KinesisDataStreamDestination.builder().optionallyWith(streamArn.map(value => value: java.lang.String))(_.streamArn).optionallyWith(destinationStatus.map(value => value.unwrap))(_.destinationStatus).optionallyWith(destinationStatusDescription.map(value => value: java.lang.String))(_.destinationStatusDescription).build()
    }
    def asReadOnly: KinesisDataStreamDestination.ReadOnly = KinesisDataStreamDestination.wrap(buildAwsValue())
  }
  object KinesisDataStreamDestination {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.KinesisDataStreamDestination] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: KinesisDataStreamDestination = KinesisDataStreamDestination(streamArnValue.map(value => value), destinationStatusValue.map(value => value), destinationStatusDescriptionValue.map(value => value))
      def streamArnValue: scala.Option[primitives.StreamArn]
      def destinationStatusValue: scala.Option[DestinationStatus]
      def destinationStatusDescriptionValue: scala.Option[String]
      def streamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamArn", streamArnValue)
      def destinationStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DestinationStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationStatus", destinationStatusValue)
      def destinationStatusDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationStatusDescription", destinationStatusDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.KinesisDataStreamDestination) extends KinesisDataStreamDestination.ReadOnly {
      override def streamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.streamArn()).map(value => value: primitives.StreamArn)
      override def destinationStatusValue: scala.Option[DestinationStatus] = scala.Option(impl.destinationStatus()).map(value => DestinationStatus.wrap(value))
      override def destinationStatusDescriptionValue: scala.Option[String] = scala.Option(impl.destinationStatusDescription()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.KinesisDataStreamDestination): ReadOnly = new Wrapper(impl)
  }
  type KinesisDataStreamDestinations = List[KinesisDataStreamDestination]
  type ListAttributeValue = List[AttributeValue]
  case class ListBackupsRequest(tableName: scala.Option[primitives.TableName] = None, limit: scala.Option[primitives.BackupsInputLimit] = None, timeRangeLowerBound: scala.Option[primitives.TimeRangeLowerBound] = None, timeRangeUpperBound: scala.Option[primitives.TimeRangeUpperBound] = None, exclusiveStartBackupArn: scala.Option[primitives.BackupArn] = None, backupType: scala.Option[BackupTypeFilter] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListBackupsRequest = {
      import ListBackupsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListBackupsRequest.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).optionallyWith(timeRangeLowerBound.map(value => value: java.time.Instant))(_.timeRangeLowerBound).optionallyWith(timeRangeUpperBound.map(value => value: java.time.Instant))(_.timeRangeUpperBound).optionallyWith(exclusiveStartBackupArn.map(value => value: java.lang.String))(_.exclusiveStartBackupArn).optionallyWith(backupType.map(value => value.unwrap))(_.backupType).build()
    }
    def asReadOnly: ListBackupsRequest.ReadOnly = ListBackupsRequest.wrap(buildAwsValue())
  }
  object ListBackupsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListBackupsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListBackupsRequest = ListBackupsRequest(tableNameValue.map(value => value), limitValue.map(value => value), timeRangeLowerBoundValue.map(value => value), timeRangeUpperBoundValue.map(value => value), exclusiveStartBackupArnValue.map(value => value), backupTypeValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def limitValue: scala.Option[primitives.BackupsInputLimit]
      def timeRangeLowerBoundValue: scala.Option[primitives.TimeRangeLowerBound]
      def timeRangeUpperBoundValue: scala.Option[primitives.TimeRangeUpperBound]
      def exclusiveStartBackupArnValue: scala.Option[primitives.BackupArn]
      def backupTypeValue: scala.Option[BackupTypeFilter]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupsInputLimit] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
      def timeRangeLowerBound: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TimeRangeLowerBound] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeRangeLowerBound", timeRangeLowerBoundValue)
      def timeRangeUpperBound: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TimeRangeUpperBound] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeRangeUpperBound", timeRangeUpperBoundValue)
      def exclusiveStartBackupArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exclusiveStartBackupArn", exclusiveStartBackupArnValue)
      def backupType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BackupTypeFilter] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupType", backupTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListBackupsRequest) extends ListBackupsRequest.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def limitValue: scala.Option[primitives.BackupsInputLimit] = scala.Option(impl.limit()).map(value => value: primitives.BackupsInputLimit)
      override def timeRangeLowerBoundValue: scala.Option[primitives.TimeRangeLowerBound] = scala.Option(impl.timeRangeLowerBound()).map(value => value: primitives.TimeRangeLowerBound)
      override def timeRangeUpperBoundValue: scala.Option[primitives.TimeRangeUpperBound] = scala.Option(impl.timeRangeUpperBound()).map(value => value: primitives.TimeRangeUpperBound)
      override def exclusiveStartBackupArnValue: scala.Option[primitives.BackupArn] = scala.Option(impl.exclusiveStartBackupArn()).map(value => value: primitives.BackupArn)
      override def backupTypeValue: scala.Option[BackupTypeFilter] = scala.Option(impl.backupType()).map(value => BackupTypeFilter.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListBackupsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListBackupsResponse(backupSummaries: scala.Option[Iterable[BackupSummary]] = None, lastEvaluatedBackupArn: scala.Option[primitives.BackupArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListBackupsResponse = {
      import ListBackupsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListBackupsResponse.builder().optionallyWith(backupSummaries.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.backupSummaries).optionallyWith(lastEvaluatedBackupArn.map(value => value: java.lang.String))(_.lastEvaluatedBackupArn).build()
    }
    def asReadOnly: ListBackupsResponse.ReadOnly = ListBackupsResponse.wrap(buildAwsValue())
  }
  object ListBackupsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListBackupsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListBackupsResponse = ListBackupsResponse(backupSummariesValue.map(value => value.map { item => 
        item.editable
      }), lastEvaluatedBackupArnValue.map(value => value))
      def backupSummariesValue: scala.Option[List[BackupSummary.ReadOnly]]
      def lastEvaluatedBackupArnValue: scala.Option[primitives.BackupArn]
      def backupSummaries: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[BackupSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupSummaries", backupSummariesValue)
      def lastEvaluatedBackupArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastEvaluatedBackupArn", lastEvaluatedBackupArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListBackupsResponse) extends ListBackupsResponse.ReadOnly {
      override def backupSummariesValue: scala.Option[List[BackupSummary.ReadOnly]] = scala.Option(impl.backupSummaries()).map(value => value.asScala.map { item => 
        BackupSummary.wrap(item)
      }.toList)
      override def lastEvaluatedBackupArnValue: scala.Option[primitives.BackupArn] = scala.Option(impl.lastEvaluatedBackupArn()).map(value => value: primitives.BackupArn)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListBackupsResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListContributorInsightsRequest(tableName: scala.Option[primitives.TableName] = None, nextToken: scala.Option[primitives.NextTokenString] = None, maxResults: scala.Option[primitives.ListContributorInsightsLimit] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsRequest = {
      import ListContributorInsightsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsRequest.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).build()
    }
    def asReadOnly: ListContributorInsightsRequest.ReadOnly = ListContributorInsightsRequest.wrap(buildAwsValue())
  }
  object ListContributorInsightsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListContributorInsightsRequest = ListContributorInsightsRequest(tableNameValue.map(value => value), nextTokenValue.map(value => value), maxResultsValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def nextTokenValue: scala.Option[primitives.NextTokenString]
      def maxResultsValue: scala.Option[primitives.ListContributorInsightsLimit]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextTokenString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ListContributorInsightsLimit] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsRequest) extends ListContributorInsightsRequest.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def nextTokenValue: scala.Option[primitives.NextTokenString] = scala.Option(impl.nextToken()).map(value => value: primitives.NextTokenString)
      override def maxResultsValue: scala.Option[primitives.ListContributorInsightsLimit] = scala.Option(impl.maxResults()).map(value => value: primitives.ListContributorInsightsLimit)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListContributorInsightsResponse(contributorInsightsSummaries: scala.Option[Iterable[ContributorInsightsSummary]] = None, nextToken: scala.Option[primitives.NextTokenString] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsResponse = {
      import ListContributorInsightsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsResponse.builder().optionallyWith(contributorInsightsSummaries.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.contributorInsightsSummaries).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListContributorInsightsResponse.ReadOnly = ListContributorInsightsResponse.wrap(buildAwsValue())
  }
  object ListContributorInsightsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListContributorInsightsResponse = ListContributorInsightsResponse(contributorInsightsSummariesValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def contributorInsightsSummariesValue: scala.Option[List[ContributorInsightsSummary.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextTokenString]
      def contributorInsightsSummaries: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContributorInsightsSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contributorInsightsSummaries", contributorInsightsSummariesValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextTokenString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsResponse) extends ListContributorInsightsResponse.ReadOnly {
      override def contributorInsightsSummariesValue: scala.Option[List[ContributorInsightsSummary.ReadOnly]] = scala.Option(impl.contributorInsightsSummaries()).map(value => value.asScala.map { item => 
        ContributorInsightsSummary.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextTokenString] = scala.Option(impl.nextToken()).map(value => value: primitives.NextTokenString)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListContributorInsightsResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListExportsRequest(tableArn: scala.Option[primitives.TableArn] = None, maxResults: scala.Option[primitives.ListExportsMaxLimit] = None, nextToken: scala.Option[primitives.ExportNextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListExportsRequest = {
      import ListExportsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListExportsRequest.builder().optionallyWith(tableArn.map(value => value: java.lang.String))(_.tableArn).optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListExportsRequest.ReadOnly = ListExportsRequest.wrap(buildAwsValue())
  }
  object ListExportsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListExportsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListExportsRequest = ListExportsRequest(tableArnValue.map(value => value), maxResultsValue.map(value => value), nextTokenValue.map(value => value))
      def tableArnValue: scala.Option[primitives.TableArn]
      def maxResultsValue: scala.Option[primitives.ListExportsMaxLimit]
      def nextTokenValue: scala.Option[primitives.ExportNextToken]
      def tableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableArn", tableArnValue)
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ListExportsMaxLimit] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportNextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListExportsRequest) extends ListExportsRequest.ReadOnly {
      override def tableArnValue: scala.Option[primitives.TableArn] = scala.Option(impl.tableArn()).map(value => value: primitives.TableArn)
      override def maxResultsValue: scala.Option[primitives.ListExportsMaxLimit] = scala.Option(impl.maxResults()).map(value => value: primitives.ListExportsMaxLimit)
      override def nextTokenValue: scala.Option[primitives.ExportNextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.ExportNextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListExportsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListExportsResponse(exportSummaries: scala.Option[Iterable[ExportSummary]] = None, nextToken: scala.Option[primitives.ExportNextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListExportsResponse = {
      import ListExportsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListExportsResponse.builder().optionallyWith(exportSummaries.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.exportSummaries).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListExportsResponse.ReadOnly = ListExportsResponse.wrap(buildAwsValue())
  }
  object ListExportsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListExportsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListExportsResponse = ListExportsResponse(exportSummariesValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def exportSummariesValue: scala.Option[List[ExportSummary.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.ExportNextToken]
      def exportSummaries: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ExportSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportSummaries", exportSummariesValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExportNextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListExportsResponse) extends ListExportsResponse.ReadOnly {
      override def exportSummariesValue: scala.Option[List[ExportSummary.ReadOnly]] = scala.Option(impl.exportSummaries()).map(value => value.asScala.map { item => 
        ExportSummary.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.ExportNextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.ExportNextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListExportsResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListGlobalTablesRequest(exclusiveStartGlobalTableName: scala.Option[primitives.TableName] = None, limit: scala.Option[primitives.PositiveIntegerObject] = None, regionName: scala.Option[primitives.RegionName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesRequest = {
      import ListGlobalTablesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesRequest.builder().optionallyWith(exclusiveStartGlobalTableName.map(value => value: java.lang.String))(_.exclusiveStartGlobalTableName).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).optionallyWith(regionName.map(value => value: java.lang.String))(_.regionName).build()
    }
    def asReadOnly: ListGlobalTablesRequest.ReadOnly = ListGlobalTablesRequest.wrap(buildAwsValue())
  }
  object ListGlobalTablesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListGlobalTablesRequest = ListGlobalTablesRequest(exclusiveStartGlobalTableNameValue.map(value => value), limitValue.map(value => value), regionNameValue.map(value => value))
      def exclusiveStartGlobalTableNameValue: scala.Option[primitives.TableName]
      def limitValue: scala.Option[primitives.PositiveIntegerObject]
      def regionNameValue: scala.Option[primitives.RegionName]
      def exclusiveStartGlobalTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exclusiveStartGlobalTableName", exclusiveStartGlobalTableNameValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveIntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
      def regionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regionName", regionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesRequest) extends ListGlobalTablesRequest.ReadOnly {
      override def exclusiveStartGlobalTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.exclusiveStartGlobalTableName()).map(value => value: primitives.TableName)
      override def limitValue: scala.Option[primitives.PositiveIntegerObject] = scala.Option(impl.limit()).map(value => value: primitives.PositiveIntegerObject)
      override def regionNameValue: scala.Option[primitives.RegionName] = scala.Option(impl.regionName()).map(value => value: primitives.RegionName)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListGlobalTablesResponse(globalTables: scala.Option[Iterable[GlobalTable]] = None, lastEvaluatedGlobalTableName: scala.Option[primitives.TableName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesResponse = {
      import ListGlobalTablesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesResponse.builder().optionallyWith(globalTables.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalTables).optionallyWith(lastEvaluatedGlobalTableName.map(value => value: java.lang.String))(_.lastEvaluatedGlobalTableName).build()
    }
    def asReadOnly: ListGlobalTablesResponse.ReadOnly = ListGlobalTablesResponse.wrap(buildAwsValue())
  }
  object ListGlobalTablesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListGlobalTablesResponse = ListGlobalTablesResponse(globalTablesValue.map(value => value.map { item => 
        item.editable
      }), lastEvaluatedGlobalTableNameValue.map(value => value))
      def globalTablesValue: scala.Option[List[GlobalTable.ReadOnly]]
      def lastEvaluatedGlobalTableNameValue: scala.Option[primitives.TableName]
      def globalTables: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalTable.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTables", globalTablesValue)
      def lastEvaluatedGlobalTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastEvaluatedGlobalTableName", lastEvaluatedGlobalTableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesResponse) extends ListGlobalTablesResponse.ReadOnly {
      override def globalTablesValue: scala.Option[List[GlobalTable.ReadOnly]] = scala.Option(impl.globalTables()).map(value => value.asScala.map { item => 
        GlobalTable.wrap(item)
      }.toList)
      override def lastEvaluatedGlobalTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.lastEvaluatedGlobalTableName()).map(value => value: primitives.TableName)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListGlobalTablesResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListTablesRequest(exclusiveStartTableName: scala.Option[primitives.TableName] = None, limit: scala.Option[primitives.ListTablesInputLimit] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListTablesRequest = {
      import ListTablesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListTablesRequest.builder().optionallyWith(exclusiveStartTableName.map(value => value: java.lang.String))(_.exclusiveStartTableName).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).build()
    }
    def asReadOnly: ListTablesRequest.ReadOnly = ListTablesRequest.wrap(buildAwsValue())
  }
  object ListTablesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListTablesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTablesRequest = ListTablesRequest(exclusiveStartTableNameValue.map(value => value), limitValue.map(value => value))
      def exclusiveStartTableNameValue: scala.Option[primitives.TableName]
      def limitValue: scala.Option[primitives.ListTablesInputLimit]
      def exclusiveStartTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exclusiveStartTableName", exclusiveStartTableNameValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ListTablesInputLimit] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListTablesRequest) extends ListTablesRequest.ReadOnly {
      override def exclusiveStartTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.exclusiveStartTableName()).map(value => value: primitives.TableName)
      override def limitValue: scala.Option[primitives.ListTablesInputLimit] = scala.Option(impl.limit()).map(value => value: primitives.ListTablesInputLimit)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListTablesRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListTablesResponse(tableNames: scala.Option[Iterable[primitives.TableName]] = None, lastEvaluatedTableName: scala.Option[primitives.TableName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListTablesResponse = {
      import ListTablesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListTablesResponse.builder().optionallyWith(tableNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tableNames).optionallyWith(lastEvaluatedTableName.map(value => value: java.lang.String))(_.lastEvaluatedTableName).build()
    }
    def asReadOnly: ListTablesResponse.ReadOnly = ListTablesResponse.wrap(buildAwsValue())
  }
  object ListTablesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListTablesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTablesResponse = ListTablesResponse(tableNamesValue.map(value => value), lastEvaluatedTableNameValue.map(value => value))
      def tableNamesValue: scala.Option[List[primitives.TableName]]
      def lastEvaluatedTableNameValue: scala.Option[primitives.TableName]
      def tableNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.TableName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableNames", tableNamesValue)
      def lastEvaluatedTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastEvaluatedTableName", lastEvaluatedTableNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListTablesResponse) extends ListTablesResponse.ReadOnly {
      override def tableNamesValue: scala.Option[List[primitives.TableName]] = scala.Option(impl.tableNames()).map(value => value.asScala.map { item => 
        item: primitives.TableName
      }.toList)
      override def lastEvaluatedTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.lastEvaluatedTableName()).map(value => value: primitives.TableName)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListTablesResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListTagsOfResourceRequest(resourceArn: primitives.ResourceArnString, nextToken: scala.Option[primitives.NextTokenString] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceRequest = {
      import ListTagsOfResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceRequest.builder().resourceArn(resourceArn: java.lang.String).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListTagsOfResourceRequest.ReadOnly = ListTagsOfResourceRequest.wrap(buildAwsValue())
  }
  object ListTagsOfResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTagsOfResourceRequest = ListTagsOfResourceRequest(resourceArnValue, nextTokenValue.map(value => value))
      def resourceArnValue: primitives.ResourceArnString
      def nextTokenValue: scala.Option[primitives.NextTokenString]
      def resourceArn: ZIO[Any, Nothing, primitives.ResourceArnString] = ZIO.succeed(resourceArnValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextTokenString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceRequest) extends ListTagsOfResourceRequest.ReadOnly {
      override def resourceArnValue: primitives.ResourceArnString = impl.resourceArn(): primitives.ResourceArnString
      override def nextTokenValue: scala.Option[primitives.NextTokenString] = scala.Option(impl.nextToken()).map(value => value: primitives.NextTokenString)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListTagsOfResourceResponse(tags: scala.Option[Iterable[Tag]] = None, nextToken: scala.Option[primitives.NextTokenString] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceResponse = {
      import ListTagsOfResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceResponse.builder().optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListTagsOfResourceResponse.ReadOnly = ListTagsOfResourceResponse.wrap(buildAwsValue())
  }
  object ListTagsOfResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTagsOfResourceResponse = ListTagsOfResourceResponse(tagsValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextTokenString]
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextTokenString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceResponse) extends ListTagsOfResourceResponse.ReadOnly {
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextTokenString] = scala.Option(impl.nextToken()).map(value => value: primitives.NextTokenString)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListTagsOfResourceResponse): ReadOnly = new Wrapper(impl)
  }
  case class LocalSecondaryIndex(indexName: primitives.IndexName, keySchema: Iterable[KeySchemaElement], projection: Projection) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndex = {
      import LocalSecondaryIndex.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndex.builder().indexName(indexName: java.lang.String).keySchema(keySchema.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).projection(projection.buildAwsValue()).build()
    }
    def asReadOnly: LocalSecondaryIndex.ReadOnly = LocalSecondaryIndex.wrap(buildAwsValue())
  }
  object LocalSecondaryIndex {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndex] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LocalSecondaryIndex = LocalSecondaryIndex(indexNameValue, keySchemaValue.map { item => 
        item.editable
      }, projectionValue.editable)
      def indexNameValue: primitives.IndexName
      def keySchemaValue: List[KeySchemaElement.ReadOnly]
      def projectionValue: Projection.ReadOnly
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def keySchema: ZIO[Any, Nothing, List[KeySchemaElement.ReadOnly]] = ZIO.succeed(keySchemaValue)
      def projection: ZIO[Any, Nothing, Projection.ReadOnly] = ZIO.succeed(projectionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndex) extends LocalSecondaryIndex.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def keySchemaValue: List[KeySchemaElement.ReadOnly] = impl.keySchema().asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList
      override def projectionValue: Projection.ReadOnly = Projection.wrap(impl.projection())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndex): ReadOnly = new Wrapper(impl)
  }
  case class LocalSecondaryIndexDescription(indexName: scala.Option[primitives.IndexName] = None, keySchema: scala.Option[Iterable[KeySchemaElement]] = None, projection: scala.Option[Projection] = None, indexSizeBytes: scala.Option[Long] = None, itemCount: scala.Option[Long] = None, indexArn: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexDescription = {
      import LocalSecondaryIndexDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexDescription.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(keySchema.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.keySchema).optionallyWith(projection.map(value => value.buildAwsValue()))(_.projection).optionallyWith(indexSizeBytes.map(value => value: java.lang.Long))(_.indexSizeBytes).optionallyWith(itemCount.map(value => value: java.lang.Long))(_.itemCount).optionallyWith(indexArn.map(value => value: java.lang.String))(_.indexArn).build()
    }
    def asReadOnly: LocalSecondaryIndexDescription.ReadOnly = LocalSecondaryIndexDescription.wrap(buildAwsValue())
  }
  object LocalSecondaryIndexDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LocalSecondaryIndexDescription = LocalSecondaryIndexDescription(indexNameValue.map(value => value), keySchemaValue.map(value => value.map { item => 
        item.editable
      }), projectionValue.map(value => value.editable), indexSizeBytesValue.map(value => value), itemCountValue.map(value => value), indexArnValue.map(value => value))
      def indexNameValue: scala.Option[primitives.IndexName]
      def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]]
      def projectionValue: scala.Option[Projection.ReadOnly]
      def indexSizeBytesValue: scala.Option[Long]
      def itemCountValue: scala.Option[Long]
      def indexArnValue: scala.Option[String]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def keySchema: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KeySchemaElement.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keySchema", keySchemaValue)
      def projection: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Projection.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projection", projectionValue)
      def indexSizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexSizeBytes", indexSizeBytesValue)
      def itemCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCount", itemCountValue)
      def indexArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexArn", indexArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexDescription) extends LocalSecondaryIndexDescription.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]] = scala.Option(impl.keySchema()).map(value => value.asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList)
      override def projectionValue: scala.Option[Projection.ReadOnly] = scala.Option(impl.projection()).map(value => Projection.wrap(value))
      override def indexSizeBytesValue: scala.Option[Long] = scala.Option(impl.indexSizeBytes()).map(value => value: Long)
      override def itemCountValue: scala.Option[Long] = scala.Option(impl.itemCount()).map(value => value: Long)
      override def indexArnValue: scala.Option[String] = scala.Option(impl.indexArn()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexDescription): ReadOnly = new Wrapper(impl)
  }
  type LocalSecondaryIndexDescriptionList = List[LocalSecondaryIndexDescription]
  case class LocalSecondaryIndexInfo(indexName: scala.Option[primitives.IndexName] = None, keySchema: scala.Option[Iterable[KeySchemaElement]] = None, projection: scala.Option[Projection] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexInfo = {
      import LocalSecondaryIndexInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexInfo.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(keySchema.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.keySchema).optionallyWith(projection.map(value => value.buildAwsValue()))(_.projection).build()
    }
    def asReadOnly: LocalSecondaryIndexInfo.ReadOnly = LocalSecondaryIndexInfo.wrap(buildAwsValue())
  }
  object LocalSecondaryIndexInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LocalSecondaryIndexInfo = LocalSecondaryIndexInfo(indexNameValue.map(value => value), keySchemaValue.map(value => value.map { item => 
        item.editable
      }), projectionValue.map(value => value.editable))
      def indexNameValue: scala.Option[primitives.IndexName]
      def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]]
      def projectionValue: scala.Option[Projection.ReadOnly]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def keySchema: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KeySchemaElement.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keySchema", keySchemaValue)
      def projection: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Projection.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projection", projectionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexInfo) extends LocalSecondaryIndexInfo.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]] = scala.Option(impl.keySchema()).map(value => value.asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList)
      override def projectionValue: scala.Option[Projection.ReadOnly] = scala.Option(impl.projection()).map(value => Projection.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.LocalSecondaryIndexInfo): ReadOnly = new Wrapper(impl)
  }
  type LocalSecondaryIndexList = List[LocalSecondaryIndex]
  type LocalSecondaryIndexes = List[LocalSecondaryIndexInfo]
  type MapAttributeValue = Map[primitives.AttributeName, AttributeValue]
  type NonKeyAttributeNameList = List[primitives.NonKeyAttributeName]
  type NumberSetAttributeValue = List[primitives.NumberAttributeValue]
  case class ParameterizedStatement(statement: primitives.PartiQLStatement, parameters: scala.Option[Iterable[AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ParameterizedStatement = {
      import ParameterizedStatement.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ParameterizedStatement.builder().statement(statement: java.lang.String).optionallyWith(parameters.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.parameters).build()
    }
    def asReadOnly: ParameterizedStatement.ReadOnly = ParameterizedStatement.wrap(buildAwsValue())
  }
  object ParameterizedStatement {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ParameterizedStatement] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ParameterizedStatement = ParameterizedStatement(statementValue, parametersValue.map(value => value.map { item => 
        item.editable
      }))
      def statementValue: primitives.PartiQLStatement
      def parametersValue: scala.Option[List[AttributeValue.ReadOnly]]
      def statement: ZIO[Any, Nothing, primitives.PartiQLStatement] = ZIO.succeed(statementValue)
      def parameters: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parameters", parametersValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ParameterizedStatement) extends ParameterizedStatement.ReadOnly {
      override def statementValue: primitives.PartiQLStatement = impl.statement(): primitives.PartiQLStatement
      override def parametersValue: scala.Option[List[AttributeValue.ReadOnly]] = scala.Option(impl.parameters()).map(value => value.asScala.map { item => 
        AttributeValue.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ParameterizedStatement): ReadOnly = new Wrapper(impl)
  }
  type ParameterizedStatements = List[ParameterizedStatement]
  type PartiQLBatchRequest = List[BatchStatementRequest]
  type PartiQLBatchResponse = List[BatchStatementResponse]
  case class PointInTimeRecoveryDescription(pointInTimeRecoveryStatus: scala.Option[PointInTimeRecoveryStatus] = None, earliestRestorableDateTime: scala.Option[primitives.Date] = None, latestRestorableDateTime: scala.Option[primitives.Date] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryDescription = {
      import PointInTimeRecoveryDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryDescription.builder().optionallyWith(pointInTimeRecoveryStatus.map(value => value.unwrap))(_.pointInTimeRecoveryStatus).optionallyWith(earliestRestorableDateTime.map(value => value: java.time.Instant))(_.earliestRestorableDateTime).optionallyWith(latestRestorableDateTime.map(value => value: java.time.Instant))(_.latestRestorableDateTime).build()
    }
    def asReadOnly: PointInTimeRecoveryDescription.ReadOnly = PointInTimeRecoveryDescription.wrap(buildAwsValue())
  }
  object PointInTimeRecoveryDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PointInTimeRecoveryDescription = PointInTimeRecoveryDescription(pointInTimeRecoveryStatusValue.map(value => value), earliestRestorableDateTimeValue.map(value => value), latestRestorableDateTimeValue.map(value => value))
      def pointInTimeRecoveryStatusValue: scala.Option[PointInTimeRecoveryStatus]
      def earliestRestorableDateTimeValue: scala.Option[primitives.Date]
      def latestRestorableDateTimeValue: scala.Option[primitives.Date]
      def pointInTimeRecoveryStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PointInTimeRecoveryStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pointInTimeRecoveryStatus", pointInTimeRecoveryStatusValue)
      def earliestRestorableDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("earliestRestorableDateTime", earliestRestorableDateTimeValue)
      def latestRestorableDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestRestorableDateTime", latestRestorableDateTimeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryDescription) extends PointInTimeRecoveryDescription.ReadOnly {
      override def pointInTimeRecoveryStatusValue: scala.Option[PointInTimeRecoveryStatus] = scala.Option(impl.pointInTimeRecoveryStatus()).map(value => PointInTimeRecoveryStatus.wrap(value))
      override def earliestRestorableDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.earliestRestorableDateTime()).map(value => value: primitives.Date)
      override def latestRestorableDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.latestRestorableDateTime()).map(value => value: primitives.Date)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryDescription): ReadOnly = new Wrapper(impl)
  }
  case class PointInTimeRecoverySpecification(pointInTimeRecoveryEnabled: primitives.BooleanObject) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoverySpecification = {
      import PointInTimeRecoverySpecification.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoverySpecification.builder().pointInTimeRecoveryEnabled(pointInTimeRecoveryEnabled: java.lang.Boolean).build()
    }
    def asReadOnly: PointInTimeRecoverySpecification.ReadOnly = PointInTimeRecoverySpecification.wrap(buildAwsValue())
  }
  object PointInTimeRecoverySpecification {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoverySpecification] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PointInTimeRecoverySpecification = PointInTimeRecoverySpecification(pointInTimeRecoveryEnabledValue)
      def pointInTimeRecoveryEnabledValue: primitives.BooleanObject
      def pointInTimeRecoveryEnabled: ZIO[Any, Nothing, primitives.BooleanObject] = ZIO.succeed(pointInTimeRecoveryEnabledValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoverySpecification) extends PointInTimeRecoverySpecification.ReadOnly { override def pointInTimeRecoveryEnabledValue: primitives.BooleanObject = impl.pointInTimeRecoveryEnabled(): primitives.BooleanObject }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoverySpecification): ReadOnly = new Wrapper(impl)
  }
  sealed trait PointInTimeRecoveryStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus }
  object PointInTimeRecoveryStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus): PointInTimeRecoveryStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus.ENABLED => ENABLED
      case software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus.DISABLED => DISABLED
    }
    final case object unknownToSdkVersion extends PointInTimeRecoveryStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus = software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLED extends PointInTimeRecoveryStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus = software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus.ENABLED }
    final case object DISABLED extends PointInTimeRecoveryStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus = software.amazon.awssdk.services.dynamodb.model.PointInTimeRecoveryStatus.DISABLED }
  }
  type PreparedStatementParameters = List[AttributeValue]
  case class Projection(projectionType: scala.Option[ProjectionType] = None, nonKeyAttributes: scala.Option[Iterable[primitives.NonKeyAttributeName]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Projection = {
      import Projection.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Projection.builder().optionallyWith(projectionType.map(value => value.unwrap))(_.projectionType).optionallyWith(nonKeyAttributes.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.nonKeyAttributes).build()
    }
    def asReadOnly: Projection.ReadOnly = Projection.wrap(buildAwsValue())
  }
  object Projection {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Projection] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Projection = Projection(projectionTypeValue.map(value => value), nonKeyAttributesValue.map(value => value))
      def projectionTypeValue: scala.Option[ProjectionType]
      def nonKeyAttributesValue: scala.Option[List[primitives.NonKeyAttributeName]]
      def projectionType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProjectionType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projectionType", projectionTypeValue)
      def nonKeyAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.NonKeyAttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nonKeyAttributes", nonKeyAttributesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Projection) extends Projection.ReadOnly {
      override def projectionTypeValue: scala.Option[ProjectionType] = scala.Option(impl.projectionType()).map(value => ProjectionType.wrap(value))
      override def nonKeyAttributesValue: scala.Option[List[primitives.NonKeyAttributeName]] = scala.Option(impl.nonKeyAttributes()).map(value => value.asScala.map { item => 
        item: primitives.NonKeyAttributeName
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Projection): ReadOnly = new Wrapper(impl)
  }
  sealed trait ProjectionType { def unwrap: software.amazon.awssdk.services.dynamodb.model.ProjectionType }
  object ProjectionType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ProjectionType): ProjectionType = value match {
      case software.amazon.awssdk.services.dynamodb.model.ProjectionType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ProjectionType.ALL => ALL
      case software.amazon.awssdk.services.dynamodb.model.ProjectionType.KEYS_ONLY => KEYS_ONLY
      case software.amazon.awssdk.services.dynamodb.model.ProjectionType.INCLUDE => INCLUDE
    }
    final case object unknownToSdkVersion extends ProjectionType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ProjectionType = software.amazon.awssdk.services.dynamodb.model.ProjectionType.UNKNOWN_TO_SDK_VERSION }
    final case object ALL extends ProjectionType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ProjectionType = software.amazon.awssdk.services.dynamodb.model.ProjectionType.ALL }
    final case object KEYS_ONLY extends ProjectionType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ProjectionType = software.amazon.awssdk.services.dynamodb.model.ProjectionType.KEYS_ONLY }
    final case object INCLUDE extends ProjectionType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ProjectionType = software.amazon.awssdk.services.dynamodb.model.ProjectionType.INCLUDE }
  }
  case class ProvisionedThroughput(readCapacityUnits: primitives.PositiveLongObject, writeCapacityUnits: primitives.PositiveLongObject) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput = {
      import ProvisionedThroughput.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput.builder().readCapacityUnits(readCapacityUnits: java.lang.Long).writeCapacityUnits(writeCapacityUnits: java.lang.Long).build()
    }
    def asReadOnly: ProvisionedThroughput.ReadOnly = ProvisionedThroughput.wrap(buildAwsValue())
  }
  object ProvisionedThroughput {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ProvisionedThroughput = ProvisionedThroughput(readCapacityUnitsValue, writeCapacityUnitsValue)
      def readCapacityUnitsValue: primitives.PositiveLongObject
      def writeCapacityUnitsValue: primitives.PositiveLongObject
      def readCapacityUnits: ZIO[Any, Nothing, primitives.PositiveLongObject] = ZIO.succeed(readCapacityUnitsValue)
      def writeCapacityUnits: ZIO[Any, Nothing, primitives.PositiveLongObject] = ZIO.succeed(writeCapacityUnitsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput) extends ProvisionedThroughput.ReadOnly {
      override def readCapacityUnitsValue: primitives.PositiveLongObject = impl.readCapacityUnits(): primitives.PositiveLongObject
      override def writeCapacityUnitsValue: primitives.PositiveLongObject = impl.writeCapacityUnits(): primitives.PositiveLongObject
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput): ReadOnly = new Wrapper(impl)
  }
  case class ProvisionedThroughputDescription(lastIncreaseDateTime: scala.Option[primitives.Date] = None, lastDecreaseDateTime: scala.Option[primitives.Date] = None, numberOfDecreasesToday: scala.Option[primitives.PositiveLongObject] = None, readCapacityUnits: scala.Option[primitives.NonNegativeLongObject] = None, writeCapacityUnits: scala.Option[primitives.NonNegativeLongObject] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputDescription = {
      import ProvisionedThroughputDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputDescription.builder().optionallyWith(lastIncreaseDateTime.map(value => value: java.time.Instant))(_.lastIncreaseDateTime).optionallyWith(lastDecreaseDateTime.map(value => value: java.time.Instant))(_.lastDecreaseDateTime).optionallyWith(numberOfDecreasesToday.map(value => value: java.lang.Long))(_.numberOfDecreasesToday).optionallyWith(readCapacityUnits.map(value => value: java.lang.Long))(_.readCapacityUnits).optionallyWith(writeCapacityUnits.map(value => value: java.lang.Long))(_.writeCapacityUnits).build()
    }
    def asReadOnly: ProvisionedThroughputDescription.ReadOnly = ProvisionedThroughputDescription.wrap(buildAwsValue())
  }
  object ProvisionedThroughputDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ProvisionedThroughputDescription = ProvisionedThroughputDescription(lastIncreaseDateTimeValue.map(value => value), lastDecreaseDateTimeValue.map(value => value), numberOfDecreasesTodayValue.map(value => value), readCapacityUnitsValue.map(value => value), writeCapacityUnitsValue.map(value => value))
      def lastIncreaseDateTimeValue: scala.Option[primitives.Date]
      def lastDecreaseDateTimeValue: scala.Option[primitives.Date]
      def numberOfDecreasesTodayValue: scala.Option[primitives.PositiveLongObject]
      def readCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject]
      def writeCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject]
      def lastIncreaseDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastIncreaseDateTime", lastIncreaseDateTimeValue)
      def lastDecreaseDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastDecreaseDateTime", lastDecreaseDateTimeValue)
      def numberOfDecreasesToday: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("numberOfDecreasesToday", numberOfDecreasesTodayValue)
      def readCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonNegativeLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("readCapacityUnits", readCapacityUnitsValue)
      def writeCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonNegativeLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("writeCapacityUnits", writeCapacityUnitsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputDescription) extends ProvisionedThroughputDescription.ReadOnly {
      override def lastIncreaseDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.lastIncreaseDateTime()).map(value => value: primitives.Date)
      override def lastDecreaseDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.lastDecreaseDateTime()).map(value => value: primitives.Date)
      override def numberOfDecreasesTodayValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.numberOfDecreasesToday()).map(value => value: primitives.PositiveLongObject)
      override def readCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject] = scala.Option(impl.readCapacityUnits()).map(value => value: primitives.NonNegativeLongObject)
      override def writeCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject] = scala.Option(impl.writeCapacityUnits()).map(value => value: primitives.NonNegativeLongObject)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputDescription): ReadOnly = new Wrapper(impl)
  }
  case class ProvisionedThroughputOverride(readCapacityUnits: scala.Option[primitives.PositiveLongObject] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputOverride = {
      import ProvisionedThroughputOverride.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputOverride.builder().optionallyWith(readCapacityUnits.map(value => value: java.lang.Long))(_.readCapacityUnits).build()
    }
    def asReadOnly: ProvisionedThroughputOverride.ReadOnly = ProvisionedThroughputOverride.wrap(buildAwsValue())
  }
  object ProvisionedThroughputOverride {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputOverride] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ProvisionedThroughputOverride = ProvisionedThroughputOverride(readCapacityUnitsValue.map(value => value))
      def readCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def readCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("readCapacityUnits", readCapacityUnitsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputOverride) extends ProvisionedThroughputOverride.ReadOnly { override def readCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.readCapacityUnits()).map(value => value: primitives.PositiveLongObject) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughputOverride): ReadOnly = new Wrapper(impl)
  }
  case class Put(item: Map[primitives.AttributeName, AttributeValue], tableName: primitives.TableName, conditionExpression: scala.Option[primitives.ConditionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None, returnValuesOnConditionCheckFailure: scala.Option[ReturnValuesOnConditionCheckFailure] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Put = {
      import Put.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Put.builder().item(item.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).tableName(tableName: java.lang.String).optionallyWith(conditionExpression.map(value => value: java.lang.String))(_.conditionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).optionallyWith(returnValuesOnConditionCheckFailure.map(value => value.unwrap))(_.returnValuesOnConditionCheckFailure).build()
    }
    def asReadOnly: Put.ReadOnly = Put.wrap(buildAwsValue())
  }
  object Put {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Put] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Put = Put(itemValue.map({
        case (key, value) =>
          key -> value.editable
      }), tableNameValue, conditionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), returnValuesOnConditionCheckFailureValue.map(value => value))
      def itemValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def tableNameValue: primitives.TableName
      def conditionExpressionValue: scala.Option[primitives.ConditionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure]
      def item: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(itemValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def conditionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionExpression", conditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
      def returnValuesOnConditionCheckFailure: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnValuesOnConditionCheckFailure] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnValuesOnConditionCheckFailure", returnValuesOnConditionCheckFailureValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Put) extends Put.ReadOnly {
      override def itemValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.item().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def conditionExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.conditionExpression()).map(value => value: primitives.ConditionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
      override def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure] = scala.Option(impl.returnValuesOnConditionCheckFailure()).map(value => ReturnValuesOnConditionCheckFailure.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Put): ReadOnly = new Wrapper(impl)
  }
  type PutItemInputAttributeMap = Map[primitives.AttributeName, AttributeValue]
  case class PutItemRequest(tableName: primitives.TableName, item: Map[primitives.AttributeName, AttributeValue], expected: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue]] = None, returnValues: scala.Option[ReturnValue] = None, returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, returnItemCollectionMetrics: scala.Option[ReturnItemCollectionMetrics] = None, conditionalOperator: scala.Option[ConditionalOperator] = None, conditionExpression: scala.Option[primitives.ConditionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.PutItemRequest = {
      import PutItemRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.PutItemRequest.builder().tableName(tableName: java.lang.String).item(item.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).optionallyWith(expected.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expected).optionallyWith(returnValues.map(value => value.unwrap))(_.returnValues).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(returnItemCollectionMetrics.map(value => value.unwrap))(_.returnItemCollectionMetrics).optionallyWith(conditionalOperator.map(value => value.unwrap))(_.conditionalOperator).optionallyWith(conditionExpression.map(value => value: java.lang.String))(_.conditionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).build()
    }
    def asReadOnly: PutItemRequest.ReadOnly = PutItemRequest.wrap(buildAwsValue())
  }
  object PutItemRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.PutItemRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PutItemRequest = PutItemRequest(tableNameValue, itemValue.map({
        case (key, value) =>
          key -> value.editable
      }), expectedValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), returnValuesValue.map(value => value), returnConsumedCapacityValue.map(value => value), returnItemCollectionMetricsValue.map(value => value), conditionalOperatorValue.map(value => value), conditionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })))
      def tableNameValue: primitives.TableName
      def itemValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def expectedValue: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]]
      def returnValuesValue: scala.Option[ReturnValue]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics]
      def conditionalOperatorValue: scala.Option[ConditionalOperator]
      def conditionExpressionValue: scala.Option[primitives.ConditionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def item: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(itemValue)
      def expected: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expected", expectedValue)
      def returnValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnValues", returnValuesValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def returnItemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnItemCollectionMetrics] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnItemCollectionMetrics", returnItemCollectionMetricsValue)
      def conditionalOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConditionalOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionalOperator", conditionalOperatorValue)
      def conditionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionExpression", conditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.PutItemRequest) extends PutItemRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def itemValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.item().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def expectedValue: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]] = scala.Option(impl.expected()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> ExpectedAttributeValue.wrap(value)
      }).toMap)
      override def returnValuesValue: scala.Option[ReturnValue] = scala.Option(impl.returnValues()).map(value => ReturnValue.wrap(value))
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics] = scala.Option(impl.returnItemCollectionMetrics()).map(value => ReturnItemCollectionMetrics.wrap(value))
      override def conditionalOperatorValue: scala.Option[ConditionalOperator] = scala.Option(impl.conditionalOperator()).map(value => ConditionalOperator.wrap(value))
      override def conditionExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.conditionExpression()).map(value => value: primitives.ConditionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.PutItemRequest): ReadOnly = new Wrapper(impl)
  }
  case class PutItemResponse(attributes: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, consumedCapacity: scala.Option[ConsumedCapacity] = None, itemCollectionMetrics: scala.Option[ItemCollectionMetrics] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.PutItemResponse = {
      import PutItemResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.PutItemResponse.builder().optionallyWith(attributes.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.attributes).optionallyWith(consumedCapacity.map(value => value.buildAwsValue()))(_.consumedCapacity).optionallyWith(itemCollectionMetrics.map(value => value.buildAwsValue()))(_.itemCollectionMetrics).build()
    }
    def asReadOnly: PutItemResponse.ReadOnly = PutItemResponse.wrap(buildAwsValue())
  }
  object PutItemResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.PutItemResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PutItemResponse = PutItemResponse(attributesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consumedCapacityValue.map(value => value.editable), itemCollectionMetricsValue.map(value => value.editable))
      def attributesValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly]
      def itemCollectionMetricsValue: scala.Option[ItemCollectionMetrics.ReadOnly]
      def attributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributes", attributesValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConsumedCapacity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
      def itemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ItemCollectionMetrics.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCollectionMetrics", itemCollectionMetricsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.PutItemResponse) extends PutItemResponse.ReadOnly {
      override def attributesValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.attributes()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly] = scala.Option(impl.consumedCapacity()).map(value => ConsumedCapacity.wrap(value))
      override def itemCollectionMetricsValue: scala.Option[ItemCollectionMetrics.ReadOnly] = scala.Option(impl.itemCollectionMetrics()).map(value => ItemCollectionMetrics.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.PutItemResponse): ReadOnly = new Wrapper(impl)
  }
  case class PutRequest(item: Map[primitives.AttributeName, AttributeValue]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.PutRequest = {
      import PutRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.PutRequest.builder().item(item.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).build()
    }
    def asReadOnly: PutRequest.ReadOnly = PutRequest.wrap(buildAwsValue())
  }
  object PutRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.PutRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PutRequest = PutRequest(itemValue.map({
        case (key, value) =>
          key -> value.editable
      }))
      def itemValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def item: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(itemValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.PutRequest) extends PutRequest.ReadOnly {
      override def itemValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.item().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.PutRequest): ReadOnly = new Wrapper(impl)
  }
  case class QueryRequest(tableName: primitives.TableName, indexName: scala.Option[primitives.IndexName] = None, select: scala.Option[Select] = None, attributesToGet: scala.Option[Iterable[primitives.AttributeName]] = None, limit: scala.Option[primitives.PositiveIntegerObject] = None, consistentRead: scala.Option[primitives.ConsistentRead] = None, keyConditions: scala.Option[Map[primitives.AttributeName, Condition]] = None, queryFilter: scala.Option[Map[primitives.AttributeName, Condition]] = None, conditionalOperator: scala.Option[ConditionalOperator] = None, scanIndexForward: scala.Option[primitives.BooleanObject] = None, exclusiveStartKey: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, projectionExpression: scala.Option[primitives.ProjectionExpression] = None, filterExpression: scala.Option[primitives.ConditionExpression] = None, keyConditionExpression: scala.Option[primitives.KeyExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.QueryRequest = {
      import QueryRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.QueryRequest.builder().tableName(tableName: java.lang.String).optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(select.map(value => value.unwrap))(_.select).optionallyWith(attributesToGet.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.attributesToGet).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).optionallyWith(consistentRead.map(value => value: java.lang.Boolean))(_.consistentRead).optionallyWith(keyConditions.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.keyConditions).optionallyWith(queryFilter.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.queryFilter).optionallyWith(conditionalOperator.map(value => value.unwrap))(_.conditionalOperator).optionallyWith(scanIndexForward.map(value => value: java.lang.Boolean))(_.scanIndexForward).optionallyWith(exclusiveStartKey.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.exclusiveStartKey).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(projectionExpression.map(value => value: java.lang.String))(_.projectionExpression).optionallyWith(filterExpression.map(value => value: java.lang.String))(_.filterExpression).optionallyWith(keyConditionExpression.map(value => value: java.lang.String))(_.keyConditionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).build()
    }
    def asReadOnly: QueryRequest.ReadOnly = QueryRequest.wrap(buildAwsValue())
  }
  object QueryRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.QueryRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: QueryRequest = QueryRequest(tableNameValue, indexNameValue.map(value => value), selectValue.map(value => value), attributesToGetValue.map(value => value), limitValue.map(value => value), consistentReadValue.map(value => value), keyConditionsValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), queryFilterValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), conditionalOperatorValue.map(value => value), scanIndexForwardValue.map(value => value), exclusiveStartKeyValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), returnConsumedCapacityValue.map(value => value), projectionExpressionValue.map(value => value), filterExpressionValue.map(value => value), keyConditionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })))
      def tableNameValue: primitives.TableName
      def indexNameValue: scala.Option[primitives.IndexName]
      def selectValue: scala.Option[Select]
      def attributesToGetValue: scala.Option[List[primitives.AttributeName]]
      def limitValue: scala.Option[primitives.PositiveIntegerObject]
      def consistentReadValue: scala.Option[primitives.ConsistentRead]
      def keyConditionsValue: scala.Option[Map[primitives.AttributeName, Condition.ReadOnly]]
      def queryFilterValue: scala.Option[Map[primitives.AttributeName, Condition.ReadOnly]]
      def conditionalOperatorValue: scala.Option[ConditionalOperator]
      def scanIndexForwardValue: scala.Option[primitives.BooleanObject]
      def exclusiveStartKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def projectionExpressionValue: scala.Option[primitives.ProjectionExpression]
      def filterExpressionValue: scala.Option[primitives.ConditionExpression]
      def keyConditionExpressionValue: scala.Option[primitives.KeyExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def select: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Select] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("select", selectValue)
      def attributesToGet: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributesToGet", attributesToGetValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveIntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
      def consistentRead: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsistentRead] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consistentRead", consistentReadValue)
      def keyConditions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, Condition.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyConditions", keyConditionsValue)
      def queryFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, Condition.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("queryFilter", queryFilterValue)
      def conditionalOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConditionalOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionalOperator", conditionalOperatorValue)
      def scanIndexForward: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scanIndexForward", scanIndexForwardValue)
      def exclusiveStartKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exclusiveStartKey", exclusiveStartKeyValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def projectionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ProjectionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projectionExpression", projectionExpressionValue)
      def filterExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("filterExpression", filterExpressionValue)
      def keyConditionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KeyExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyConditionExpression", keyConditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.QueryRequest) extends QueryRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def selectValue: scala.Option[Select] = scala.Option(impl.select()).map(value => Select.wrap(value))
      override def attributesToGetValue: scala.Option[List[primitives.AttributeName]] = scala.Option(impl.attributesToGet()).map(value => value.asScala.map { item => 
        item: primitives.AttributeName
      }.toList)
      override def limitValue: scala.Option[primitives.PositiveIntegerObject] = scala.Option(impl.limit()).map(value => value: primitives.PositiveIntegerObject)
      override def consistentReadValue: scala.Option[primitives.ConsistentRead] = scala.Option(impl.consistentRead()).map(value => value: primitives.ConsistentRead)
      override def keyConditionsValue: scala.Option[Map[primitives.AttributeName, Condition.ReadOnly]] = scala.Option(impl.keyConditions()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> Condition.wrap(value)
      }).toMap)
      override def queryFilterValue: scala.Option[Map[primitives.AttributeName, Condition.ReadOnly]] = scala.Option(impl.queryFilter()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> Condition.wrap(value)
      }).toMap)
      override def conditionalOperatorValue: scala.Option[ConditionalOperator] = scala.Option(impl.conditionalOperator()).map(value => ConditionalOperator.wrap(value))
      override def scanIndexForwardValue: scala.Option[primitives.BooleanObject] = scala.Option(impl.scanIndexForward()).map(value => value: primitives.BooleanObject)
      override def exclusiveStartKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.exclusiveStartKey()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def projectionExpressionValue: scala.Option[primitives.ProjectionExpression] = scala.Option(impl.projectionExpression()).map(value => value: primitives.ProjectionExpression)
      override def filterExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.filterExpression()).map(value => value: primitives.ConditionExpression)
      override def keyConditionExpressionValue: scala.Option[primitives.KeyExpression] = scala.Option(impl.keyConditionExpression()).map(value => value: primitives.KeyExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.QueryRequest): ReadOnly = new Wrapper(impl)
  }
  case class QueryResponse(items: scala.Option[Iterable[Map[primitives.AttributeName, AttributeValue]]] = None, count: scala.Option[primitives.Integer] = None, scannedCount: scala.Option[primitives.Integer] = None, lastEvaluatedKey: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, consumedCapacity: scala.Option[ConsumedCapacity] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.QueryResponse = {
      import QueryResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.QueryResponse.builder().optionallyWith(items.map(value => value.map { item => 
        item.map({
          case (key, value) =>
            (key: java.lang.String) -> value.buildAwsValue()
        }).asJava
      }.asJavaCollection))(_.items).optionallyWith(count.map(value => value: java.lang.Integer))(_.count).optionallyWith(scannedCount.map(value => value: java.lang.Integer))(_.scannedCount).optionallyWith(lastEvaluatedKey.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.lastEvaluatedKey).optionallyWith(consumedCapacity.map(value => value.buildAwsValue()))(_.consumedCapacity).build()
    }
    def asReadOnly: QueryResponse.ReadOnly = QueryResponse.wrap(buildAwsValue())
  }
  object QueryResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.QueryResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: QueryResponse = QueryResponse(itemsValue.map(value => value.map { item => 
        item.map({
          case (key, value) =>
            key -> value.editable
        })
      }), countValue.map(value => value), scannedCountValue.map(value => value), lastEvaluatedKeyValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consumedCapacityValue.map(value => value.editable))
      def itemsValue: scala.Option[List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]]
      def countValue: scala.Option[primitives.Integer]
      def scannedCountValue: scala.Option[primitives.Integer]
      def lastEvaluatedKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly]
      def items: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("items", itemsValue)
      def count: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("count", countValue)
      def scannedCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scannedCount", scannedCountValue)
      def lastEvaluatedKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastEvaluatedKey", lastEvaluatedKeyValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConsumedCapacity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.QueryResponse) extends QueryResponse.ReadOnly {
      override def itemsValue: scala.Option[List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]] = scala.Option(impl.items()).map(value => value.asScala.map { item => 
        item.asScala.map({
          case (key, value) =>
            (key: primitives.AttributeName) -> AttributeValue.wrap(value)
        }).toMap
      }.toList)
      override def countValue: scala.Option[primitives.Integer] = scala.Option(impl.count()).map(value => value: primitives.Integer)
      override def scannedCountValue: scala.Option[primitives.Integer] = scala.Option(impl.scannedCount()).map(value => value: primitives.Integer)
      override def lastEvaluatedKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.lastEvaluatedKey()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly] = scala.Option(impl.consumedCapacity()).map(value => ConsumedCapacity.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.QueryResponse): ReadOnly = new Wrapper(impl)
  }
  case class Replica(regionName: scala.Option[primitives.RegionName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Replica = {
      import Replica.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Replica.builder().optionallyWith(regionName.map(value => value: java.lang.String))(_.regionName).build()
    }
    def asReadOnly: Replica.ReadOnly = Replica.wrap(buildAwsValue())
  }
  object Replica {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Replica] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Replica = Replica(regionNameValue.map(value => value))
      def regionNameValue: scala.Option[primitives.RegionName]
      def regionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regionName", regionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Replica) extends Replica.ReadOnly { override def regionNameValue: scala.Option[primitives.RegionName] = scala.Option(impl.regionName()).map(value => value: primitives.RegionName) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Replica): ReadOnly = new Wrapper(impl)
  }
  case class ReplicaAutoScalingDescription(regionName: scala.Option[primitives.RegionName] = None, globalSecondaryIndexes: scala.Option[Iterable[ReplicaGlobalSecondaryIndexAutoScalingDescription]] = None, replicaProvisionedReadCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None, replicaProvisionedWriteCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None, replicaStatus: scala.Option[ReplicaStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingDescription = {
      import ReplicaAutoScalingDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingDescription.builder().optionallyWith(regionName.map(value => value: java.lang.String))(_.regionName).optionallyWith(globalSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexes).optionallyWith(replicaProvisionedReadCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.replicaProvisionedReadCapacityAutoScalingSettings).optionallyWith(replicaProvisionedWriteCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.replicaProvisionedWriteCapacityAutoScalingSettings).optionallyWith(replicaStatus.map(value => value.unwrap))(_.replicaStatus).build()
    }
    def asReadOnly: ReplicaAutoScalingDescription.ReadOnly = ReplicaAutoScalingDescription.wrap(buildAwsValue())
  }
  object ReplicaAutoScalingDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaAutoScalingDescription = ReplicaAutoScalingDescription(regionNameValue.map(value => value), globalSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), replicaProvisionedReadCapacityAutoScalingSettingsValue.map(value => value.editable), replicaProvisionedWriteCapacityAutoScalingSettingsValue.map(value => value.editable), replicaStatusValue.map(value => value))
      def regionNameValue: scala.Option[primitives.RegionName]
      def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndexAutoScalingDescription.ReadOnly]]
      def replicaProvisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def replicaProvisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def replicaStatusValue: scala.Option[ReplicaStatus]
      def regionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regionName", regionNameValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaGlobalSecondaryIndexAutoScalingDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
      def replicaProvisionedReadCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedReadCapacityAutoScalingSettings", replicaProvisionedReadCapacityAutoScalingSettingsValue)
      def replicaProvisionedWriteCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedWriteCapacityAutoScalingSettings", replicaProvisionedWriteCapacityAutoScalingSettingsValue)
      def replicaStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReplicaStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaStatus", replicaStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingDescription) extends ReplicaAutoScalingDescription.ReadOnly {
      override def regionNameValue: scala.Option[primitives.RegionName] = scala.Option(impl.regionName()).map(value => value: primitives.RegionName)
      override def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndexAutoScalingDescription.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map { item => 
        ReplicaGlobalSecondaryIndexAutoScalingDescription.wrap(item)
      }.toList)
      override def replicaProvisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.replicaProvisionedReadCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
      override def replicaProvisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.replicaProvisionedWriteCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
      override def replicaStatusValue: scala.Option[ReplicaStatus] = scala.Option(impl.replicaStatus()).map(value => ReplicaStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingDescription): ReadOnly = new Wrapper(impl)
  }
  type ReplicaAutoScalingDescriptionList = List[ReplicaAutoScalingDescription]
  case class ReplicaAutoScalingUpdate(regionName: primitives.RegionName, replicaGlobalSecondaryIndexUpdates: scala.Option[Iterable[ReplicaGlobalSecondaryIndexAutoScalingUpdate]] = None, replicaProvisionedReadCapacityAutoScalingUpdate: scala.Option[AutoScalingSettingsUpdate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingUpdate = {
      import ReplicaAutoScalingUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingUpdate.builder().regionName(regionName: java.lang.String).optionallyWith(replicaGlobalSecondaryIndexUpdates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaGlobalSecondaryIndexUpdates).optionallyWith(replicaProvisionedReadCapacityAutoScalingUpdate.map(value => value.buildAwsValue()))(_.replicaProvisionedReadCapacityAutoScalingUpdate).build()
    }
    def asReadOnly: ReplicaAutoScalingUpdate.ReadOnly = ReplicaAutoScalingUpdate.wrap(buildAwsValue())
  }
  object ReplicaAutoScalingUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaAutoScalingUpdate = ReplicaAutoScalingUpdate(regionNameValue, replicaGlobalSecondaryIndexUpdatesValue.map(value => value.map { item => 
        item.editable
      }), replicaProvisionedReadCapacityAutoScalingUpdateValue.map(value => value.editable))
      def regionNameValue: primitives.RegionName
      def replicaGlobalSecondaryIndexUpdatesValue: scala.Option[List[ReplicaGlobalSecondaryIndexAutoScalingUpdate.ReadOnly]]
      def replicaProvisionedReadCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
      def replicaGlobalSecondaryIndexUpdates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaGlobalSecondaryIndexAutoScalingUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaGlobalSecondaryIndexUpdates", replicaGlobalSecondaryIndexUpdatesValue)
      def replicaProvisionedReadCapacityAutoScalingUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedReadCapacityAutoScalingUpdate", replicaProvisionedReadCapacityAutoScalingUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingUpdate) extends ReplicaAutoScalingUpdate.ReadOnly {
      override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName
      override def replicaGlobalSecondaryIndexUpdatesValue: scala.Option[List[ReplicaGlobalSecondaryIndexAutoScalingUpdate.ReadOnly]] = scala.Option(impl.replicaGlobalSecondaryIndexUpdates()).map(value => value.asScala.map { item => 
        ReplicaGlobalSecondaryIndexAutoScalingUpdate.wrap(item)
      }.toList)
      override def replicaProvisionedReadCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.replicaProvisionedReadCapacityAutoScalingUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaAutoScalingUpdate): ReadOnly = new Wrapper(impl)
  }
  type ReplicaAutoScalingUpdateList = List[ReplicaAutoScalingUpdate]
  case class ReplicaDescription(regionName: scala.Option[primitives.RegionName] = None, replicaStatus: scala.Option[ReplicaStatus] = None, replicaStatusDescription: scala.Option[primitives.ReplicaStatusDescription] = None, replicaStatusPercentProgress: scala.Option[primitives.ReplicaStatusPercentProgress] = None, kmsMasterKeyId: scala.Option[primitives.KMSMasterKeyId] = None, provisionedThroughputOverride: scala.Option[ProvisionedThroughputOverride] = None, globalSecondaryIndexes: scala.Option[Iterable[ReplicaGlobalSecondaryIndexDescription]] = None, replicaInaccessibleDateTime: scala.Option[primitives.Date] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaDescription = {
      import ReplicaDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaDescription.builder().optionallyWith(regionName.map(value => value: java.lang.String))(_.regionName).optionallyWith(replicaStatus.map(value => value.unwrap))(_.replicaStatus).optionallyWith(replicaStatusDescription.map(value => value: java.lang.String))(_.replicaStatusDescription).optionallyWith(replicaStatusPercentProgress.map(value => value: java.lang.String))(_.replicaStatusPercentProgress).optionallyWith(kmsMasterKeyId.map(value => value: java.lang.String))(_.kmsMasterKeyId).optionallyWith(provisionedThroughputOverride.map(value => value.buildAwsValue()))(_.provisionedThroughputOverride).optionallyWith(globalSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexes).optionallyWith(replicaInaccessibleDateTime.map(value => value: java.time.Instant))(_.replicaInaccessibleDateTime).build()
    }
    def asReadOnly: ReplicaDescription.ReadOnly = ReplicaDescription.wrap(buildAwsValue())
  }
  object ReplicaDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaDescription = ReplicaDescription(regionNameValue.map(value => value), replicaStatusValue.map(value => value), replicaStatusDescriptionValue.map(value => value), replicaStatusPercentProgressValue.map(value => value), kmsMasterKeyIdValue.map(value => value), provisionedThroughputOverrideValue.map(value => value.editable), globalSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), replicaInaccessibleDateTimeValue.map(value => value))
      def regionNameValue: scala.Option[primitives.RegionName]
      def replicaStatusValue: scala.Option[ReplicaStatus]
      def replicaStatusDescriptionValue: scala.Option[primitives.ReplicaStatusDescription]
      def replicaStatusPercentProgressValue: scala.Option[primitives.ReplicaStatusPercentProgress]
      def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId]
      def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly]
      def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndexDescription.ReadOnly]]
      def replicaInaccessibleDateTimeValue: scala.Option[primitives.Date]
      def regionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regionName", regionNameValue)
      def replicaStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReplicaStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaStatus", replicaStatusValue)
      def replicaStatusDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReplicaStatusDescription] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaStatusDescription", replicaStatusDescriptionValue)
      def replicaStatusPercentProgress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReplicaStatusPercentProgress] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaStatusPercentProgress", replicaStatusPercentProgressValue)
      def kmsMasterKeyId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSMasterKeyId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsMasterKeyId", kmsMasterKeyIdValue)
      def provisionedThroughputOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughputOverride.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughputOverride", provisionedThroughputOverrideValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaGlobalSecondaryIndexDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
      def replicaInaccessibleDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaInaccessibleDateTime", replicaInaccessibleDateTimeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaDescription) extends ReplicaDescription.ReadOnly {
      override def regionNameValue: scala.Option[primitives.RegionName] = scala.Option(impl.regionName()).map(value => value: primitives.RegionName)
      override def replicaStatusValue: scala.Option[ReplicaStatus] = scala.Option(impl.replicaStatus()).map(value => ReplicaStatus.wrap(value))
      override def replicaStatusDescriptionValue: scala.Option[primitives.ReplicaStatusDescription] = scala.Option(impl.replicaStatusDescription()).map(value => value: primitives.ReplicaStatusDescription)
      override def replicaStatusPercentProgressValue: scala.Option[primitives.ReplicaStatusPercentProgress] = scala.Option(impl.replicaStatusPercentProgress()).map(value => value: primitives.ReplicaStatusPercentProgress)
      override def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId] = scala.Option(impl.kmsMasterKeyId()).map(value => value: primitives.KMSMasterKeyId)
      override def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly] = scala.Option(impl.provisionedThroughputOverride()).map(value => ProvisionedThroughputOverride.wrap(value))
      override def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndexDescription.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map { item => 
        ReplicaGlobalSecondaryIndexDescription.wrap(item)
      }.toList)
      override def replicaInaccessibleDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.replicaInaccessibleDateTime()).map(value => value: primitives.Date)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaDescription): ReadOnly = new Wrapper(impl)
  }
  type ReplicaDescriptionList = List[ReplicaDescription]
  case class ReplicaGlobalSecondaryIndex(indexName: primitives.IndexName, provisionedThroughputOverride: scala.Option[ProvisionedThroughputOverride] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndex = {
      import ReplicaGlobalSecondaryIndex.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndex.builder().indexName(indexName: java.lang.String).optionallyWith(provisionedThroughputOverride.map(value => value.buildAwsValue()))(_.provisionedThroughputOverride).build()
    }
    def asReadOnly: ReplicaGlobalSecondaryIndex.ReadOnly = ReplicaGlobalSecondaryIndex.wrap(buildAwsValue())
  }
  object ReplicaGlobalSecondaryIndex {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndex] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaGlobalSecondaryIndex = ReplicaGlobalSecondaryIndex(indexNameValue, provisionedThroughputOverrideValue.map(value => value.editable))
      def indexNameValue: primitives.IndexName
      def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly]
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def provisionedThroughputOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughputOverride.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughputOverride", provisionedThroughputOverrideValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndex) extends ReplicaGlobalSecondaryIndex.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly] = scala.Option(impl.provisionedThroughputOverride()).map(value => ProvisionedThroughputOverride.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndex): ReadOnly = new Wrapper(impl)
  }
  case class ReplicaGlobalSecondaryIndexAutoScalingDescription(indexName: scala.Option[primitives.IndexName] = None, indexStatus: scala.Option[IndexStatus] = None, provisionedReadCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None, provisionedWriteCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingDescription = {
      import ReplicaGlobalSecondaryIndexAutoScalingDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingDescription.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(indexStatus.map(value => value.unwrap))(_.indexStatus).optionallyWith(provisionedReadCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.provisionedReadCapacityAutoScalingSettings).optionallyWith(provisionedWriteCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.provisionedWriteCapacityAutoScalingSettings).build()
    }
    def asReadOnly: ReplicaGlobalSecondaryIndexAutoScalingDescription.ReadOnly = ReplicaGlobalSecondaryIndexAutoScalingDescription.wrap(buildAwsValue())
  }
  object ReplicaGlobalSecondaryIndexAutoScalingDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaGlobalSecondaryIndexAutoScalingDescription = ReplicaGlobalSecondaryIndexAutoScalingDescription(indexNameValue.map(value => value), indexStatusValue.map(value => value), provisionedReadCapacityAutoScalingSettingsValue.map(value => value.editable), provisionedWriteCapacityAutoScalingSettingsValue.map(value => value.editable))
      def indexNameValue: scala.Option[primitives.IndexName]
      def indexStatusValue: scala.Option[IndexStatus]
      def provisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def provisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def indexStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IndexStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexStatus", indexStatusValue)
      def provisionedReadCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedReadCapacityAutoScalingSettings", provisionedReadCapacityAutoScalingSettingsValue)
      def provisionedWriteCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedWriteCapacityAutoScalingSettings", provisionedWriteCapacityAutoScalingSettingsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingDescription) extends ReplicaGlobalSecondaryIndexAutoScalingDescription.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def indexStatusValue: scala.Option[IndexStatus] = scala.Option(impl.indexStatus()).map(value => IndexStatus.wrap(value))
      override def provisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.provisionedReadCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
      override def provisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.provisionedWriteCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingDescription): ReadOnly = new Wrapper(impl)
  }
  type ReplicaGlobalSecondaryIndexAutoScalingDescriptionList = List[ReplicaGlobalSecondaryIndexAutoScalingDescription]
  case class ReplicaGlobalSecondaryIndexAutoScalingUpdate(indexName: scala.Option[primitives.IndexName] = None, provisionedReadCapacityAutoScalingUpdate: scala.Option[AutoScalingSettingsUpdate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingUpdate = {
      import ReplicaGlobalSecondaryIndexAutoScalingUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingUpdate.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(provisionedReadCapacityAutoScalingUpdate.map(value => value.buildAwsValue()))(_.provisionedReadCapacityAutoScalingUpdate).build()
    }
    def asReadOnly: ReplicaGlobalSecondaryIndexAutoScalingUpdate.ReadOnly = ReplicaGlobalSecondaryIndexAutoScalingUpdate.wrap(buildAwsValue())
  }
  object ReplicaGlobalSecondaryIndexAutoScalingUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaGlobalSecondaryIndexAutoScalingUpdate = ReplicaGlobalSecondaryIndexAutoScalingUpdate(indexNameValue.map(value => value), provisionedReadCapacityAutoScalingUpdateValue.map(value => value.editable))
      def indexNameValue: scala.Option[primitives.IndexName]
      def provisionedReadCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def provisionedReadCapacityAutoScalingUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedReadCapacityAutoScalingUpdate", provisionedReadCapacityAutoScalingUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingUpdate) extends ReplicaGlobalSecondaryIndexAutoScalingUpdate.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def provisionedReadCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.provisionedReadCapacityAutoScalingUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexAutoScalingUpdate): ReadOnly = new Wrapper(impl)
  }
  type ReplicaGlobalSecondaryIndexAutoScalingUpdateList = List[ReplicaGlobalSecondaryIndexAutoScalingUpdate]
  case class ReplicaGlobalSecondaryIndexDescription(indexName: scala.Option[primitives.IndexName] = None, provisionedThroughputOverride: scala.Option[ProvisionedThroughputOverride] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexDescription = {
      import ReplicaGlobalSecondaryIndexDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexDescription.builder().optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(provisionedThroughputOverride.map(value => value.buildAwsValue()))(_.provisionedThroughputOverride).build()
    }
    def asReadOnly: ReplicaGlobalSecondaryIndexDescription.ReadOnly = ReplicaGlobalSecondaryIndexDescription.wrap(buildAwsValue())
  }
  object ReplicaGlobalSecondaryIndexDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaGlobalSecondaryIndexDescription = ReplicaGlobalSecondaryIndexDescription(indexNameValue.map(value => value), provisionedThroughputOverrideValue.map(value => value.editable))
      def indexNameValue: scala.Option[primitives.IndexName]
      def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly]
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def provisionedThroughputOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughputOverride.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughputOverride", provisionedThroughputOverrideValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexDescription) extends ReplicaGlobalSecondaryIndexDescription.ReadOnly {
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly] = scala.Option(impl.provisionedThroughputOverride()).map(value => ProvisionedThroughputOverride.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexDescription): ReadOnly = new Wrapper(impl)
  }
  type ReplicaGlobalSecondaryIndexDescriptionList = List[ReplicaGlobalSecondaryIndexDescription]
  type ReplicaGlobalSecondaryIndexList = List[ReplicaGlobalSecondaryIndex]
  case class ReplicaGlobalSecondaryIndexSettingsDescription(indexName: primitives.IndexName, indexStatus: scala.Option[IndexStatus] = None, provisionedReadCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, provisionedReadCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None, provisionedWriteCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, provisionedWriteCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsDescription = {
      import ReplicaGlobalSecondaryIndexSettingsDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsDescription.builder().indexName(indexName: java.lang.String).optionallyWith(indexStatus.map(value => value.unwrap))(_.indexStatus).optionallyWith(provisionedReadCapacityUnits.map(value => value: java.lang.Long))(_.provisionedReadCapacityUnits).optionallyWith(provisionedReadCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.provisionedReadCapacityAutoScalingSettings).optionallyWith(provisionedWriteCapacityUnits.map(value => value: java.lang.Long))(_.provisionedWriteCapacityUnits).optionallyWith(provisionedWriteCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.provisionedWriteCapacityAutoScalingSettings).build()
    }
    def asReadOnly: ReplicaGlobalSecondaryIndexSettingsDescription.ReadOnly = ReplicaGlobalSecondaryIndexSettingsDescription.wrap(buildAwsValue())
  }
  object ReplicaGlobalSecondaryIndexSettingsDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaGlobalSecondaryIndexSettingsDescription = ReplicaGlobalSecondaryIndexSettingsDescription(indexNameValue, indexStatusValue.map(value => value), provisionedReadCapacityUnitsValue.map(value => value), provisionedReadCapacityAutoScalingSettingsValue.map(value => value.editable), provisionedWriteCapacityUnitsValue.map(value => value), provisionedWriteCapacityAutoScalingSettingsValue.map(value => value.editable))
      def indexNameValue: primitives.IndexName
      def indexStatusValue: scala.Option[IndexStatus]
      def provisionedReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def provisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def provisionedWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def provisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def indexStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IndexStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexStatus", indexStatusValue)
      def provisionedReadCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedReadCapacityUnits", provisionedReadCapacityUnitsValue)
      def provisionedReadCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedReadCapacityAutoScalingSettings", provisionedReadCapacityAutoScalingSettingsValue)
      def provisionedWriteCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedWriteCapacityUnits", provisionedWriteCapacityUnitsValue)
      def provisionedWriteCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedWriteCapacityAutoScalingSettings", provisionedWriteCapacityAutoScalingSettingsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsDescription) extends ReplicaGlobalSecondaryIndexSettingsDescription.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def indexStatusValue: scala.Option[IndexStatus] = scala.Option(impl.indexStatus()).map(value => IndexStatus.wrap(value))
      override def provisionedReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.provisionedReadCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def provisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.provisionedReadCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
      override def provisionedWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.provisionedWriteCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def provisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.provisionedWriteCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsDescription): ReadOnly = new Wrapper(impl)
  }
  type ReplicaGlobalSecondaryIndexSettingsDescriptionList = List[ReplicaGlobalSecondaryIndexSettingsDescription]
  case class ReplicaGlobalSecondaryIndexSettingsUpdate(indexName: primitives.IndexName, provisionedReadCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, provisionedReadCapacityAutoScalingSettingsUpdate: scala.Option[AutoScalingSettingsUpdate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsUpdate = {
      import ReplicaGlobalSecondaryIndexSettingsUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsUpdate.builder().indexName(indexName: java.lang.String).optionallyWith(provisionedReadCapacityUnits.map(value => value: java.lang.Long))(_.provisionedReadCapacityUnits).optionallyWith(provisionedReadCapacityAutoScalingSettingsUpdate.map(value => value.buildAwsValue()))(_.provisionedReadCapacityAutoScalingSettingsUpdate).build()
    }
    def asReadOnly: ReplicaGlobalSecondaryIndexSettingsUpdate.ReadOnly = ReplicaGlobalSecondaryIndexSettingsUpdate.wrap(buildAwsValue())
  }
  object ReplicaGlobalSecondaryIndexSettingsUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaGlobalSecondaryIndexSettingsUpdate = ReplicaGlobalSecondaryIndexSettingsUpdate(indexNameValue, provisionedReadCapacityUnitsValue.map(value => value), provisionedReadCapacityAutoScalingSettingsUpdateValue.map(value => value.editable))
      def indexNameValue: primitives.IndexName
      def provisionedReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def provisionedReadCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def provisionedReadCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedReadCapacityUnits", provisionedReadCapacityUnitsValue)
      def provisionedReadCapacityAutoScalingSettingsUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedReadCapacityAutoScalingSettingsUpdate", provisionedReadCapacityAutoScalingSettingsUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsUpdate) extends ReplicaGlobalSecondaryIndexSettingsUpdate.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def provisionedReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.provisionedReadCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def provisionedReadCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.provisionedReadCapacityAutoScalingSettingsUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaGlobalSecondaryIndexSettingsUpdate): ReadOnly = new Wrapper(impl)
  }
  type ReplicaGlobalSecondaryIndexSettingsUpdateList = List[ReplicaGlobalSecondaryIndexSettingsUpdate]
  type ReplicaList = List[Replica]
  case class ReplicaSettingsDescription(regionName: primitives.RegionName, replicaStatus: scala.Option[ReplicaStatus] = None, replicaBillingModeSummary: scala.Option[BillingModeSummary] = None, replicaProvisionedReadCapacityUnits: scala.Option[primitives.NonNegativeLongObject] = None, replicaProvisionedReadCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None, replicaProvisionedWriteCapacityUnits: scala.Option[primitives.NonNegativeLongObject] = None, replicaProvisionedWriteCapacityAutoScalingSettings: scala.Option[AutoScalingSettingsDescription] = None, replicaGlobalSecondaryIndexSettings: scala.Option[Iterable[ReplicaGlobalSecondaryIndexSettingsDescription]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsDescription = {
      import ReplicaSettingsDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsDescription.builder().regionName(regionName: java.lang.String).optionallyWith(replicaStatus.map(value => value.unwrap))(_.replicaStatus).optionallyWith(replicaBillingModeSummary.map(value => value.buildAwsValue()))(_.replicaBillingModeSummary).optionallyWith(replicaProvisionedReadCapacityUnits.map(value => value: java.lang.Long))(_.replicaProvisionedReadCapacityUnits).optionallyWith(replicaProvisionedReadCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.replicaProvisionedReadCapacityAutoScalingSettings).optionallyWith(replicaProvisionedWriteCapacityUnits.map(value => value: java.lang.Long))(_.replicaProvisionedWriteCapacityUnits).optionallyWith(replicaProvisionedWriteCapacityAutoScalingSettings.map(value => value.buildAwsValue()))(_.replicaProvisionedWriteCapacityAutoScalingSettings).optionallyWith(replicaGlobalSecondaryIndexSettings.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaGlobalSecondaryIndexSettings).build()
    }
    def asReadOnly: ReplicaSettingsDescription.ReadOnly = ReplicaSettingsDescription.wrap(buildAwsValue())
  }
  object ReplicaSettingsDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaSettingsDescription = ReplicaSettingsDescription(regionNameValue, replicaStatusValue.map(value => value), replicaBillingModeSummaryValue.map(value => value.editable), replicaProvisionedReadCapacityUnitsValue.map(value => value), replicaProvisionedReadCapacityAutoScalingSettingsValue.map(value => value.editable), replicaProvisionedWriteCapacityUnitsValue.map(value => value), replicaProvisionedWriteCapacityAutoScalingSettingsValue.map(value => value.editable), replicaGlobalSecondaryIndexSettingsValue.map(value => value.map { item => 
        item.editable
      }))
      def regionNameValue: primitives.RegionName
      def replicaStatusValue: scala.Option[ReplicaStatus]
      def replicaBillingModeSummaryValue: scala.Option[BillingModeSummary.ReadOnly]
      def replicaProvisionedReadCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject]
      def replicaProvisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def replicaProvisionedWriteCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject]
      def replicaProvisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly]
      def replicaGlobalSecondaryIndexSettingsValue: scala.Option[List[ReplicaGlobalSecondaryIndexSettingsDescription.ReadOnly]]
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
      def replicaStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReplicaStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaStatus", replicaStatusValue)
      def replicaBillingModeSummary: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingModeSummary.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaBillingModeSummary", replicaBillingModeSummaryValue)
      def replicaProvisionedReadCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonNegativeLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedReadCapacityUnits", replicaProvisionedReadCapacityUnitsValue)
      def replicaProvisionedReadCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedReadCapacityAutoScalingSettings", replicaProvisionedReadCapacityAutoScalingSettingsValue)
      def replicaProvisionedWriteCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonNegativeLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedWriteCapacityUnits", replicaProvisionedWriteCapacityUnitsValue)
      def replicaProvisionedWriteCapacityAutoScalingSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedWriteCapacityAutoScalingSettings", replicaProvisionedWriteCapacityAutoScalingSettingsValue)
      def replicaGlobalSecondaryIndexSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaGlobalSecondaryIndexSettingsDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaGlobalSecondaryIndexSettings", replicaGlobalSecondaryIndexSettingsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsDescription) extends ReplicaSettingsDescription.ReadOnly {
      override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName
      override def replicaStatusValue: scala.Option[ReplicaStatus] = scala.Option(impl.replicaStatus()).map(value => ReplicaStatus.wrap(value))
      override def replicaBillingModeSummaryValue: scala.Option[BillingModeSummary.ReadOnly] = scala.Option(impl.replicaBillingModeSummary()).map(value => BillingModeSummary.wrap(value))
      override def replicaProvisionedReadCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject] = scala.Option(impl.replicaProvisionedReadCapacityUnits()).map(value => value: primitives.NonNegativeLongObject)
      override def replicaProvisionedReadCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.replicaProvisionedReadCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
      override def replicaProvisionedWriteCapacityUnitsValue: scala.Option[primitives.NonNegativeLongObject] = scala.Option(impl.replicaProvisionedWriteCapacityUnits()).map(value => value: primitives.NonNegativeLongObject)
      override def replicaProvisionedWriteCapacityAutoScalingSettingsValue: scala.Option[AutoScalingSettingsDescription.ReadOnly] = scala.Option(impl.replicaProvisionedWriteCapacityAutoScalingSettings()).map(value => AutoScalingSettingsDescription.wrap(value))
      override def replicaGlobalSecondaryIndexSettingsValue: scala.Option[List[ReplicaGlobalSecondaryIndexSettingsDescription.ReadOnly]] = scala.Option(impl.replicaGlobalSecondaryIndexSettings()).map(value => value.asScala.map { item => 
        ReplicaGlobalSecondaryIndexSettingsDescription.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsDescription): ReadOnly = new Wrapper(impl)
  }
  type ReplicaSettingsDescriptionList = List[ReplicaSettingsDescription]
  case class ReplicaSettingsUpdate(regionName: primitives.RegionName, replicaProvisionedReadCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, replicaProvisionedReadCapacityAutoScalingSettingsUpdate: scala.Option[AutoScalingSettingsUpdate] = None, replicaGlobalSecondaryIndexSettingsUpdate: scala.Option[Iterable[ReplicaGlobalSecondaryIndexSettingsUpdate]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsUpdate = {
      import ReplicaSettingsUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsUpdate.builder().regionName(regionName: java.lang.String).optionallyWith(replicaProvisionedReadCapacityUnits.map(value => value: java.lang.Long))(_.replicaProvisionedReadCapacityUnits).optionallyWith(replicaProvisionedReadCapacityAutoScalingSettingsUpdate.map(value => value.buildAwsValue()))(_.replicaProvisionedReadCapacityAutoScalingSettingsUpdate).optionallyWith(replicaGlobalSecondaryIndexSettingsUpdate.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaGlobalSecondaryIndexSettingsUpdate).build()
    }
    def asReadOnly: ReplicaSettingsUpdate.ReadOnly = ReplicaSettingsUpdate.wrap(buildAwsValue())
  }
  object ReplicaSettingsUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaSettingsUpdate = ReplicaSettingsUpdate(regionNameValue, replicaProvisionedReadCapacityUnitsValue.map(value => value), replicaProvisionedReadCapacityAutoScalingSettingsUpdateValue.map(value => value.editable), replicaGlobalSecondaryIndexSettingsUpdateValue.map(value => value.map { item => 
        item.editable
      }))
      def regionNameValue: primitives.RegionName
      def replicaProvisionedReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def replicaProvisionedReadCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def replicaGlobalSecondaryIndexSettingsUpdateValue: scala.Option[List[ReplicaGlobalSecondaryIndexSettingsUpdate.ReadOnly]]
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
      def replicaProvisionedReadCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedReadCapacityUnits", replicaProvisionedReadCapacityUnitsValue)
      def replicaProvisionedReadCapacityAutoScalingSettingsUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaProvisionedReadCapacityAutoScalingSettingsUpdate", replicaProvisionedReadCapacityAutoScalingSettingsUpdateValue)
      def replicaGlobalSecondaryIndexSettingsUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaGlobalSecondaryIndexSettingsUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaGlobalSecondaryIndexSettingsUpdate", replicaGlobalSecondaryIndexSettingsUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsUpdate) extends ReplicaSettingsUpdate.ReadOnly {
      override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName
      override def replicaProvisionedReadCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.replicaProvisionedReadCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def replicaProvisionedReadCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.replicaProvisionedReadCapacityAutoScalingSettingsUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
      override def replicaGlobalSecondaryIndexSettingsUpdateValue: scala.Option[List[ReplicaGlobalSecondaryIndexSettingsUpdate.ReadOnly]] = scala.Option(impl.replicaGlobalSecondaryIndexSettingsUpdate()).map(value => value.asScala.map { item => 
        ReplicaGlobalSecondaryIndexSettingsUpdate.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaSettingsUpdate): ReadOnly = new Wrapper(impl)
  }
  type ReplicaSettingsUpdateList = List[ReplicaSettingsUpdate]
  sealed trait ReplicaStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus }
  object ReplicaStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus): ReplicaStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.CREATING => CREATING
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.CREATION_FAILED => CREATION_FAILED
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.UPDATING => UPDATING
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.DELETING => DELETING
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.ACTIVE => ACTIVE
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.REGION_DISABLED => REGION_DISABLED
      case software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.INACCESSIBLE_ENCRYPTION_CREDENTIALS => INACCESSIBLE_ENCRYPTION_CREDENTIALS
    }
    final case object unknownToSdkVersion extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.UNKNOWN_TO_SDK_VERSION }
    final case object CREATING extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.CREATING }
    final case object CREATION_FAILED extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.CREATION_FAILED }
    final case object UPDATING extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.UPDATING }
    final case object DELETING extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.DELETING }
    final case object ACTIVE extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.ACTIVE }
    final case object REGION_DISABLED extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.REGION_DISABLED }
    final case object INACCESSIBLE_ENCRYPTION_CREDENTIALS extends ReplicaStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReplicaStatus = software.amazon.awssdk.services.dynamodb.model.ReplicaStatus.INACCESSIBLE_ENCRYPTION_CREDENTIALS }
  }
  case class ReplicaUpdate(create: scala.Option[CreateReplicaAction] = None, delete: scala.Option[DeleteReplicaAction] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicaUpdate = {
      import ReplicaUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicaUpdate.builder().optionallyWith(create.map(value => value.buildAwsValue()))(_.create).optionallyWith(delete.map(value => value.buildAwsValue()))(_.delete).build()
    }
    def asReadOnly: ReplicaUpdate.ReadOnly = ReplicaUpdate.wrap(buildAwsValue())
  }
  object ReplicaUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicaUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicaUpdate = ReplicaUpdate(createValue.map(value => value.editable), deleteValue.map(value => value.editable))
      def createValue: scala.Option[CreateReplicaAction.ReadOnly]
      def deleteValue: scala.Option[DeleteReplicaAction.ReadOnly]
      def create: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CreateReplicaAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("create", createValue)
      def delete: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DeleteReplicaAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("delete", deleteValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaUpdate) extends ReplicaUpdate.ReadOnly {
      override def createValue: scala.Option[CreateReplicaAction.ReadOnly] = scala.Option(impl.create()).map(value => CreateReplicaAction.wrap(value))
      override def deleteValue: scala.Option[DeleteReplicaAction.ReadOnly] = scala.Option(impl.delete()).map(value => DeleteReplicaAction.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicaUpdate): ReadOnly = new Wrapper(impl)
  }
  type ReplicaUpdateList = List[ReplicaUpdate]
  case class ReplicationGroupUpdate(create: scala.Option[CreateReplicationGroupMemberAction] = None, update: scala.Option[UpdateReplicationGroupMemberAction] = None, delete: scala.Option[DeleteReplicationGroupMemberAction] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ReplicationGroupUpdate = {
      import ReplicationGroupUpdate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ReplicationGroupUpdate.builder().optionallyWith(create.map(value => value.buildAwsValue()))(_.create).optionallyWith(update.map(value => value.buildAwsValue()))(_.update).optionallyWith(delete.map(value => value.buildAwsValue()))(_.delete).build()
    }
    def asReadOnly: ReplicationGroupUpdate.ReadOnly = ReplicationGroupUpdate.wrap(buildAwsValue())
  }
  object ReplicationGroupUpdate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ReplicationGroupUpdate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReplicationGroupUpdate = ReplicationGroupUpdate(createValue.map(value => value.editable), updateValue.map(value => value.editable), deleteValue.map(value => value.editable))
      def createValue: scala.Option[CreateReplicationGroupMemberAction.ReadOnly]
      def updateValue: scala.Option[UpdateReplicationGroupMemberAction.ReadOnly]
      def deleteValue: scala.Option[DeleteReplicationGroupMemberAction.ReadOnly]
      def create: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CreateReplicationGroupMemberAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("create", createValue)
      def update: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, UpdateReplicationGroupMemberAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("update", updateValue)
      def delete: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DeleteReplicationGroupMemberAction.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("delete", deleteValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ReplicationGroupUpdate) extends ReplicationGroupUpdate.ReadOnly {
      override def createValue: scala.Option[CreateReplicationGroupMemberAction.ReadOnly] = scala.Option(impl.create()).map(value => CreateReplicationGroupMemberAction.wrap(value))
      override def updateValue: scala.Option[UpdateReplicationGroupMemberAction.ReadOnly] = scala.Option(impl.update()).map(value => UpdateReplicationGroupMemberAction.wrap(value))
      override def deleteValue: scala.Option[DeleteReplicationGroupMemberAction.ReadOnly] = scala.Option(impl.delete()).map(value => DeleteReplicationGroupMemberAction.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ReplicationGroupUpdate): ReadOnly = new Wrapper(impl)
  }
  type ReplicationGroupUpdateList = List[ReplicationGroupUpdate]
  case class RestoreSummary(sourceBackupArn: scala.Option[primitives.BackupArn] = None, sourceTableArn: scala.Option[primitives.TableArn] = None, restoreDateTime: primitives.Date, restoreInProgress: primitives.RestoreInProgress) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.RestoreSummary = {
      import RestoreSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.RestoreSummary.builder().optionallyWith(sourceBackupArn.map(value => value: java.lang.String))(_.sourceBackupArn).optionallyWith(sourceTableArn.map(value => value: java.lang.String))(_.sourceTableArn).restoreDateTime(restoreDateTime: java.time.Instant).restoreInProgress(restoreInProgress: java.lang.Boolean).build()
    }
    def asReadOnly: RestoreSummary.ReadOnly = RestoreSummary.wrap(buildAwsValue())
  }
  object RestoreSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.RestoreSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RestoreSummary = RestoreSummary(sourceBackupArnValue.map(value => value), sourceTableArnValue.map(value => value), restoreDateTimeValue, restoreInProgressValue)
      def sourceBackupArnValue: scala.Option[primitives.BackupArn]
      def sourceTableArnValue: scala.Option[primitives.TableArn]
      def restoreDateTimeValue: primitives.Date
      def restoreInProgressValue: primitives.RestoreInProgress
      def sourceBackupArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BackupArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceBackupArn", sourceBackupArnValue)
      def sourceTableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceTableArn", sourceTableArnValue)
      def restoreDateTime: ZIO[Any, Nothing, primitives.Date] = ZIO.succeed(restoreDateTimeValue)
      def restoreInProgress: ZIO[Any, Nothing, primitives.RestoreInProgress] = ZIO.succeed(restoreInProgressValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.RestoreSummary) extends RestoreSummary.ReadOnly {
      override def sourceBackupArnValue: scala.Option[primitives.BackupArn] = scala.Option(impl.sourceBackupArn()).map(value => value: primitives.BackupArn)
      override def sourceTableArnValue: scala.Option[primitives.TableArn] = scala.Option(impl.sourceTableArn()).map(value => value: primitives.TableArn)
      override def restoreDateTimeValue: primitives.Date = impl.restoreDateTime(): primitives.Date
      override def restoreInProgressValue: primitives.RestoreInProgress = impl.restoreInProgress(): primitives.RestoreInProgress
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.RestoreSummary): ReadOnly = new Wrapper(impl)
  }
  case class RestoreTableFromBackupRequest(targetTableName: primitives.TableName, backupArn: primitives.BackupArn, billingModeOverride: scala.Option[BillingMode] = None, globalSecondaryIndexOverride: scala.Option[Iterable[GlobalSecondaryIndex]] = None, localSecondaryIndexOverride: scala.Option[Iterable[LocalSecondaryIndex]] = None, provisionedThroughputOverride: scala.Option[ProvisionedThroughput] = None, sseSpecificationOverride: scala.Option[SSESpecification] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupRequest = {
      import RestoreTableFromBackupRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupRequest.builder().targetTableName(targetTableName: java.lang.String).backupArn(backupArn: java.lang.String).optionallyWith(billingModeOverride.map(value => value.unwrap))(_.billingModeOverride).optionallyWith(globalSecondaryIndexOverride.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexOverride).optionallyWith(localSecondaryIndexOverride.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.localSecondaryIndexOverride).optionallyWith(provisionedThroughputOverride.map(value => value.buildAwsValue()))(_.provisionedThroughputOverride).optionallyWith(sseSpecificationOverride.map(value => value.buildAwsValue()))(_.sseSpecificationOverride).build()
    }
    def asReadOnly: RestoreTableFromBackupRequest.ReadOnly = RestoreTableFromBackupRequest.wrap(buildAwsValue())
  }
  object RestoreTableFromBackupRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RestoreTableFromBackupRequest = RestoreTableFromBackupRequest(targetTableNameValue, backupArnValue, billingModeOverrideValue.map(value => value), globalSecondaryIndexOverrideValue.map(value => value.map { item => 
        item.editable
      }), localSecondaryIndexOverrideValue.map(value => value.map { item => 
        item.editable
      }), provisionedThroughputOverrideValue.map(value => value.editable), sseSpecificationOverrideValue.map(value => value.editable))
      def targetTableNameValue: primitives.TableName
      def backupArnValue: primitives.BackupArn
      def billingModeOverrideValue: scala.Option[BillingMode]
      def globalSecondaryIndexOverrideValue: scala.Option[List[GlobalSecondaryIndex.ReadOnly]]
      def localSecondaryIndexOverrideValue: scala.Option[List[LocalSecondaryIndex.ReadOnly]]
      def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughput.ReadOnly]
      def sseSpecificationOverrideValue: scala.Option[SSESpecification.ReadOnly]
      def targetTableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(targetTableNameValue)
      def backupArn: ZIO[Any, Nothing, primitives.BackupArn] = ZIO.succeed(backupArnValue)
      def billingModeOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billingModeOverride", billingModeOverrideValue)
      def globalSecondaryIndexOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexOverride", globalSecondaryIndexOverrideValue)
      def localSecondaryIndexOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LocalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("localSecondaryIndexOverride", localSecondaryIndexOverrideValue)
      def provisionedThroughputOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughput.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughputOverride", provisionedThroughputOverrideValue)
      def sseSpecificationOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSESpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseSpecificationOverride", sseSpecificationOverrideValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupRequest) extends RestoreTableFromBackupRequest.ReadOnly {
      override def targetTableNameValue: primitives.TableName = impl.targetTableName(): primitives.TableName
      override def backupArnValue: primitives.BackupArn = impl.backupArn(): primitives.BackupArn
      override def billingModeOverrideValue: scala.Option[BillingMode] = scala.Option(impl.billingModeOverride()).map(value => BillingMode.wrap(value))
      override def globalSecondaryIndexOverrideValue: scala.Option[List[GlobalSecondaryIndex.ReadOnly]] = scala.Option(impl.globalSecondaryIndexOverride()).map(value => value.asScala.map { item => 
        GlobalSecondaryIndex.wrap(item)
      }.toList)
      override def localSecondaryIndexOverrideValue: scala.Option[List[LocalSecondaryIndex.ReadOnly]] = scala.Option(impl.localSecondaryIndexOverride()).map(value => value.asScala.map { item => 
        LocalSecondaryIndex.wrap(item)
      }.toList)
      override def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughput.ReadOnly] = scala.Option(impl.provisionedThroughputOverride()).map(value => ProvisionedThroughput.wrap(value))
      override def sseSpecificationOverrideValue: scala.Option[SSESpecification.ReadOnly] = scala.Option(impl.sseSpecificationOverride()).map(value => SSESpecification.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupRequest): ReadOnly = new Wrapper(impl)
  }
  case class RestoreTableFromBackupResponse(tableDescription: scala.Option[TableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupResponse = {
      import RestoreTableFromBackupResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupResponse.builder().optionallyWith(tableDescription.map(value => value.buildAwsValue()))(_.tableDescription).build()
    }
    def asReadOnly: RestoreTableFromBackupResponse.ReadOnly = RestoreTableFromBackupResponse.wrap(buildAwsValue())
  }
  object RestoreTableFromBackupResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RestoreTableFromBackupResponse = RestoreTableFromBackupResponse(tableDescriptionValue.map(value => value.editable))
      def tableDescriptionValue: scala.Option[TableDescription.ReadOnly]
      def tableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableDescription", tableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupResponse) extends RestoreTableFromBackupResponse.ReadOnly { override def tableDescriptionValue: scala.Option[TableDescription.ReadOnly] = scala.Option(impl.tableDescription()).map(value => TableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableFromBackupResponse): ReadOnly = new Wrapper(impl)
  }
  case class RestoreTableToPointInTimeRequest(sourceTableArn: scala.Option[primitives.TableArn] = None, sourceTableName: scala.Option[primitives.TableName] = None, targetTableName: primitives.TableName, useLatestRestorableTime: scala.Option[primitives.BooleanObject] = None, restoreDateTime: scala.Option[primitives.Date] = None, billingModeOverride: scala.Option[BillingMode] = None, globalSecondaryIndexOverride: scala.Option[Iterable[GlobalSecondaryIndex]] = None, localSecondaryIndexOverride: scala.Option[Iterable[LocalSecondaryIndex]] = None, provisionedThroughputOverride: scala.Option[ProvisionedThroughput] = None, sseSpecificationOverride: scala.Option[SSESpecification] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeRequest = {
      import RestoreTableToPointInTimeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeRequest.builder().optionallyWith(sourceTableArn.map(value => value: java.lang.String))(_.sourceTableArn).optionallyWith(sourceTableName.map(value => value: java.lang.String))(_.sourceTableName).targetTableName(targetTableName: java.lang.String).optionallyWith(useLatestRestorableTime.map(value => value: java.lang.Boolean))(_.useLatestRestorableTime).optionallyWith(restoreDateTime.map(value => value: java.time.Instant))(_.restoreDateTime).optionallyWith(billingModeOverride.map(value => value.unwrap))(_.billingModeOverride).optionallyWith(globalSecondaryIndexOverride.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexOverride).optionallyWith(localSecondaryIndexOverride.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.localSecondaryIndexOverride).optionallyWith(provisionedThroughputOverride.map(value => value.buildAwsValue()))(_.provisionedThroughputOverride).optionallyWith(sseSpecificationOverride.map(value => value.buildAwsValue()))(_.sseSpecificationOverride).build()
    }
    def asReadOnly: RestoreTableToPointInTimeRequest.ReadOnly = RestoreTableToPointInTimeRequest.wrap(buildAwsValue())
  }
  object RestoreTableToPointInTimeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RestoreTableToPointInTimeRequest = RestoreTableToPointInTimeRequest(sourceTableArnValue.map(value => value), sourceTableNameValue.map(value => value), targetTableNameValue, useLatestRestorableTimeValue.map(value => value), restoreDateTimeValue.map(value => value), billingModeOverrideValue.map(value => value), globalSecondaryIndexOverrideValue.map(value => value.map { item => 
        item.editable
      }), localSecondaryIndexOverrideValue.map(value => value.map { item => 
        item.editable
      }), provisionedThroughputOverrideValue.map(value => value.editable), sseSpecificationOverrideValue.map(value => value.editable))
      def sourceTableArnValue: scala.Option[primitives.TableArn]
      def sourceTableNameValue: scala.Option[primitives.TableName]
      def targetTableNameValue: primitives.TableName
      def useLatestRestorableTimeValue: scala.Option[primitives.BooleanObject]
      def restoreDateTimeValue: scala.Option[primitives.Date]
      def billingModeOverrideValue: scala.Option[BillingMode]
      def globalSecondaryIndexOverrideValue: scala.Option[List[GlobalSecondaryIndex.ReadOnly]]
      def localSecondaryIndexOverrideValue: scala.Option[List[LocalSecondaryIndex.ReadOnly]]
      def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughput.ReadOnly]
      def sseSpecificationOverrideValue: scala.Option[SSESpecification.ReadOnly]
      def sourceTableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceTableArn", sourceTableArnValue)
      def sourceTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceTableName", sourceTableNameValue)
      def targetTableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(targetTableNameValue)
      def useLatestRestorableTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("useLatestRestorableTime", useLatestRestorableTimeValue)
      def restoreDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("restoreDateTime", restoreDateTimeValue)
      def billingModeOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billingModeOverride", billingModeOverrideValue)
      def globalSecondaryIndexOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexOverride", globalSecondaryIndexOverrideValue)
      def localSecondaryIndexOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LocalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("localSecondaryIndexOverride", localSecondaryIndexOverrideValue)
      def provisionedThroughputOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughput.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughputOverride", provisionedThroughputOverrideValue)
      def sseSpecificationOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSESpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseSpecificationOverride", sseSpecificationOverrideValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeRequest) extends RestoreTableToPointInTimeRequest.ReadOnly {
      override def sourceTableArnValue: scala.Option[primitives.TableArn] = scala.Option(impl.sourceTableArn()).map(value => value: primitives.TableArn)
      override def sourceTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.sourceTableName()).map(value => value: primitives.TableName)
      override def targetTableNameValue: primitives.TableName = impl.targetTableName(): primitives.TableName
      override def useLatestRestorableTimeValue: scala.Option[primitives.BooleanObject] = scala.Option(impl.useLatestRestorableTime()).map(value => value: primitives.BooleanObject)
      override def restoreDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.restoreDateTime()).map(value => value: primitives.Date)
      override def billingModeOverrideValue: scala.Option[BillingMode] = scala.Option(impl.billingModeOverride()).map(value => BillingMode.wrap(value))
      override def globalSecondaryIndexOverrideValue: scala.Option[List[GlobalSecondaryIndex.ReadOnly]] = scala.Option(impl.globalSecondaryIndexOverride()).map(value => value.asScala.map { item => 
        GlobalSecondaryIndex.wrap(item)
      }.toList)
      override def localSecondaryIndexOverrideValue: scala.Option[List[LocalSecondaryIndex.ReadOnly]] = scala.Option(impl.localSecondaryIndexOverride()).map(value => value.asScala.map { item => 
        LocalSecondaryIndex.wrap(item)
      }.toList)
      override def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughput.ReadOnly] = scala.Option(impl.provisionedThroughputOverride()).map(value => ProvisionedThroughput.wrap(value))
      override def sseSpecificationOverrideValue: scala.Option[SSESpecification.ReadOnly] = scala.Option(impl.sseSpecificationOverride()).map(value => SSESpecification.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeRequest): ReadOnly = new Wrapper(impl)
  }
  case class RestoreTableToPointInTimeResponse(tableDescription: scala.Option[TableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeResponse = {
      import RestoreTableToPointInTimeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeResponse.builder().optionallyWith(tableDescription.map(value => value.buildAwsValue()))(_.tableDescription).build()
    }
    def asReadOnly: RestoreTableToPointInTimeResponse.ReadOnly = RestoreTableToPointInTimeResponse.wrap(buildAwsValue())
  }
  object RestoreTableToPointInTimeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RestoreTableToPointInTimeResponse = RestoreTableToPointInTimeResponse(tableDescriptionValue.map(value => value.editable))
      def tableDescriptionValue: scala.Option[TableDescription.ReadOnly]
      def tableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableDescription", tableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeResponse) extends RestoreTableToPointInTimeResponse.ReadOnly { override def tableDescriptionValue: scala.Option[TableDescription.ReadOnly] = scala.Option(impl.tableDescription()).map(value => TableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.RestoreTableToPointInTimeResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait ReturnConsumedCapacity { def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity }
  object ReturnConsumedCapacity {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity): ReturnConsumedCapacity = value match {
      case software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.INDEXES => INDEXES
      case software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.TOTAL => TOTAL
      case software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.NONE => NONE
    }
    final case object unknownToSdkVersion extends ReturnConsumedCapacity { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity = software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.UNKNOWN_TO_SDK_VERSION }
    final case object INDEXES extends ReturnConsumedCapacity { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity = software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.INDEXES }
    final case object TOTAL extends ReturnConsumedCapacity { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity = software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.TOTAL }
    final case object NONE extends ReturnConsumedCapacity { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity = software.amazon.awssdk.services.dynamodb.model.ReturnConsumedCapacity.NONE }
  }
  sealed trait ReturnItemCollectionMetrics { def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics }
  object ReturnItemCollectionMetrics {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics): ReturnItemCollectionMetrics = value match {
      case software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics.SIZE => SIZE
      case software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics.NONE => NONE
    }
    final case object unknownToSdkVersion extends ReturnItemCollectionMetrics { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics = software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics.UNKNOWN_TO_SDK_VERSION }
    final case object SIZE extends ReturnItemCollectionMetrics { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics = software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics.SIZE }
    final case object NONE extends ReturnItemCollectionMetrics { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics = software.amazon.awssdk.services.dynamodb.model.ReturnItemCollectionMetrics.NONE }
  }
  sealed trait ReturnValue { def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValue }
  object ReturnValue {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ReturnValue): ReturnValue = value match {
      case software.amazon.awssdk.services.dynamodb.model.ReturnValue.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ReturnValue.NONE => NONE
      case software.amazon.awssdk.services.dynamodb.model.ReturnValue.ALL_OLD => ALL_OLD
      case software.amazon.awssdk.services.dynamodb.model.ReturnValue.UPDATED_OLD => UPDATED_OLD
      case software.amazon.awssdk.services.dynamodb.model.ReturnValue.ALL_NEW => ALL_NEW
      case software.amazon.awssdk.services.dynamodb.model.ReturnValue.UPDATED_NEW => UPDATED_NEW
    }
    final case object unknownToSdkVersion extends ReturnValue { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValue = software.amazon.awssdk.services.dynamodb.model.ReturnValue.UNKNOWN_TO_SDK_VERSION }
    final case object NONE extends ReturnValue { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValue = software.amazon.awssdk.services.dynamodb.model.ReturnValue.NONE }
    final case object ALL_OLD extends ReturnValue { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValue = software.amazon.awssdk.services.dynamodb.model.ReturnValue.ALL_OLD }
    final case object UPDATED_OLD extends ReturnValue { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValue = software.amazon.awssdk.services.dynamodb.model.ReturnValue.UPDATED_OLD }
    final case object ALL_NEW extends ReturnValue { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValue = software.amazon.awssdk.services.dynamodb.model.ReturnValue.ALL_NEW }
    final case object UPDATED_NEW extends ReturnValue { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValue = software.amazon.awssdk.services.dynamodb.model.ReturnValue.UPDATED_NEW }
  }
  sealed trait ReturnValuesOnConditionCheckFailure { def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure }
  object ReturnValuesOnConditionCheckFailure {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure): ReturnValuesOnConditionCheckFailure = value match {
      case software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure.ALL_OLD => ALL_OLD
      case software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure.NONE => NONE
    }
    final case object unknownToSdkVersion extends ReturnValuesOnConditionCheckFailure { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure = software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure.UNKNOWN_TO_SDK_VERSION }
    final case object ALL_OLD extends ReturnValuesOnConditionCheckFailure { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure = software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure.ALL_OLD }
    final case object NONE extends ReturnValuesOnConditionCheckFailure { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure = software.amazon.awssdk.services.dynamodb.model.ReturnValuesOnConditionCheckFailure.NONE }
  }
  sealed trait S3SseAlgorithm { def unwrap: software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm }
  object S3SseAlgorithm {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm): S3SseAlgorithm = value match {
      case software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm.AES256 => AES256
      case software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm.KMS => KMS
    }
    final case object unknownToSdkVersion extends S3SseAlgorithm { override def unwrap: software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm = software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm.UNKNOWN_TO_SDK_VERSION }
    final case object AES256 extends S3SseAlgorithm { override def unwrap: software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm = software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm.AES256 }
    final case object KMS extends S3SseAlgorithm { override def unwrap: software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm = software.amazon.awssdk.services.dynamodb.model.S3SseAlgorithm.KMS }
  }
  case class SSEDescription(status: scala.Option[SSEStatus] = None, sseType: scala.Option[SSEType] = None, kmsMasterKeyArn: scala.Option[primitives.KMSMasterKeyArn] = None, inaccessibleEncryptionDateTime: scala.Option[primitives.Date] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.SSEDescription = {
      import SSEDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.SSEDescription.builder().optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(sseType.map(value => value.unwrap))(_.sseType).optionallyWith(kmsMasterKeyArn.map(value => value: java.lang.String))(_.kmsMasterKeyArn).optionallyWith(inaccessibleEncryptionDateTime.map(value => value: java.time.Instant))(_.inaccessibleEncryptionDateTime).build()
    }
    def asReadOnly: SSEDescription.ReadOnly = SSEDescription.wrap(buildAwsValue())
  }
  object SSEDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.SSEDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SSEDescription = SSEDescription(statusValue.map(value => value), sseTypeValue.map(value => value), kmsMasterKeyArnValue.map(value => value), inaccessibleEncryptionDateTimeValue.map(value => value))
      def statusValue: scala.Option[SSEStatus]
      def sseTypeValue: scala.Option[SSEType]
      def kmsMasterKeyArnValue: scala.Option[primitives.KMSMasterKeyArn]
      def inaccessibleEncryptionDateTimeValue: scala.Option[primitives.Date]
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSEStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def sseType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSEType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseType", sseTypeValue)
      def kmsMasterKeyArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSMasterKeyArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsMasterKeyArn", kmsMasterKeyArnValue)
      def inaccessibleEncryptionDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("inaccessibleEncryptionDateTime", inaccessibleEncryptionDateTimeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.SSEDescription) extends SSEDescription.ReadOnly {
      override def statusValue: scala.Option[SSEStatus] = scala.Option(impl.status()).map(value => SSEStatus.wrap(value))
      override def sseTypeValue: scala.Option[SSEType] = scala.Option(impl.sseType()).map(value => SSEType.wrap(value))
      override def kmsMasterKeyArnValue: scala.Option[primitives.KMSMasterKeyArn] = scala.Option(impl.kmsMasterKeyArn()).map(value => value: primitives.KMSMasterKeyArn)
      override def inaccessibleEncryptionDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.inaccessibleEncryptionDateTime()).map(value => value: primitives.Date)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.SSEDescription): ReadOnly = new Wrapper(impl)
  }
  case class SSESpecification(enabled: scala.Option[primitives.SSEEnabled] = None, sseType: scala.Option[SSEType] = None, kmsMasterKeyId: scala.Option[primitives.KMSMasterKeyId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.SSESpecification = {
      import SSESpecification.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.SSESpecification.builder().optionallyWith(enabled.map(value => value: java.lang.Boolean))(_.enabled).optionallyWith(sseType.map(value => value.unwrap))(_.sseType).optionallyWith(kmsMasterKeyId.map(value => value: java.lang.String))(_.kmsMasterKeyId).build()
    }
    def asReadOnly: SSESpecification.ReadOnly = SSESpecification.wrap(buildAwsValue())
  }
  object SSESpecification {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.SSESpecification] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SSESpecification = SSESpecification(enabledValue.map(value => value), sseTypeValue.map(value => value), kmsMasterKeyIdValue.map(value => value))
      def enabledValue: scala.Option[primitives.SSEEnabled]
      def sseTypeValue: scala.Option[SSEType]
      def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId]
      def enabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SSEEnabled] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("enabled", enabledValue)
      def sseType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSEType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseType", sseTypeValue)
      def kmsMasterKeyId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSMasterKeyId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsMasterKeyId", kmsMasterKeyIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.SSESpecification) extends SSESpecification.ReadOnly {
      override def enabledValue: scala.Option[primitives.SSEEnabled] = scala.Option(impl.enabled()).map(value => value: primitives.SSEEnabled)
      override def sseTypeValue: scala.Option[SSEType] = scala.Option(impl.sseType()).map(value => SSEType.wrap(value))
      override def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId] = scala.Option(impl.kmsMasterKeyId()).map(value => value: primitives.KMSMasterKeyId)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.SSESpecification): ReadOnly = new Wrapper(impl)
  }
  sealed trait SSEStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEStatus }
  object SSEStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.SSEStatus): SSEStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.SSEStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.SSEStatus.ENABLING => ENABLING
      case software.amazon.awssdk.services.dynamodb.model.SSEStatus.ENABLED => ENABLED
      case software.amazon.awssdk.services.dynamodb.model.SSEStatus.DISABLING => DISABLING
      case software.amazon.awssdk.services.dynamodb.model.SSEStatus.DISABLED => DISABLED
      case software.amazon.awssdk.services.dynamodb.model.SSEStatus.UPDATING => UPDATING
    }
    final case object unknownToSdkVersion extends SSEStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEStatus = software.amazon.awssdk.services.dynamodb.model.SSEStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLING extends SSEStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEStatus = software.amazon.awssdk.services.dynamodb.model.SSEStatus.ENABLING }
    final case object ENABLED extends SSEStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEStatus = software.amazon.awssdk.services.dynamodb.model.SSEStatus.ENABLED }
    final case object DISABLING extends SSEStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEStatus = software.amazon.awssdk.services.dynamodb.model.SSEStatus.DISABLING }
    final case object DISABLED extends SSEStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEStatus = software.amazon.awssdk.services.dynamodb.model.SSEStatus.DISABLED }
    final case object UPDATING extends SSEStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEStatus = software.amazon.awssdk.services.dynamodb.model.SSEStatus.UPDATING }
  }
  sealed trait SSEType { def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEType }
  object SSEType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.SSEType): SSEType = value match {
      case software.amazon.awssdk.services.dynamodb.model.SSEType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.SSEType.AES256 => AES256
      case software.amazon.awssdk.services.dynamodb.model.SSEType.KMS => KMS
    }
    final case object unknownToSdkVersion extends SSEType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEType = software.amazon.awssdk.services.dynamodb.model.SSEType.UNKNOWN_TO_SDK_VERSION }
    final case object AES256 extends SSEType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEType = software.amazon.awssdk.services.dynamodb.model.SSEType.AES256 }
    final case object KMS extends SSEType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.SSEType = software.amazon.awssdk.services.dynamodb.model.SSEType.KMS }
  }
  sealed trait ScalarAttributeType { def unwrap: software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType }
  object ScalarAttributeType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType): ScalarAttributeType = value match {
      case software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.S => S
      case software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.N => N
      case software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.B => B
    }
    final case object unknownToSdkVersion extends ScalarAttributeType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType = software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.UNKNOWN_TO_SDK_VERSION }
    final case object S extends ScalarAttributeType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType = software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.S }
    final case object N extends ScalarAttributeType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType = software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.N }
    final case object B extends ScalarAttributeType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType = software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.B }
  }
  case class ScanRequest(tableName: primitives.TableName, indexName: scala.Option[primitives.IndexName] = None, attributesToGet: scala.Option[Iterable[primitives.AttributeName]] = None, limit: scala.Option[primitives.PositiveIntegerObject] = None, select: scala.Option[Select] = None, scanFilter: scala.Option[Map[primitives.AttributeName, Condition]] = None, conditionalOperator: scala.Option[ConditionalOperator] = None, exclusiveStartKey: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, totalSegments: scala.Option[primitives.ScanTotalSegments] = None, segment: scala.Option[primitives.ScanSegment] = None, projectionExpression: scala.Option[primitives.ProjectionExpression] = None, filterExpression: scala.Option[primitives.ConditionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None, consistentRead: scala.Option[primitives.ConsistentRead] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ScanRequest = {
      import ScanRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ScanRequest.builder().tableName(tableName: java.lang.String).optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(attributesToGet.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.attributesToGet).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).optionallyWith(select.map(value => value.unwrap))(_.select).optionallyWith(scanFilter.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.scanFilter).optionallyWith(conditionalOperator.map(value => value.unwrap))(_.conditionalOperator).optionallyWith(exclusiveStartKey.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.exclusiveStartKey).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(totalSegments.map(value => value: java.lang.Integer))(_.totalSegments).optionallyWith(segment.map(value => value: java.lang.Integer))(_.segment).optionallyWith(projectionExpression.map(value => value: java.lang.String))(_.projectionExpression).optionallyWith(filterExpression.map(value => value: java.lang.String))(_.filterExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).optionallyWith(consistentRead.map(value => value: java.lang.Boolean))(_.consistentRead).build()
    }
    def asReadOnly: ScanRequest.ReadOnly = ScanRequest.wrap(buildAwsValue())
  }
  object ScanRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ScanRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ScanRequest = ScanRequest(tableNameValue, indexNameValue.map(value => value), attributesToGetValue.map(value => value), limitValue.map(value => value), selectValue.map(value => value), scanFilterValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), conditionalOperatorValue.map(value => value), exclusiveStartKeyValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), returnConsumedCapacityValue.map(value => value), totalSegmentsValue.map(value => value), segmentValue.map(value => value), projectionExpressionValue.map(value => value), filterExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consistentReadValue.map(value => value))
      def tableNameValue: primitives.TableName
      def indexNameValue: scala.Option[primitives.IndexName]
      def attributesToGetValue: scala.Option[List[primitives.AttributeName]]
      def limitValue: scala.Option[primitives.PositiveIntegerObject]
      def selectValue: scala.Option[Select]
      def scanFilterValue: scala.Option[Map[primitives.AttributeName, Condition.ReadOnly]]
      def conditionalOperatorValue: scala.Option[ConditionalOperator]
      def exclusiveStartKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def totalSegmentsValue: scala.Option[primitives.ScanTotalSegments]
      def segmentValue: scala.Option[primitives.ScanSegment]
      def projectionExpressionValue: scala.Option[primitives.ProjectionExpression]
      def filterExpressionValue: scala.Option[primitives.ConditionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def consistentReadValue: scala.Option[primitives.ConsistentRead]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def attributesToGet: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributesToGet", attributesToGetValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveIntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
      def select: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Select] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("select", selectValue)
      def scanFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, Condition.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scanFilter", scanFilterValue)
      def conditionalOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConditionalOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionalOperator", conditionalOperatorValue)
      def exclusiveStartKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exclusiveStartKey", exclusiveStartKeyValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def totalSegments: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ScanTotalSegments] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("totalSegments", totalSegmentsValue)
      def segment: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ScanSegment] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("segment", segmentValue)
      def projectionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ProjectionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("projectionExpression", projectionExpressionValue)
      def filterExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("filterExpression", filterExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
      def consistentRead: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConsistentRead] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consistentRead", consistentReadValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ScanRequest) extends ScanRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def attributesToGetValue: scala.Option[List[primitives.AttributeName]] = scala.Option(impl.attributesToGet()).map(value => value.asScala.map { item => 
        item: primitives.AttributeName
      }.toList)
      override def limitValue: scala.Option[primitives.PositiveIntegerObject] = scala.Option(impl.limit()).map(value => value: primitives.PositiveIntegerObject)
      override def selectValue: scala.Option[Select] = scala.Option(impl.select()).map(value => Select.wrap(value))
      override def scanFilterValue: scala.Option[Map[primitives.AttributeName, Condition.ReadOnly]] = scala.Option(impl.scanFilter()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> Condition.wrap(value)
      }).toMap)
      override def conditionalOperatorValue: scala.Option[ConditionalOperator] = scala.Option(impl.conditionalOperator()).map(value => ConditionalOperator.wrap(value))
      override def exclusiveStartKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.exclusiveStartKey()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def totalSegmentsValue: scala.Option[primitives.ScanTotalSegments] = scala.Option(impl.totalSegments()).map(value => value: primitives.ScanTotalSegments)
      override def segmentValue: scala.Option[primitives.ScanSegment] = scala.Option(impl.segment()).map(value => value: primitives.ScanSegment)
      override def projectionExpressionValue: scala.Option[primitives.ProjectionExpression] = scala.Option(impl.projectionExpression()).map(value => value: primitives.ProjectionExpression)
      override def filterExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.filterExpression()).map(value => value: primitives.ConditionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
      override def consistentReadValue: scala.Option[primitives.ConsistentRead] = scala.Option(impl.consistentRead()).map(value => value: primitives.ConsistentRead)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ScanRequest): ReadOnly = new Wrapper(impl)
  }
  case class ScanResponse(items: scala.Option[Iterable[Map[primitives.AttributeName, AttributeValue]]] = None, count: scala.Option[primitives.Integer] = None, scannedCount: scala.Option[primitives.Integer] = None, lastEvaluatedKey: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, consumedCapacity: scala.Option[ConsumedCapacity] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ScanResponse = {
      import ScanResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ScanResponse.builder().optionallyWith(items.map(value => value.map { item => 
        item.map({
          case (key, value) =>
            (key: java.lang.String) -> value.buildAwsValue()
        }).asJava
      }.asJavaCollection))(_.items).optionallyWith(count.map(value => value: java.lang.Integer))(_.count).optionallyWith(scannedCount.map(value => value: java.lang.Integer))(_.scannedCount).optionallyWith(lastEvaluatedKey.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.lastEvaluatedKey).optionallyWith(consumedCapacity.map(value => value.buildAwsValue()))(_.consumedCapacity).build()
    }
    def asReadOnly: ScanResponse.ReadOnly = ScanResponse.wrap(buildAwsValue())
  }
  object ScanResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ScanResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ScanResponse = ScanResponse(itemsValue.map(value => value.map { item => 
        item.map({
          case (key, value) =>
            key -> value.editable
        })
      }), countValue.map(value => value), scannedCountValue.map(value => value), lastEvaluatedKeyValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consumedCapacityValue.map(value => value.editable))
      def itemsValue: scala.Option[List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]]
      def countValue: scala.Option[primitives.Integer]
      def scannedCountValue: scala.Option[primitives.Integer]
      def lastEvaluatedKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly]
      def items: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("items", itemsValue)
      def count: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("count", countValue)
      def scannedCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scannedCount", scannedCountValue)
      def lastEvaluatedKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastEvaluatedKey", lastEvaluatedKeyValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConsumedCapacity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ScanResponse) extends ScanResponse.ReadOnly {
      override def itemsValue: scala.Option[List[Map[primitives.AttributeName, AttributeValue.ReadOnly]]] = scala.Option(impl.items()).map(value => value.asScala.map { item => 
        item.asScala.map({
          case (key, value) =>
            (key: primitives.AttributeName) -> AttributeValue.wrap(value)
        }).toMap
      }.toList)
      override def countValue: scala.Option[primitives.Integer] = scala.Option(impl.count()).map(value => value: primitives.Integer)
      override def scannedCountValue: scala.Option[primitives.Integer] = scala.Option(impl.scannedCount()).map(value => value: primitives.Integer)
      override def lastEvaluatedKeyValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.lastEvaluatedKey()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly] = scala.Option(impl.consumedCapacity()).map(value => ConsumedCapacity.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ScanResponse): ReadOnly = new Wrapper(impl)
  }
  type SecondaryIndexesCapacityMap = Map[primitives.IndexName, Capacity]
  sealed trait Select { def unwrap: software.amazon.awssdk.services.dynamodb.model.Select }
  object Select {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.Select): Select = value match {
      case software.amazon.awssdk.services.dynamodb.model.Select.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.Select.ALL_ATTRIBUTES => ALL_ATTRIBUTES
      case software.amazon.awssdk.services.dynamodb.model.Select.ALL_PROJECTED_ATTRIBUTES => ALL_PROJECTED_ATTRIBUTES
      case software.amazon.awssdk.services.dynamodb.model.Select.SPECIFIC_ATTRIBUTES => SPECIFIC_ATTRIBUTES
      case software.amazon.awssdk.services.dynamodb.model.Select.COUNT => COUNT
    }
    final case object unknownToSdkVersion extends Select { override def unwrap: software.amazon.awssdk.services.dynamodb.model.Select = software.amazon.awssdk.services.dynamodb.model.Select.UNKNOWN_TO_SDK_VERSION }
    final case object ALL_ATTRIBUTES extends Select { override def unwrap: software.amazon.awssdk.services.dynamodb.model.Select = software.amazon.awssdk.services.dynamodb.model.Select.ALL_ATTRIBUTES }
    final case object ALL_PROJECTED_ATTRIBUTES extends Select { override def unwrap: software.amazon.awssdk.services.dynamodb.model.Select = software.amazon.awssdk.services.dynamodb.model.Select.ALL_PROJECTED_ATTRIBUTES }
    final case object SPECIFIC_ATTRIBUTES extends Select { override def unwrap: software.amazon.awssdk.services.dynamodb.model.Select = software.amazon.awssdk.services.dynamodb.model.Select.SPECIFIC_ATTRIBUTES }
    final case object COUNT extends Select { override def unwrap: software.amazon.awssdk.services.dynamodb.model.Select = software.amazon.awssdk.services.dynamodb.model.Select.COUNT }
  }
  case class SourceTableDetails(tableName: primitives.TableName, tableId: primitives.TableId, tableArn: scala.Option[primitives.TableArn] = None, tableSizeBytes: scala.Option[Long] = None, keySchema: Iterable[KeySchemaElement], tableCreationDateTime: primitives.TableCreationDateTime, provisionedThroughput: ProvisionedThroughput, itemCount: scala.Option[primitives.ItemCount] = None, billingMode: scala.Option[BillingMode] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.SourceTableDetails = {
      import SourceTableDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.SourceTableDetails.builder().tableName(tableName: java.lang.String).tableId(tableId: java.lang.String).optionallyWith(tableArn.map(value => value: java.lang.String))(_.tableArn).optionallyWith(tableSizeBytes.map(value => value: java.lang.Long))(_.tableSizeBytes).keySchema(keySchema.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).tableCreationDateTime(tableCreationDateTime: java.time.Instant).provisionedThroughput(provisionedThroughput.buildAwsValue()).optionallyWith(itemCount.map(value => value: java.lang.Long))(_.itemCount).optionallyWith(billingMode.map(value => value.unwrap))(_.billingMode).build()
    }
    def asReadOnly: SourceTableDetails.ReadOnly = SourceTableDetails.wrap(buildAwsValue())
  }
  object SourceTableDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.SourceTableDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SourceTableDetails = SourceTableDetails(tableNameValue, tableIdValue, tableArnValue.map(value => value), tableSizeBytesValue.map(value => value), keySchemaValue.map { item => 
        item.editable
      }, tableCreationDateTimeValue, provisionedThroughputValue.editable, itemCountValue.map(value => value), billingModeValue.map(value => value))
      def tableNameValue: primitives.TableName
      def tableIdValue: primitives.TableId
      def tableArnValue: scala.Option[primitives.TableArn]
      def tableSizeBytesValue: scala.Option[Long]
      def keySchemaValue: List[KeySchemaElement.ReadOnly]
      def tableCreationDateTimeValue: primitives.TableCreationDateTime
      def provisionedThroughputValue: ProvisionedThroughput.ReadOnly
      def itemCountValue: scala.Option[primitives.ItemCount]
      def billingModeValue: scala.Option[BillingMode]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def tableId: ZIO[Any, Nothing, primitives.TableId] = ZIO.succeed(tableIdValue)
      def tableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableArn", tableArnValue)
      def tableSizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableSizeBytes", tableSizeBytesValue)
      def keySchema: ZIO[Any, Nothing, List[KeySchemaElement.ReadOnly]] = ZIO.succeed(keySchemaValue)
      def tableCreationDateTime: ZIO[Any, Nothing, primitives.TableCreationDateTime] = ZIO.succeed(tableCreationDateTimeValue)
      def provisionedThroughput: ZIO[Any, Nothing, ProvisionedThroughput.ReadOnly] = ZIO.succeed(provisionedThroughputValue)
      def itemCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ItemCount] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCount", itemCountValue)
      def billingMode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billingMode", billingModeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.SourceTableDetails) extends SourceTableDetails.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def tableIdValue: primitives.TableId = impl.tableId(): primitives.TableId
      override def tableArnValue: scala.Option[primitives.TableArn] = scala.Option(impl.tableArn()).map(value => value: primitives.TableArn)
      override def tableSizeBytesValue: scala.Option[Long] = scala.Option(impl.tableSizeBytes()).map(value => value: Long)
      override def keySchemaValue: List[KeySchemaElement.ReadOnly] = impl.keySchema().asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList
      override def tableCreationDateTimeValue: primitives.TableCreationDateTime = impl.tableCreationDateTime(): primitives.TableCreationDateTime
      override def provisionedThroughputValue: ProvisionedThroughput.ReadOnly = ProvisionedThroughput.wrap(impl.provisionedThroughput())
      override def itemCountValue: scala.Option[primitives.ItemCount] = scala.Option(impl.itemCount()).map(value => value: primitives.ItemCount)
      override def billingModeValue: scala.Option[BillingMode] = scala.Option(impl.billingMode()).map(value => BillingMode.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.SourceTableDetails): ReadOnly = new Wrapper(impl)
  }
  case class SourceTableFeatureDetails(localSecondaryIndexes: scala.Option[Iterable[LocalSecondaryIndexInfo]] = None, globalSecondaryIndexes: scala.Option[Iterable[GlobalSecondaryIndexInfo]] = None, streamDescription: scala.Option[StreamSpecification] = None, timeToLiveDescription: scala.Option[TimeToLiveDescription] = None, sseDescription: scala.Option[SSEDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.SourceTableFeatureDetails = {
      import SourceTableFeatureDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.SourceTableFeatureDetails.builder().optionallyWith(localSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.localSecondaryIndexes).optionallyWith(globalSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexes).optionallyWith(streamDescription.map(value => value.buildAwsValue()))(_.streamDescription).optionallyWith(timeToLiveDescription.map(value => value.buildAwsValue()))(_.timeToLiveDescription).optionallyWith(sseDescription.map(value => value.buildAwsValue()))(_.sseDescription).build()
    }
    def asReadOnly: SourceTableFeatureDetails.ReadOnly = SourceTableFeatureDetails.wrap(buildAwsValue())
  }
  object SourceTableFeatureDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.SourceTableFeatureDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SourceTableFeatureDetails = SourceTableFeatureDetails(localSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), globalSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), streamDescriptionValue.map(value => value.editable), timeToLiveDescriptionValue.map(value => value.editable), sseDescriptionValue.map(value => value.editable))
      def localSecondaryIndexesValue: scala.Option[List[LocalSecondaryIndexInfo.ReadOnly]]
      def globalSecondaryIndexesValue: scala.Option[List[GlobalSecondaryIndexInfo.ReadOnly]]
      def streamDescriptionValue: scala.Option[StreamSpecification.ReadOnly]
      def timeToLiveDescriptionValue: scala.Option[TimeToLiveDescription.ReadOnly]
      def sseDescriptionValue: scala.Option[SSEDescription.ReadOnly]
      def localSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LocalSecondaryIndexInfo.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("localSecondaryIndexes", localSecondaryIndexesValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalSecondaryIndexInfo.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
      def streamDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamSpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamDescription", streamDescriptionValue)
      def timeToLiveDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TimeToLiveDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeToLiveDescription", timeToLiveDescriptionValue)
      def sseDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSEDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseDescription", sseDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.SourceTableFeatureDetails) extends SourceTableFeatureDetails.ReadOnly {
      override def localSecondaryIndexesValue: scala.Option[List[LocalSecondaryIndexInfo.ReadOnly]] = scala.Option(impl.localSecondaryIndexes()).map(value => value.asScala.map { item => 
        LocalSecondaryIndexInfo.wrap(item)
      }.toList)
      override def globalSecondaryIndexesValue: scala.Option[List[GlobalSecondaryIndexInfo.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map { item => 
        GlobalSecondaryIndexInfo.wrap(item)
      }.toList)
      override def streamDescriptionValue: scala.Option[StreamSpecification.ReadOnly] = scala.Option(impl.streamDescription()).map(value => StreamSpecification.wrap(value))
      override def timeToLiveDescriptionValue: scala.Option[TimeToLiveDescription.ReadOnly] = scala.Option(impl.timeToLiveDescription()).map(value => TimeToLiveDescription.wrap(value))
      override def sseDescriptionValue: scala.Option[SSEDescription.ReadOnly] = scala.Option(impl.sseDescription()).map(value => SSEDescription.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.SourceTableFeatureDetails): ReadOnly = new Wrapper(impl)
  }
  case class StreamSpecification(streamEnabled: primitives.StreamEnabled, streamViewType: scala.Option[StreamViewType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.StreamSpecification = {
      import StreamSpecification.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.StreamSpecification.builder().streamEnabled(streamEnabled: java.lang.Boolean).optionallyWith(streamViewType.map(value => value.unwrap))(_.streamViewType).build()
    }
    def asReadOnly: StreamSpecification.ReadOnly = StreamSpecification.wrap(buildAwsValue())
  }
  object StreamSpecification {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.StreamSpecification] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StreamSpecification = StreamSpecification(streamEnabledValue, streamViewTypeValue.map(value => value))
      def streamEnabledValue: primitives.StreamEnabled
      def streamViewTypeValue: scala.Option[StreamViewType]
      def streamEnabled: ZIO[Any, Nothing, primitives.StreamEnabled] = ZIO.succeed(streamEnabledValue)
      def streamViewType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamViewType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamViewType", streamViewTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.StreamSpecification) extends StreamSpecification.ReadOnly {
      override def streamEnabledValue: primitives.StreamEnabled = impl.streamEnabled(): primitives.StreamEnabled
      override def streamViewTypeValue: scala.Option[StreamViewType] = scala.Option(impl.streamViewType()).map(value => StreamViewType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.StreamSpecification): ReadOnly = new Wrapper(impl)
  }
  sealed trait StreamViewType { def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType }
  object StreamViewType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.StreamViewType): StreamViewType = value match {
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_IMAGE => NEW_IMAGE
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.OLD_IMAGE => OLD_IMAGE
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_AND_OLD_IMAGES => NEW_AND_OLD_IMAGES
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.KEYS_ONLY => KEYS_ONLY
    }
    final case object unknownToSdkVersion extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.UNKNOWN_TO_SDK_VERSION }
    final case object NEW_IMAGE extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_IMAGE }
    final case object OLD_IMAGE extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.OLD_IMAGE }
    final case object NEW_AND_OLD_IMAGES extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_AND_OLD_IMAGES }
    final case object KEYS_ONLY extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.KEYS_ONLY }
  }
  type StringSetAttributeValue = List[primitives.StringAttributeValue]
  case class TableAutoScalingDescription(tableName: scala.Option[primitives.TableName] = None, tableStatus: scala.Option[TableStatus] = None, replicas: scala.Option[Iterable[ReplicaAutoScalingDescription]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TableAutoScalingDescription = {
      import TableAutoScalingDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TableAutoScalingDescription.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(tableStatus.map(value => value.unwrap))(_.tableStatus).optionallyWith(replicas.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicas).build()
    }
    def asReadOnly: TableAutoScalingDescription.ReadOnly = TableAutoScalingDescription.wrap(buildAwsValue())
  }
  object TableAutoScalingDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TableAutoScalingDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TableAutoScalingDescription = TableAutoScalingDescription(tableNameValue.map(value => value), tableStatusValue.map(value => value), replicasValue.map(value => value.map { item => 
        item.editable
      }))
      def tableNameValue: scala.Option[primitives.TableName]
      def tableStatusValue: scala.Option[TableStatus]
      def replicasValue: scala.Option[List[ReplicaAutoScalingDescription.ReadOnly]]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def tableStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableStatus", tableStatusValue)
      def replicas: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaAutoScalingDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicas", replicasValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TableAutoScalingDescription) extends TableAutoScalingDescription.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def tableStatusValue: scala.Option[TableStatus] = scala.Option(impl.tableStatus()).map(value => TableStatus.wrap(value))
      override def replicasValue: scala.Option[List[ReplicaAutoScalingDescription.ReadOnly]] = scala.Option(impl.replicas()).map(value => value.asScala.map { item => 
        ReplicaAutoScalingDescription.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TableAutoScalingDescription): ReadOnly = new Wrapper(impl)
  }
  case class TableDescription(attributeDefinitions: scala.Option[Iterable[AttributeDefinition]] = None, tableName: scala.Option[primitives.TableName] = None, keySchema: scala.Option[Iterable[KeySchemaElement]] = None, tableStatus: scala.Option[TableStatus] = None, creationDateTime: scala.Option[primitives.Date] = None, provisionedThroughput: scala.Option[ProvisionedThroughputDescription] = None, tableSizeBytes: scala.Option[Long] = None, itemCount: scala.Option[Long] = None, tableArn: scala.Option[String] = None, tableId: scala.Option[primitives.TableId] = None, billingModeSummary: scala.Option[BillingModeSummary] = None, localSecondaryIndexes: scala.Option[Iterable[LocalSecondaryIndexDescription]] = None, globalSecondaryIndexes: scala.Option[Iterable[GlobalSecondaryIndexDescription]] = None, streamSpecification: scala.Option[StreamSpecification] = None, latestStreamLabel: scala.Option[String] = None, latestStreamArn: scala.Option[primitives.StreamArn] = None, globalTableVersion: scala.Option[String] = None, replicas: scala.Option[Iterable[ReplicaDescription]] = None, restoreSummary: scala.Option[RestoreSummary] = None, sseDescription: scala.Option[SSEDescription] = None, archivalSummary: scala.Option[ArchivalSummary] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TableDescription = {
      import TableDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TableDescription.builder().optionallyWith(attributeDefinitions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.attributeDefinitions).optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(keySchema.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.keySchema).optionallyWith(tableStatus.map(value => value.unwrap))(_.tableStatus).optionallyWith(creationDateTime.map(value => value: java.time.Instant))(_.creationDateTime).optionallyWith(provisionedThroughput.map(value => value.buildAwsValue()))(_.provisionedThroughput).optionallyWith(tableSizeBytes.map(value => value: java.lang.Long))(_.tableSizeBytes).optionallyWith(itemCount.map(value => value: java.lang.Long))(_.itemCount).optionallyWith(tableArn.map(value => value: java.lang.String))(_.tableArn).optionallyWith(tableId.map(value => value: java.lang.String))(_.tableId).optionallyWith(billingModeSummary.map(value => value.buildAwsValue()))(_.billingModeSummary).optionallyWith(localSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.localSecondaryIndexes).optionallyWith(globalSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexes).optionallyWith(streamSpecification.map(value => value.buildAwsValue()))(_.streamSpecification).optionallyWith(latestStreamLabel.map(value => value: java.lang.String))(_.latestStreamLabel).optionallyWith(latestStreamArn.map(value => value: java.lang.String))(_.latestStreamArn).optionallyWith(globalTableVersion.map(value => value: java.lang.String))(_.globalTableVersion).optionallyWith(replicas.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicas).optionallyWith(restoreSummary.map(value => value.buildAwsValue()))(_.restoreSummary).optionallyWith(sseDescription.map(value => value.buildAwsValue()))(_.sseDescription).optionallyWith(archivalSummary.map(value => value.buildAwsValue()))(_.archivalSummary).build()
    }
    def asReadOnly: TableDescription.ReadOnly = TableDescription.wrap(buildAwsValue())
  }
  object TableDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TableDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TableDescription = TableDescription(attributeDefinitionsValue.map(value => value.map { item => 
        item.editable
      }), tableNameValue.map(value => value), keySchemaValue.map(value => value.map { item => 
        item.editable
      }), tableStatusValue.map(value => value), creationDateTimeValue.map(value => value), provisionedThroughputValue.map(value => value.editable), tableSizeBytesValue.map(value => value), itemCountValue.map(value => value), tableArnValue.map(value => value), tableIdValue.map(value => value), billingModeSummaryValue.map(value => value.editable), localSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), globalSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }), streamSpecificationValue.map(value => value.editable), latestStreamLabelValue.map(value => value), latestStreamArnValue.map(value => value), globalTableVersionValue.map(value => value), replicasValue.map(value => value.map { item => 
        item.editable
      }), restoreSummaryValue.map(value => value.editable), sseDescriptionValue.map(value => value.editable), archivalSummaryValue.map(value => value.editable))
      def attributeDefinitionsValue: scala.Option[List[AttributeDefinition.ReadOnly]]
      def tableNameValue: scala.Option[primitives.TableName]
      def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]]
      def tableStatusValue: scala.Option[TableStatus]
      def creationDateTimeValue: scala.Option[primitives.Date]
      def provisionedThroughputValue: scala.Option[ProvisionedThroughputDescription.ReadOnly]
      def tableSizeBytesValue: scala.Option[Long]
      def itemCountValue: scala.Option[Long]
      def tableArnValue: scala.Option[String]
      def tableIdValue: scala.Option[primitives.TableId]
      def billingModeSummaryValue: scala.Option[BillingModeSummary.ReadOnly]
      def localSecondaryIndexesValue: scala.Option[List[LocalSecondaryIndexDescription.ReadOnly]]
      def globalSecondaryIndexesValue: scala.Option[List[GlobalSecondaryIndexDescription.ReadOnly]]
      def streamSpecificationValue: scala.Option[StreamSpecification.ReadOnly]
      def latestStreamLabelValue: scala.Option[String]
      def latestStreamArnValue: scala.Option[primitives.StreamArn]
      def globalTableVersionValue: scala.Option[String]
      def replicasValue: scala.Option[List[ReplicaDescription.ReadOnly]]
      def restoreSummaryValue: scala.Option[RestoreSummary.ReadOnly]
      def sseDescriptionValue: scala.Option[SSEDescription.ReadOnly]
      def archivalSummaryValue: scala.Option[ArchivalSummary.ReadOnly]
      def attributeDefinitions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeDefinition.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributeDefinitions", attributeDefinitionsValue)
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def keySchema: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KeySchemaElement.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keySchema", keySchemaValue)
      def tableStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableStatus", tableStatusValue)
      def creationDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("creationDateTime", creationDateTimeValue)
      def provisionedThroughput: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughputDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughput", provisionedThroughputValue)
      def tableSizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableSizeBytes", tableSizeBytesValue)
      def itemCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCount", itemCountValue)
      def tableArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableArn", tableArnValue)
      def tableId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableId", tableIdValue)
      def billingModeSummary: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingModeSummary.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billingModeSummary", billingModeSummaryValue)
      def localSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LocalSecondaryIndexDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("localSecondaryIndexes", localSecondaryIndexesValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalSecondaryIndexDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
      def streamSpecification: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamSpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamSpecification", streamSpecificationValue)
      def latestStreamLabel: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestStreamLabel", latestStreamLabelValue)
      def latestStreamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestStreamArn", latestStreamArnValue)
      def globalTableVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableVersion", globalTableVersionValue)
      def replicas: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicas", replicasValue)
      def restoreSummary: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RestoreSummary.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("restoreSummary", restoreSummaryValue)
      def sseDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSEDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseDescription", sseDescriptionValue)
      def archivalSummary: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ArchivalSummary.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("archivalSummary", archivalSummaryValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TableDescription) extends TableDescription.ReadOnly {
      override def attributeDefinitionsValue: scala.Option[List[AttributeDefinition.ReadOnly]] = scala.Option(impl.attributeDefinitions()).map(value => value.asScala.map { item => 
        AttributeDefinition.wrap(item)
      }.toList)
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]] = scala.Option(impl.keySchema()).map(value => value.asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList)
      override def tableStatusValue: scala.Option[TableStatus] = scala.Option(impl.tableStatus()).map(value => TableStatus.wrap(value))
      override def creationDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.creationDateTime()).map(value => value: primitives.Date)
      override def provisionedThroughputValue: scala.Option[ProvisionedThroughputDescription.ReadOnly] = scala.Option(impl.provisionedThroughput()).map(value => ProvisionedThroughputDescription.wrap(value))
      override def tableSizeBytesValue: scala.Option[Long] = scala.Option(impl.tableSizeBytes()).map(value => value: Long)
      override def itemCountValue: scala.Option[Long] = scala.Option(impl.itemCount()).map(value => value: Long)
      override def tableArnValue: scala.Option[String] = scala.Option(impl.tableArn()).map(value => value: String)
      override def tableIdValue: scala.Option[primitives.TableId] = scala.Option(impl.tableId()).map(value => value: primitives.TableId)
      override def billingModeSummaryValue: scala.Option[BillingModeSummary.ReadOnly] = scala.Option(impl.billingModeSummary()).map(value => BillingModeSummary.wrap(value))
      override def localSecondaryIndexesValue: scala.Option[List[LocalSecondaryIndexDescription.ReadOnly]] = scala.Option(impl.localSecondaryIndexes()).map(value => value.asScala.map { item => 
        LocalSecondaryIndexDescription.wrap(item)
      }.toList)
      override def globalSecondaryIndexesValue: scala.Option[List[GlobalSecondaryIndexDescription.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map { item => 
        GlobalSecondaryIndexDescription.wrap(item)
      }.toList)
      override def streamSpecificationValue: scala.Option[StreamSpecification.ReadOnly] = scala.Option(impl.streamSpecification()).map(value => StreamSpecification.wrap(value))
      override def latestStreamLabelValue: scala.Option[String] = scala.Option(impl.latestStreamLabel()).map(value => value: String)
      override def latestStreamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.latestStreamArn()).map(value => value: primitives.StreamArn)
      override def globalTableVersionValue: scala.Option[String] = scala.Option(impl.globalTableVersion()).map(value => value: String)
      override def replicasValue: scala.Option[List[ReplicaDescription.ReadOnly]] = scala.Option(impl.replicas()).map(value => value.asScala.map { item => 
        ReplicaDescription.wrap(item)
      }.toList)
      override def restoreSummaryValue: scala.Option[RestoreSummary.ReadOnly] = scala.Option(impl.restoreSummary()).map(value => RestoreSummary.wrap(value))
      override def sseDescriptionValue: scala.Option[SSEDescription.ReadOnly] = scala.Option(impl.sseDescription()).map(value => SSEDescription.wrap(value))
      override def archivalSummaryValue: scala.Option[ArchivalSummary.ReadOnly] = scala.Option(impl.archivalSummary()).map(value => ArchivalSummary.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TableDescription): ReadOnly = new Wrapper(impl)
  }
  type TableNameList = List[primitives.TableName]
  sealed trait TableStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus }
  object TableStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.TableStatus): TableStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.CREATING => CREATING
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.UPDATING => UPDATING
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.DELETING => DELETING
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.ACTIVE => ACTIVE
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.INACCESSIBLE_ENCRYPTION_CREDENTIALS => INACCESSIBLE_ENCRYPTION_CREDENTIALS
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.ARCHIVING => ARCHIVING
      case software.amazon.awssdk.services.dynamodb.model.TableStatus.ARCHIVED => ARCHIVED
    }
    final case object unknownToSdkVersion extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.UNKNOWN_TO_SDK_VERSION }
    final case object CREATING extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.CREATING }
    final case object UPDATING extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.UPDATING }
    final case object DELETING extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.DELETING }
    final case object ACTIVE extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.ACTIVE }
    final case object INACCESSIBLE_ENCRYPTION_CREDENTIALS extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.INACCESSIBLE_ENCRYPTION_CREDENTIALS }
    final case object ARCHIVING extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.ARCHIVING }
    final case object ARCHIVED extends TableStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TableStatus = software.amazon.awssdk.services.dynamodb.model.TableStatus.ARCHIVED }
  }
  case class Tag(key: primitives.TagKeyString, value: primitives.TagValueString) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Tag = {
      import Tag.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Tag.builder().key(key: java.lang.String).value(value: java.lang.String).build()
    }
    def asReadOnly: Tag.ReadOnly = Tag.wrap(buildAwsValue())
  }
  object Tag {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Tag] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Tag = Tag(keyValue, valueValue)
      def keyValue: primitives.TagKeyString
      def valueValue: primitives.TagValueString
      def key: ZIO[Any, Nothing, primitives.TagKeyString] = ZIO.succeed(keyValue)
      def value: ZIO[Any, Nothing, primitives.TagValueString] = ZIO.succeed(valueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Tag) extends Tag.ReadOnly {
      override def keyValue: primitives.TagKeyString = impl.key(): primitives.TagKeyString
      override def valueValue: primitives.TagValueString = impl.value(): primitives.TagValueString
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Tag): ReadOnly = new Wrapper(impl)
  }
  type TagKeyList = List[primitives.TagKeyString]
  type TagList = List[Tag]
  case class TagResourceRequest(resourceArn: primitives.ResourceArnString, tags: Iterable[Tag]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TagResourceRequest = {
      import TagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TagResourceRequest.builder().resourceArn(resourceArn: java.lang.String).tags(tags.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: TagResourceRequest.ReadOnly = TagResourceRequest.wrap(buildAwsValue())
  }
  object TagResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagResourceRequest = TagResourceRequest(resourceArnValue, tagsValue.map { item => 
        item.editable
      })
      def resourceArnValue: primitives.ResourceArnString
      def tagsValue: List[Tag.ReadOnly]
      def resourceArn: ZIO[Any, Nothing, primitives.ResourceArnString] = ZIO.succeed(resourceArnValue)
      def tags: ZIO[Any, Nothing, List[Tag.ReadOnly]] = ZIO.succeed(tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TagResourceRequest) extends TagResourceRequest.ReadOnly {
      override def resourceArnValue: primitives.ResourceArnString = impl.resourceArn(): primitives.ResourceArnString
      override def tagsValue: List[Tag.ReadOnly] = impl.tags().asScala.map { item => 
        Tag.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class TimeToLiveDescription(timeToLiveStatus: scala.Option[TimeToLiveStatus] = None, attributeName: scala.Option[primitives.TimeToLiveAttributeName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TimeToLiveDescription = {
      import TimeToLiveDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TimeToLiveDescription.builder().optionallyWith(timeToLiveStatus.map(value => value.unwrap))(_.timeToLiveStatus).optionallyWith(attributeName.map(value => value: java.lang.String))(_.attributeName).build()
    }
    def asReadOnly: TimeToLiveDescription.ReadOnly = TimeToLiveDescription.wrap(buildAwsValue())
  }
  object TimeToLiveDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TimeToLiveDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TimeToLiveDescription = TimeToLiveDescription(timeToLiveStatusValue.map(value => value), attributeNameValue.map(value => value))
      def timeToLiveStatusValue: scala.Option[TimeToLiveStatus]
      def attributeNameValue: scala.Option[primitives.TimeToLiveAttributeName]
      def timeToLiveStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TimeToLiveStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeToLiveStatus", timeToLiveStatusValue)
      def attributeName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TimeToLiveAttributeName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributeName", attributeNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TimeToLiveDescription) extends TimeToLiveDescription.ReadOnly {
      override def timeToLiveStatusValue: scala.Option[TimeToLiveStatus] = scala.Option(impl.timeToLiveStatus()).map(value => TimeToLiveStatus.wrap(value))
      override def attributeNameValue: scala.Option[primitives.TimeToLiveAttributeName] = scala.Option(impl.attributeName()).map(value => value: primitives.TimeToLiveAttributeName)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TimeToLiveDescription): ReadOnly = new Wrapper(impl)
  }
  case class TimeToLiveSpecification(enabled: primitives.TimeToLiveEnabled, attributeName: primitives.TimeToLiveAttributeName) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TimeToLiveSpecification = {
      import TimeToLiveSpecification.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TimeToLiveSpecification.builder().enabled(enabled: java.lang.Boolean).attributeName(attributeName: java.lang.String).build()
    }
    def asReadOnly: TimeToLiveSpecification.ReadOnly = TimeToLiveSpecification.wrap(buildAwsValue())
  }
  object TimeToLiveSpecification {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TimeToLiveSpecification] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TimeToLiveSpecification = TimeToLiveSpecification(enabledValue, attributeNameValue)
      def enabledValue: primitives.TimeToLiveEnabled
      def attributeNameValue: primitives.TimeToLiveAttributeName
      def enabled: ZIO[Any, Nothing, primitives.TimeToLiveEnabled] = ZIO.succeed(enabledValue)
      def attributeName: ZIO[Any, Nothing, primitives.TimeToLiveAttributeName] = ZIO.succeed(attributeNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TimeToLiveSpecification) extends TimeToLiveSpecification.ReadOnly {
      override def enabledValue: primitives.TimeToLiveEnabled = impl.enabled(): primitives.TimeToLiveEnabled
      override def attributeNameValue: primitives.TimeToLiveAttributeName = impl.attributeName(): primitives.TimeToLiveAttributeName
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TimeToLiveSpecification): ReadOnly = new Wrapper(impl)
  }
  sealed trait TimeToLiveStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus }
  object TimeToLiveStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus): TimeToLiveStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.ENABLING => ENABLING
      case software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.DISABLING => DISABLING
      case software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.ENABLED => ENABLED
      case software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.DISABLED => DISABLED
    }
    final case object unknownToSdkVersion extends TimeToLiveStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus = software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLING extends TimeToLiveStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus = software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.ENABLING }
    final case object DISABLING extends TimeToLiveStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus = software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.DISABLING }
    final case object ENABLED extends TimeToLiveStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus = software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.ENABLED }
    final case object DISABLED extends TimeToLiveStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus = software.amazon.awssdk.services.dynamodb.model.TimeToLiveStatus.DISABLED }
  }
  case class TransactGetItem(get: Get) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TransactGetItem = {
      import TransactGetItem.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TransactGetItem.builder().get(get.buildAwsValue()).build()
    }
    def asReadOnly: TransactGetItem.ReadOnly = TransactGetItem.wrap(buildAwsValue())
  }
  object TransactGetItem {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TransactGetItem] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TransactGetItem = TransactGetItem(getValue.editable)
      def getValue: Get.ReadOnly
      def get: ZIO[Any, Nothing, Get.ReadOnly] = ZIO.succeed(getValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TransactGetItem) extends TransactGetItem.ReadOnly { override def getValue: Get.ReadOnly = Get.wrap(impl.get()) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TransactGetItem): ReadOnly = new Wrapper(impl)
  }
  type TransactGetItemList = List[TransactGetItem]
  case class TransactGetItemsRequest(transactItems: Iterable[TransactGetItem], returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TransactGetItemsRequest = {
      import TransactGetItemsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TransactGetItemsRequest.builder().transactItems(transactItems.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).build()
    }
    def asReadOnly: TransactGetItemsRequest.ReadOnly = TransactGetItemsRequest.wrap(buildAwsValue())
  }
  object TransactGetItemsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TransactGetItemsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TransactGetItemsRequest = TransactGetItemsRequest(transactItemsValue.map { item => 
        item.editable
      }, returnConsumedCapacityValue.map(value => value))
      def transactItemsValue: List[TransactGetItem.ReadOnly]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def transactItems: ZIO[Any, Nothing, List[TransactGetItem.ReadOnly]] = ZIO.succeed(transactItemsValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TransactGetItemsRequest) extends TransactGetItemsRequest.ReadOnly {
      override def transactItemsValue: List[TransactGetItem.ReadOnly] = impl.transactItems().asScala.map { item => 
        TransactGetItem.wrap(item)
      }.toList
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TransactGetItemsRequest): ReadOnly = new Wrapper(impl)
  }
  case class TransactGetItemsResponse(consumedCapacity: scala.Option[Iterable[ConsumedCapacity]] = None, responses: scala.Option[Iterable[ItemResponse]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TransactGetItemsResponse = {
      import TransactGetItemsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TransactGetItemsResponse.builder().optionallyWith(consumedCapacity.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.consumedCapacity).optionallyWith(responses.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.responses).build()
    }
    def asReadOnly: TransactGetItemsResponse.ReadOnly = TransactGetItemsResponse.wrap(buildAwsValue())
  }
  object TransactGetItemsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TransactGetItemsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TransactGetItemsResponse = TransactGetItemsResponse(consumedCapacityValue.map(value => value.map { item => 
        item.editable
      }), responsesValue.map(value => value.map { item => 
        item.editable
      }))
      def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]]
      def responsesValue: scala.Option[List[ItemResponse.ReadOnly]]
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ConsumedCapacity.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
      def responses: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ItemResponse.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("responses", responsesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TransactGetItemsResponse) extends TransactGetItemsResponse.ReadOnly {
      override def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]] = scala.Option(impl.consumedCapacity()).map(value => value.asScala.map { item => 
        ConsumedCapacity.wrap(item)
      }.toList)
      override def responsesValue: scala.Option[List[ItemResponse.ReadOnly]] = scala.Option(impl.responses()).map(value => value.asScala.map { item => 
        ItemResponse.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TransactGetItemsResponse): ReadOnly = new Wrapper(impl)
  }
  case class TransactWriteItem(conditionCheck: scala.Option[ConditionCheck] = None, put: scala.Option[Put] = None, delete: scala.Option[Delete] = None, update: scala.Option[Update] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TransactWriteItem = {
      import TransactWriteItem.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TransactWriteItem.builder().optionallyWith(conditionCheck.map(value => value.buildAwsValue()))(_.conditionCheck).optionallyWith(put.map(value => value.buildAwsValue()))(_.put).optionallyWith(delete.map(value => value.buildAwsValue()))(_.delete).optionallyWith(update.map(value => value.buildAwsValue()))(_.update).build()
    }
    def asReadOnly: TransactWriteItem.ReadOnly = TransactWriteItem.wrap(buildAwsValue())
  }
  object TransactWriteItem {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TransactWriteItem] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TransactWriteItem = TransactWriteItem(conditionCheckValue.map(value => value.editable), putValue.map(value => value.editable), deleteValue.map(value => value.editable), updateValue.map(value => value.editable))
      def conditionCheckValue: scala.Option[ConditionCheck.ReadOnly]
      def putValue: scala.Option[Put.ReadOnly]
      def deleteValue: scala.Option[Delete.ReadOnly]
      def updateValue: scala.Option[Update.ReadOnly]
      def conditionCheck: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConditionCheck.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionCheck", conditionCheckValue)
      def put: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Put.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("put", putValue)
      def delete: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Delete.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("delete", deleteValue)
      def update: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Update.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("update", updateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TransactWriteItem) extends TransactWriteItem.ReadOnly {
      override def conditionCheckValue: scala.Option[ConditionCheck.ReadOnly] = scala.Option(impl.conditionCheck()).map(value => ConditionCheck.wrap(value))
      override def putValue: scala.Option[Put.ReadOnly] = scala.Option(impl.put()).map(value => Put.wrap(value))
      override def deleteValue: scala.Option[Delete.ReadOnly] = scala.Option(impl.delete()).map(value => Delete.wrap(value))
      override def updateValue: scala.Option[Update.ReadOnly] = scala.Option(impl.update()).map(value => Update.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TransactWriteItem): ReadOnly = new Wrapper(impl)
  }
  type TransactWriteItemList = List[TransactWriteItem]
  case class TransactWriteItemsRequest(transactItems: Iterable[TransactWriteItem], returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, returnItemCollectionMetrics: scala.Option[ReturnItemCollectionMetrics] = None, clientRequestToken: scala.Option[primitives.ClientRequestToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsRequest = {
      import TransactWriteItemsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsRequest.builder().transactItems(transactItems.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(returnItemCollectionMetrics.map(value => value.unwrap))(_.returnItemCollectionMetrics).optionallyWith(clientRequestToken.map(value => value: java.lang.String))(_.clientRequestToken).build()
    }
    def asReadOnly: TransactWriteItemsRequest.ReadOnly = TransactWriteItemsRequest.wrap(buildAwsValue())
  }
  object TransactWriteItemsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TransactWriteItemsRequest = TransactWriteItemsRequest(transactItemsValue.map { item => 
        item.editable
      }, returnConsumedCapacityValue.map(value => value), returnItemCollectionMetricsValue.map(value => value), clientRequestTokenValue.map(value => value))
      def transactItemsValue: List[TransactWriteItem.ReadOnly]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics]
      def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken]
      def transactItems: ZIO[Any, Nothing, List[TransactWriteItem.ReadOnly]] = ZIO.succeed(transactItemsValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def returnItemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnItemCollectionMetrics] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnItemCollectionMetrics", returnItemCollectionMetricsValue)
      def clientRequestToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ClientRequestToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("clientRequestToken", clientRequestTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsRequest) extends TransactWriteItemsRequest.ReadOnly {
      override def transactItemsValue: List[TransactWriteItem.ReadOnly] = impl.transactItems().asScala.map { item => 
        TransactWriteItem.wrap(item)
      }.toList
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics] = scala.Option(impl.returnItemCollectionMetrics()).map(value => ReturnItemCollectionMetrics.wrap(value))
      override def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken] = scala.Option(impl.clientRequestToken()).map(value => value: primitives.ClientRequestToken)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsRequest): ReadOnly = new Wrapper(impl)
  }
  case class TransactWriteItemsResponse(consumedCapacity: scala.Option[Iterable[ConsumedCapacity]] = None, itemCollectionMetrics: scala.Option[Map[primitives.TableName, Iterable[ItemCollectionMetrics]]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsResponse = {
      import TransactWriteItemsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsResponse.builder().optionallyWith(consumedCapacity.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.consumedCapacity).optionallyWith(itemCollectionMetrics.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item.buildAwsValue()
          }.asJavaCollection
      }).asJava))(_.itemCollectionMetrics).build()
    }
    def asReadOnly: TransactWriteItemsResponse.ReadOnly = TransactWriteItemsResponse.wrap(buildAwsValue())
  }
  object TransactWriteItemsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TransactWriteItemsResponse = TransactWriteItemsResponse(consumedCapacityValue.map(value => value.map { item => 
        item.editable
      }), itemCollectionMetricsValue.map(value => value.map({
        case (key, value) =>
          key -> value.map { item => 
            item.editable
          }
      })))
      def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]]
      def itemCollectionMetricsValue: scala.Option[Map[primitives.TableName, List[ItemCollectionMetrics.ReadOnly]]]
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ConsumedCapacity.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
      def itemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TableName, List[ItemCollectionMetrics.ReadOnly]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCollectionMetrics", itemCollectionMetricsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsResponse) extends TransactWriteItemsResponse.ReadOnly {
      override def consumedCapacityValue: scala.Option[List[ConsumedCapacity.ReadOnly]] = scala.Option(impl.consumedCapacity()).map(value => value.asScala.map { item => 
        ConsumedCapacity.wrap(item)
      }.toList)
      override def itemCollectionMetricsValue: scala.Option[Map[primitives.TableName, List[ItemCollectionMetrics.ReadOnly]]] = scala.Option(impl.itemCollectionMetrics()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TableName) -> value.asScala.map { item => 
            ItemCollectionMetrics.wrap(item)
          }.toList
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsResponse): ReadOnly = new Wrapper(impl)
  }
  case class UntagResourceRequest(resourceArn: primitives.ResourceArnString, tagKeys: Iterable[primitives.TagKeyString]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UntagResourceRequest = {
      import UntagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UntagResourceRequest.builder().resourceArn(resourceArn: java.lang.String).tagKeys(tagKeys.map { item => 
        item: java.lang.String
      }.asJavaCollection).build()
    }
    def asReadOnly: UntagResourceRequest.ReadOnly = UntagResourceRequest.wrap(buildAwsValue())
  }
  object UntagResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UntagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UntagResourceRequest = UntagResourceRequest(resourceArnValue, tagKeysValue)
      def resourceArnValue: primitives.ResourceArnString
      def tagKeysValue: List[primitives.TagKeyString]
      def resourceArn: ZIO[Any, Nothing, primitives.ResourceArnString] = ZIO.succeed(resourceArnValue)
      def tagKeys: ZIO[Any, Nothing, List[primitives.TagKeyString]] = ZIO.succeed(tagKeysValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UntagResourceRequest) extends UntagResourceRequest.ReadOnly {
      override def resourceArnValue: primitives.ResourceArnString = impl.resourceArn(): primitives.ResourceArnString
      override def tagKeysValue: List[primitives.TagKeyString] = impl.tagKeys().asScala.map { item => 
        item: primitives.TagKeyString
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UntagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class Update(key: Map[primitives.AttributeName, AttributeValue], updateExpression: primitives.UpdateExpression, tableName: primitives.TableName, conditionExpression: scala.Option[primitives.ConditionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None, returnValuesOnConditionCheckFailure: scala.Option[ReturnValuesOnConditionCheckFailure] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Update = {
      import Update.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Update.builder().key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).updateExpression(updateExpression: java.lang.String).tableName(tableName: java.lang.String).optionallyWith(conditionExpression.map(value => value: java.lang.String))(_.conditionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).optionallyWith(returnValuesOnConditionCheckFailure.map(value => value.unwrap))(_.returnValuesOnConditionCheckFailure).build()
    }
    def asReadOnly: Update.ReadOnly = Update.wrap(buildAwsValue())
  }
  object Update {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Update] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Update = Update(keyValue.map({
        case (key, value) =>
          key -> value.editable
      }), updateExpressionValue, tableNameValue, conditionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), returnValuesOnConditionCheckFailureValue.map(value => value))
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def updateExpressionValue: primitives.UpdateExpression
      def tableNameValue: primitives.TableName
      def conditionExpressionValue: scala.Option[primitives.ConditionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure]
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
      def updateExpression: ZIO[Any, Nothing, primitives.UpdateExpression] = ZIO.succeed(updateExpressionValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def conditionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionExpression", conditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
      def returnValuesOnConditionCheckFailure: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnValuesOnConditionCheckFailure] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnValuesOnConditionCheckFailure", returnValuesOnConditionCheckFailureValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Update) extends Update.ReadOnly {
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def updateExpressionValue: primitives.UpdateExpression = impl.updateExpression(): primitives.UpdateExpression
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def conditionExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.conditionExpression()).map(value => value: primitives.ConditionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
      override def returnValuesOnConditionCheckFailureValue: scala.Option[ReturnValuesOnConditionCheckFailure] = scala.Option(impl.returnValuesOnConditionCheckFailure()).map(value => ReturnValuesOnConditionCheckFailure.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Update): ReadOnly = new Wrapper(impl)
  }
  case class UpdateContinuousBackupsRequest(tableName: primitives.TableName, pointInTimeRecoverySpecification: PointInTimeRecoverySpecification) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsRequest = {
      import UpdateContinuousBackupsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsRequest.builder().tableName(tableName: java.lang.String).pointInTimeRecoverySpecification(pointInTimeRecoverySpecification.buildAwsValue()).build()
    }
    def asReadOnly: UpdateContinuousBackupsRequest.ReadOnly = UpdateContinuousBackupsRequest.wrap(buildAwsValue())
  }
  object UpdateContinuousBackupsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateContinuousBackupsRequest = UpdateContinuousBackupsRequest(tableNameValue, pointInTimeRecoverySpecificationValue.editable)
      def tableNameValue: primitives.TableName
      def pointInTimeRecoverySpecificationValue: PointInTimeRecoverySpecification.ReadOnly
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def pointInTimeRecoverySpecification: ZIO[Any, Nothing, PointInTimeRecoverySpecification.ReadOnly] = ZIO.succeed(pointInTimeRecoverySpecificationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsRequest) extends UpdateContinuousBackupsRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def pointInTimeRecoverySpecificationValue: PointInTimeRecoverySpecification.ReadOnly = PointInTimeRecoverySpecification.wrap(impl.pointInTimeRecoverySpecification())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateContinuousBackupsResponse(continuousBackupsDescription: scala.Option[ContinuousBackupsDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsResponse = {
      import UpdateContinuousBackupsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsResponse.builder().optionallyWith(continuousBackupsDescription.map(value => value.buildAwsValue()))(_.continuousBackupsDescription).build()
    }
    def asReadOnly: UpdateContinuousBackupsResponse.ReadOnly = UpdateContinuousBackupsResponse.wrap(buildAwsValue())
  }
  object UpdateContinuousBackupsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateContinuousBackupsResponse = UpdateContinuousBackupsResponse(continuousBackupsDescriptionValue.map(value => value.editable))
      def continuousBackupsDescriptionValue: scala.Option[ContinuousBackupsDescription.ReadOnly]
      def continuousBackupsDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContinuousBackupsDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("continuousBackupsDescription", continuousBackupsDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsResponse) extends UpdateContinuousBackupsResponse.ReadOnly { override def continuousBackupsDescriptionValue: scala.Option[ContinuousBackupsDescription.ReadOnly] = scala.Option(impl.continuousBackupsDescription()).map(value => ContinuousBackupsDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContinuousBackupsResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateContributorInsightsRequest(tableName: primitives.TableName, indexName: scala.Option[primitives.IndexName] = None, contributorInsightsAction: ContributorInsightsAction) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsRequest = {
      import UpdateContributorInsightsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsRequest.builder().tableName(tableName: java.lang.String).optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).contributorInsightsAction(contributorInsightsAction.unwrap).build()
    }
    def asReadOnly: UpdateContributorInsightsRequest.ReadOnly = UpdateContributorInsightsRequest.wrap(buildAwsValue())
  }
  object UpdateContributorInsightsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateContributorInsightsRequest = UpdateContributorInsightsRequest(tableNameValue, indexNameValue.map(value => value), contributorInsightsActionValue)
      def tableNameValue: primitives.TableName
      def indexNameValue: scala.Option[primitives.IndexName]
      def contributorInsightsActionValue: ContributorInsightsAction
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def contributorInsightsAction: ZIO[Any, Nothing, ContributorInsightsAction] = ZIO.succeed(contributorInsightsActionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsRequest) extends UpdateContributorInsightsRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def contributorInsightsActionValue: ContributorInsightsAction = ContributorInsightsAction.wrap(impl.contributorInsightsAction())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateContributorInsightsResponse(tableName: scala.Option[primitives.TableName] = None, indexName: scala.Option[primitives.IndexName] = None, contributorInsightsStatus: scala.Option[ContributorInsightsStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsResponse = {
      import UpdateContributorInsightsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsResponse.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(indexName.map(value => value: java.lang.String))(_.indexName).optionallyWith(contributorInsightsStatus.map(value => value.unwrap))(_.contributorInsightsStatus).build()
    }
    def asReadOnly: UpdateContributorInsightsResponse.ReadOnly = UpdateContributorInsightsResponse.wrap(buildAwsValue())
  }
  object UpdateContributorInsightsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateContributorInsightsResponse = UpdateContributorInsightsResponse(tableNameValue.map(value => value), indexNameValue.map(value => value), contributorInsightsStatusValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def indexNameValue: scala.Option[primitives.IndexName]
      def contributorInsightsStatusValue: scala.Option[ContributorInsightsStatus]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def indexName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IndexName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("indexName", indexNameValue)
      def contributorInsightsStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContributorInsightsStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contributorInsightsStatus", contributorInsightsStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsResponse) extends UpdateContributorInsightsResponse.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def indexNameValue: scala.Option[primitives.IndexName] = scala.Option(impl.indexName()).map(value => value: primitives.IndexName)
      override def contributorInsightsStatusValue: scala.Option[ContributorInsightsStatus] = scala.Option(impl.contributorInsightsStatus()).map(value => ContributorInsightsStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateContributorInsightsResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateGlobalSecondaryIndexAction(indexName: primitives.IndexName, provisionedThroughput: ProvisionedThroughput) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateGlobalSecondaryIndexAction = {
      import UpdateGlobalSecondaryIndexAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateGlobalSecondaryIndexAction.builder().indexName(indexName: java.lang.String).provisionedThroughput(provisionedThroughput.buildAwsValue()).build()
    }
    def asReadOnly: UpdateGlobalSecondaryIndexAction.ReadOnly = UpdateGlobalSecondaryIndexAction.wrap(buildAwsValue())
  }
  object UpdateGlobalSecondaryIndexAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateGlobalSecondaryIndexAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateGlobalSecondaryIndexAction = UpdateGlobalSecondaryIndexAction(indexNameValue, provisionedThroughputValue.editable)
      def indexNameValue: primitives.IndexName
      def provisionedThroughputValue: ProvisionedThroughput.ReadOnly
      def indexName: ZIO[Any, Nothing, primitives.IndexName] = ZIO.succeed(indexNameValue)
      def provisionedThroughput: ZIO[Any, Nothing, ProvisionedThroughput.ReadOnly] = ZIO.succeed(provisionedThroughputValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalSecondaryIndexAction) extends UpdateGlobalSecondaryIndexAction.ReadOnly {
      override def indexNameValue: primitives.IndexName = impl.indexName(): primitives.IndexName
      override def provisionedThroughputValue: ProvisionedThroughput.ReadOnly = ProvisionedThroughput.wrap(impl.provisionedThroughput())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalSecondaryIndexAction): ReadOnly = new Wrapper(impl)
  }
  case class UpdateGlobalTableRequest(globalTableName: primitives.TableName, replicaUpdates: Iterable[ReplicaUpdate]) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableRequest = {
      import UpdateGlobalTableRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableRequest.builder().globalTableName(globalTableName: java.lang.String).replicaUpdates(replicaUpdates.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: UpdateGlobalTableRequest.ReadOnly = UpdateGlobalTableRequest.wrap(buildAwsValue())
  }
  object UpdateGlobalTableRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateGlobalTableRequest = UpdateGlobalTableRequest(globalTableNameValue, replicaUpdatesValue.map { item => 
        item.editable
      })
      def globalTableNameValue: primitives.TableName
      def replicaUpdatesValue: List[ReplicaUpdate.ReadOnly]
      def globalTableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(globalTableNameValue)
      def replicaUpdates: ZIO[Any, Nothing, List[ReplicaUpdate.ReadOnly]] = ZIO.succeed(replicaUpdatesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableRequest) extends UpdateGlobalTableRequest.ReadOnly {
      override def globalTableNameValue: primitives.TableName = impl.globalTableName(): primitives.TableName
      override def replicaUpdatesValue: List[ReplicaUpdate.ReadOnly] = impl.replicaUpdates().asScala.map { item => 
        ReplicaUpdate.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateGlobalTableResponse(globalTableDescription: scala.Option[GlobalTableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableResponse = {
      import UpdateGlobalTableResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableResponse.builder().optionallyWith(globalTableDescription.map(value => value.buildAwsValue()))(_.globalTableDescription).build()
    }
    def asReadOnly: UpdateGlobalTableResponse.ReadOnly = UpdateGlobalTableResponse.wrap(buildAwsValue())
  }
  object UpdateGlobalTableResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateGlobalTableResponse = UpdateGlobalTableResponse(globalTableDescriptionValue.map(value => value.editable))
      def globalTableDescriptionValue: scala.Option[GlobalTableDescription.ReadOnly]
      def globalTableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GlobalTableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableDescription", globalTableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableResponse) extends UpdateGlobalTableResponse.ReadOnly { override def globalTableDescriptionValue: scala.Option[GlobalTableDescription.ReadOnly] = scala.Option(impl.globalTableDescription()).map(value => GlobalTableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateGlobalTableSettingsRequest(globalTableName: primitives.TableName, globalTableBillingMode: scala.Option[BillingMode] = None, globalTableProvisionedWriteCapacityUnits: scala.Option[primitives.PositiveLongObject] = None, globalTableProvisionedWriteCapacityAutoScalingSettingsUpdate: scala.Option[AutoScalingSettingsUpdate] = None, globalTableGlobalSecondaryIndexSettingsUpdate: scala.Option[Iterable[GlobalTableGlobalSecondaryIndexSettingsUpdate]] = None, replicaSettingsUpdate: scala.Option[Iterable[ReplicaSettingsUpdate]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsRequest = {
      import UpdateGlobalTableSettingsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsRequest.builder().globalTableName(globalTableName: java.lang.String).optionallyWith(globalTableBillingMode.map(value => value.unwrap))(_.globalTableBillingMode).optionallyWith(globalTableProvisionedWriteCapacityUnits.map(value => value: java.lang.Long))(_.globalTableProvisionedWriteCapacityUnits).optionallyWith(globalTableProvisionedWriteCapacityAutoScalingSettingsUpdate.map(value => value.buildAwsValue()))(_.globalTableProvisionedWriteCapacityAutoScalingSettingsUpdate).optionallyWith(globalTableGlobalSecondaryIndexSettingsUpdate.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalTableGlobalSecondaryIndexSettingsUpdate).optionallyWith(replicaSettingsUpdate.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaSettingsUpdate).build()
    }
    def asReadOnly: UpdateGlobalTableSettingsRequest.ReadOnly = UpdateGlobalTableSettingsRequest.wrap(buildAwsValue())
  }
  object UpdateGlobalTableSettingsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateGlobalTableSettingsRequest = UpdateGlobalTableSettingsRequest(globalTableNameValue, globalTableBillingModeValue.map(value => value), globalTableProvisionedWriteCapacityUnitsValue.map(value => value), globalTableProvisionedWriteCapacityAutoScalingSettingsUpdateValue.map(value => value.editable), globalTableGlobalSecondaryIndexSettingsUpdateValue.map(value => value.map { item => 
        item.editable
      }), replicaSettingsUpdateValue.map(value => value.map { item => 
        item.editable
      }))
      def globalTableNameValue: primitives.TableName
      def globalTableBillingModeValue: scala.Option[BillingMode]
      def globalTableProvisionedWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject]
      def globalTableProvisionedWriteCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def globalTableGlobalSecondaryIndexSettingsUpdateValue: scala.Option[List[GlobalTableGlobalSecondaryIndexSettingsUpdate.ReadOnly]]
      def replicaSettingsUpdateValue: scala.Option[List[ReplicaSettingsUpdate.ReadOnly]]
      def globalTableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(globalTableNameValue)
      def globalTableBillingMode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableBillingMode", globalTableBillingModeValue)
      def globalTableProvisionedWriteCapacityUnits: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableProvisionedWriteCapacityUnits", globalTableProvisionedWriteCapacityUnitsValue)
      def globalTableProvisionedWriteCapacityAutoScalingSettingsUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableProvisionedWriteCapacityAutoScalingSettingsUpdate", globalTableProvisionedWriteCapacityAutoScalingSettingsUpdateValue)
      def globalTableGlobalSecondaryIndexSettingsUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalTableGlobalSecondaryIndexSettingsUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableGlobalSecondaryIndexSettingsUpdate", globalTableGlobalSecondaryIndexSettingsUpdateValue)
      def replicaSettingsUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaSettingsUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaSettingsUpdate", replicaSettingsUpdateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsRequest) extends UpdateGlobalTableSettingsRequest.ReadOnly {
      override def globalTableNameValue: primitives.TableName = impl.globalTableName(): primitives.TableName
      override def globalTableBillingModeValue: scala.Option[BillingMode] = scala.Option(impl.globalTableBillingMode()).map(value => BillingMode.wrap(value))
      override def globalTableProvisionedWriteCapacityUnitsValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.globalTableProvisionedWriteCapacityUnits()).map(value => value: primitives.PositiveLongObject)
      override def globalTableProvisionedWriteCapacityAutoScalingSettingsUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.globalTableProvisionedWriteCapacityAutoScalingSettingsUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
      override def globalTableGlobalSecondaryIndexSettingsUpdateValue: scala.Option[List[GlobalTableGlobalSecondaryIndexSettingsUpdate.ReadOnly]] = scala.Option(impl.globalTableGlobalSecondaryIndexSettingsUpdate()).map(value => value.asScala.map { item => 
        GlobalTableGlobalSecondaryIndexSettingsUpdate.wrap(item)
      }.toList)
      override def replicaSettingsUpdateValue: scala.Option[List[ReplicaSettingsUpdate.ReadOnly]] = scala.Option(impl.replicaSettingsUpdate()).map(value => value.asScala.map { item => 
        ReplicaSettingsUpdate.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateGlobalTableSettingsResponse(globalTableName: scala.Option[primitives.TableName] = None, replicaSettings: scala.Option[Iterable[ReplicaSettingsDescription]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsResponse = {
      import UpdateGlobalTableSettingsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsResponse.builder().optionallyWith(globalTableName.map(value => value: java.lang.String))(_.globalTableName).optionallyWith(replicaSettings.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaSettings).build()
    }
    def asReadOnly: UpdateGlobalTableSettingsResponse.ReadOnly = UpdateGlobalTableSettingsResponse.wrap(buildAwsValue())
  }
  object UpdateGlobalTableSettingsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateGlobalTableSettingsResponse = UpdateGlobalTableSettingsResponse(globalTableNameValue.map(value => value), replicaSettingsValue.map(value => value.map { item => 
        item.editable
      }))
      def globalTableNameValue: scala.Option[primitives.TableName]
      def replicaSettingsValue: scala.Option[List[ReplicaSettingsDescription.ReadOnly]]
      def globalTableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalTableName", globalTableNameValue)
      def replicaSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaSettingsDescription.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaSettings", replicaSettingsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsResponse) extends UpdateGlobalTableSettingsResponse.ReadOnly {
      override def globalTableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.globalTableName()).map(value => value: primitives.TableName)
      override def replicaSettingsValue: scala.Option[List[ReplicaSettingsDescription.ReadOnly]] = scala.Option(impl.replicaSettings()).map(value => value.asScala.map { item => 
        ReplicaSettingsDescription.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateGlobalTableSettingsResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateItemRequest(tableName: primitives.TableName, key: Map[primitives.AttributeName, AttributeValue], attributeUpdates: scala.Option[Map[primitives.AttributeName, AttributeValueUpdate]] = None, expected: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue]] = None, conditionalOperator: scala.Option[ConditionalOperator] = None, returnValues: scala.Option[ReturnValue] = None, returnConsumedCapacity: scala.Option[ReturnConsumedCapacity] = None, returnItemCollectionMetrics: scala.Option[ReturnItemCollectionMetrics] = None, updateExpression: scala.Option[primitives.UpdateExpression] = None, conditionExpression: scala.Option[primitives.ConditionExpression] = None, expressionAttributeNames: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = None, expressionAttributeValues: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest = {
      import UpdateItemRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest.builder().tableName(tableName: java.lang.String).key(key.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava).optionallyWith(attributeUpdates.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.attributeUpdates).optionallyWith(expected.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expected).optionallyWith(conditionalOperator.map(value => value.unwrap))(_.conditionalOperator).optionallyWith(returnValues.map(value => value.unwrap))(_.returnValues).optionallyWith(returnConsumedCapacity.map(value => value.unwrap))(_.returnConsumedCapacity).optionallyWith(returnItemCollectionMetrics.map(value => value.unwrap))(_.returnItemCollectionMetrics).optionallyWith(updateExpression.map(value => value: java.lang.String))(_.updateExpression).optionallyWith(conditionExpression.map(value => value: java.lang.String))(_.conditionExpression).optionallyWith(expressionAttributeNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.expressionAttributeNames).optionallyWith(expressionAttributeValues.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.expressionAttributeValues).build()
    }
    def asReadOnly: UpdateItemRequest.ReadOnly = UpdateItemRequest.wrap(buildAwsValue())
  }
  object UpdateItemRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateItemRequest = UpdateItemRequest(tableNameValue, keyValue.map({
        case (key, value) =>
          key -> value.editable
      }), attributeUpdatesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), expectedValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), conditionalOperatorValue.map(value => value), returnValuesValue.map(value => value), returnConsumedCapacityValue.map(value => value), returnItemCollectionMetricsValue.map(value => value), updateExpressionValue.map(value => value), conditionExpressionValue.map(value => value), expressionAttributeNamesValue.map(value => value), expressionAttributeValuesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })))
      def tableNameValue: primitives.TableName
      def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly]
      def attributeUpdatesValue: scala.Option[Map[primitives.AttributeName, AttributeValueUpdate.ReadOnly]]
      def expectedValue: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]]
      def conditionalOperatorValue: scala.Option[ConditionalOperator]
      def returnValuesValue: scala.Option[ReturnValue]
      def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity]
      def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics]
      def updateExpressionValue: scala.Option[primitives.UpdateExpression]
      def conditionExpressionValue: scala.Option[primitives.ConditionExpression]
      def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]]
      def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]]
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def key: ZIO[Any, Nothing, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = ZIO.succeed(keyValue)
      def attributeUpdates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValueUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributeUpdates", attributeUpdatesValue)
      def expected: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expected", expectedValue)
      def conditionalOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConditionalOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionalOperator", conditionalOperatorValue)
      def returnValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnValues", returnValuesValue)
      def returnConsumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnConsumedCapacity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnConsumedCapacity", returnConsumedCapacityValue)
      def returnItemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ReturnItemCollectionMetrics] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("returnItemCollectionMetrics", returnItemCollectionMetricsValue)
      def updateExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.UpdateExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("updateExpression", updateExpressionValue)
      def conditionExpression: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConditionExpression] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("conditionExpression", conditionExpressionValue)
      def expressionAttributeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeNames", expressionAttributeNamesValue)
      def expressionAttributeValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expressionAttributeValues", expressionAttributeValuesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest) extends UpdateItemRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def keyValue: Map[primitives.AttributeName, AttributeValue.ReadOnly] = impl.key().asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap
      override def attributeUpdatesValue: scala.Option[Map[primitives.AttributeName, AttributeValueUpdate.ReadOnly]] = scala.Option(impl.attributeUpdates()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValueUpdate.wrap(value)
      }).toMap)
      override def expectedValue: scala.Option[Map[primitives.AttributeName, ExpectedAttributeValue.ReadOnly]] = scala.Option(impl.expected()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> ExpectedAttributeValue.wrap(value)
      }).toMap)
      override def conditionalOperatorValue: scala.Option[ConditionalOperator] = scala.Option(impl.conditionalOperator()).map(value => ConditionalOperator.wrap(value))
      override def returnValuesValue: scala.Option[ReturnValue] = scala.Option(impl.returnValues()).map(value => ReturnValue.wrap(value))
      override def returnConsumedCapacityValue: scala.Option[ReturnConsumedCapacity] = scala.Option(impl.returnConsumedCapacity()).map(value => ReturnConsumedCapacity.wrap(value))
      override def returnItemCollectionMetricsValue: scala.Option[ReturnItemCollectionMetrics] = scala.Option(impl.returnItemCollectionMetrics()).map(value => ReturnItemCollectionMetrics.wrap(value))
      override def updateExpressionValue: scala.Option[primitives.UpdateExpression] = scala.Option(impl.updateExpression()).map(value => value: primitives.UpdateExpression)
      override def conditionExpressionValue: scala.Option[primitives.ConditionExpression] = scala.Option(impl.conditionExpression()).map(value => value: primitives.ConditionExpression)
      override def expressionAttributeNamesValue: scala.Option[Map[primitives.ExpressionAttributeNameVariable, primitives.AttributeName]] = scala.Option(impl.expressionAttributeNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeNameVariable) -> (value: primitives.AttributeName)
      }).toMap)
      override def expressionAttributeValuesValue: scala.Option[Map[primitives.ExpressionAttributeValueVariable, AttributeValue.ReadOnly]] = scala.Option(impl.expressionAttributeValues()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ExpressionAttributeValueVariable) -> AttributeValue.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateItemResponse(attributes: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, consumedCapacity: scala.Option[ConsumedCapacity] = None, itemCollectionMetrics: scala.Option[ItemCollectionMetrics] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateItemResponse = {
      import UpdateItemResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateItemResponse.builder().optionallyWith(attributes.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.attributes).optionallyWith(consumedCapacity.map(value => value.buildAwsValue()))(_.consumedCapacity).optionallyWith(itemCollectionMetrics.map(value => value.buildAwsValue()))(_.itemCollectionMetrics).build()
    }
    def asReadOnly: UpdateItemResponse.ReadOnly = UpdateItemResponse.wrap(buildAwsValue())
  }
  object UpdateItemResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateItemResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateItemResponse = UpdateItemResponse(attributesValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), consumedCapacityValue.map(value => value.editable), itemCollectionMetricsValue.map(value => value.editable))
      def attributesValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly]
      def itemCollectionMetricsValue: scala.Option[ItemCollectionMetrics.ReadOnly]
      def attributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributes", attributesValue)
      def consumedCapacity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConsumedCapacity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("consumedCapacity", consumedCapacityValue)
      def itemCollectionMetrics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ItemCollectionMetrics.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("itemCollectionMetrics", itemCollectionMetricsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateItemResponse) extends UpdateItemResponse.ReadOnly {
      override def attributesValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.attributes()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def consumedCapacityValue: scala.Option[ConsumedCapacity.ReadOnly] = scala.Option(impl.consumedCapacity()).map(value => ConsumedCapacity.wrap(value))
      override def itemCollectionMetricsValue: scala.Option[ItemCollectionMetrics.ReadOnly] = scala.Option(impl.itemCollectionMetrics()).map(value => ItemCollectionMetrics.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateItemResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateReplicationGroupMemberAction(regionName: primitives.RegionName, kmsMasterKeyId: scala.Option[primitives.KMSMasterKeyId] = None, provisionedThroughputOverride: scala.Option[ProvisionedThroughputOverride] = None, globalSecondaryIndexes: scala.Option[Iterable[ReplicaGlobalSecondaryIndex]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateReplicationGroupMemberAction = {
      import UpdateReplicationGroupMemberAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateReplicationGroupMemberAction.builder().regionName(regionName: java.lang.String).optionallyWith(kmsMasterKeyId.map(value => value: java.lang.String))(_.kmsMasterKeyId).optionallyWith(provisionedThroughputOverride.map(value => value.buildAwsValue()))(_.provisionedThroughputOverride).optionallyWith(globalSecondaryIndexes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexes).build()
    }
    def asReadOnly: UpdateReplicationGroupMemberAction.ReadOnly = UpdateReplicationGroupMemberAction.wrap(buildAwsValue())
  }
  object UpdateReplicationGroupMemberAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateReplicationGroupMemberAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateReplicationGroupMemberAction = UpdateReplicationGroupMemberAction(regionNameValue, kmsMasterKeyIdValue.map(value => value), provisionedThroughputOverrideValue.map(value => value.editable), globalSecondaryIndexesValue.map(value => value.map { item => 
        item.editable
      }))
      def regionNameValue: primitives.RegionName
      def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId]
      def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly]
      def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndex.ReadOnly]]
      def regionName: ZIO[Any, Nothing, primitives.RegionName] = ZIO.succeed(regionNameValue)
      def kmsMasterKeyId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSMasterKeyId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsMasterKeyId", kmsMasterKeyIdValue)
      def provisionedThroughputOverride: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughputOverride.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughputOverride", provisionedThroughputOverrideValue)
      def globalSecondaryIndexes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaGlobalSecondaryIndex.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexes", globalSecondaryIndexesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateReplicationGroupMemberAction) extends UpdateReplicationGroupMemberAction.ReadOnly {
      override def regionNameValue: primitives.RegionName = impl.regionName(): primitives.RegionName
      override def kmsMasterKeyIdValue: scala.Option[primitives.KMSMasterKeyId] = scala.Option(impl.kmsMasterKeyId()).map(value => value: primitives.KMSMasterKeyId)
      override def provisionedThroughputOverrideValue: scala.Option[ProvisionedThroughputOverride.ReadOnly] = scala.Option(impl.provisionedThroughputOverride()).map(value => ProvisionedThroughputOverride.wrap(value))
      override def globalSecondaryIndexesValue: scala.Option[List[ReplicaGlobalSecondaryIndex.ReadOnly]] = scala.Option(impl.globalSecondaryIndexes()).map(value => value.asScala.map { item => 
        ReplicaGlobalSecondaryIndex.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateReplicationGroupMemberAction): ReadOnly = new Wrapper(impl)
  }
  case class UpdateTableReplicaAutoScalingRequest(globalSecondaryIndexUpdates: scala.Option[Iterable[GlobalSecondaryIndexAutoScalingUpdate]] = None, tableName: primitives.TableName, provisionedWriteCapacityAutoScalingUpdate: scala.Option[AutoScalingSettingsUpdate] = None, replicaUpdates: scala.Option[Iterable[ReplicaAutoScalingUpdate]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingRequest = {
      import UpdateTableReplicaAutoScalingRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingRequest.builder().optionallyWith(globalSecondaryIndexUpdates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexUpdates).tableName(tableName: java.lang.String).optionallyWith(provisionedWriteCapacityAutoScalingUpdate.map(value => value.buildAwsValue()))(_.provisionedWriteCapacityAutoScalingUpdate).optionallyWith(replicaUpdates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaUpdates).build()
    }
    def asReadOnly: UpdateTableReplicaAutoScalingRequest.ReadOnly = UpdateTableReplicaAutoScalingRequest.wrap(buildAwsValue())
  }
  object UpdateTableReplicaAutoScalingRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateTableReplicaAutoScalingRequest = UpdateTableReplicaAutoScalingRequest(globalSecondaryIndexUpdatesValue.map(value => value.map { item => 
        item.editable
      }), tableNameValue, provisionedWriteCapacityAutoScalingUpdateValue.map(value => value.editable), replicaUpdatesValue.map(value => value.map { item => 
        item.editable
      }))
      def globalSecondaryIndexUpdatesValue: scala.Option[List[GlobalSecondaryIndexAutoScalingUpdate.ReadOnly]]
      def tableNameValue: primitives.TableName
      def provisionedWriteCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly]
      def replicaUpdatesValue: scala.Option[List[ReplicaAutoScalingUpdate.ReadOnly]]
      def globalSecondaryIndexUpdates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalSecondaryIndexAutoScalingUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexUpdates", globalSecondaryIndexUpdatesValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def provisionedWriteCapacityAutoScalingUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoScalingSettingsUpdate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedWriteCapacityAutoScalingUpdate", provisionedWriteCapacityAutoScalingUpdateValue)
      def replicaUpdates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicaAutoScalingUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaUpdates", replicaUpdatesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingRequest) extends UpdateTableReplicaAutoScalingRequest.ReadOnly {
      override def globalSecondaryIndexUpdatesValue: scala.Option[List[GlobalSecondaryIndexAutoScalingUpdate.ReadOnly]] = scala.Option(impl.globalSecondaryIndexUpdates()).map(value => value.asScala.map { item => 
        GlobalSecondaryIndexAutoScalingUpdate.wrap(item)
      }.toList)
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def provisionedWriteCapacityAutoScalingUpdateValue: scala.Option[AutoScalingSettingsUpdate.ReadOnly] = scala.Option(impl.provisionedWriteCapacityAutoScalingUpdate()).map(value => AutoScalingSettingsUpdate.wrap(value))
      override def replicaUpdatesValue: scala.Option[List[ReplicaAutoScalingUpdate.ReadOnly]] = scala.Option(impl.replicaUpdates()).map(value => value.asScala.map { item => 
        ReplicaAutoScalingUpdate.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateTableReplicaAutoScalingResponse(tableAutoScalingDescription: scala.Option[TableAutoScalingDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingResponse = {
      import UpdateTableReplicaAutoScalingResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingResponse.builder().optionallyWith(tableAutoScalingDescription.map(value => value.buildAwsValue()))(_.tableAutoScalingDescription).build()
    }
    def asReadOnly: UpdateTableReplicaAutoScalingResponse.ReadOnly = UpdateTableReplicaAutoScalingResponse.wrap(buildAwsValue())
  }
  object UpdateTableReplicaAutoScalingResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateTableReplicaAutoScalingResponse = UpdateTableReplicaAutoScalingResponse(tableAutoScalingDescriptionValue.map(value => value.editable))
      def tableAutoScalingDescriptionValue: scala.Option[TableAutoScalingDescription.ReadOnly]
      def tableAutoScalingDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableAutoScalingDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableAutoScalingDescription", tableAutoScalingDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingResponse) extends UpdateTableReplicaAutoScalingResponse.ReadOnly { override def tableAutoScalingDescriptionValue: scala.Option[TableAutoScalingDescription.ReadOnly] = scala.Option(impl.tableAutoScalingDescription()).map(value => TableAutoScalingDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableReplicaAutoScalingResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateTableRequest(attributeDefinitions: scala.Option[Iterable[AttributeDefinition]] = None, tableName: primitives.TableName, billingMode: scala.Option[BillingMode] = None, provisionedThroughput: scala.Option[ProvisionedThroughput] = None, globalSecondaryIndexUpdates: scala.Option[Iterable[GlobalSecondaryIndexUpdate]] = None, streamSpecification: scala.Option[StreamSpecification] = None, sseSpecification: scala.Option[SSESpecification] = None, replicaUpdates: scala.Option[Iterable[ReplicationGroupUpdate]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateTableRequest = {
      import UpdateTableRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateTableRequest.builder().optionallyWith(attributeDefinitions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.attributeDefinitions).tableName(tableName: java.lang.String).optionallyWith(billingMode.map(value => value.unwrap))(_.billingMode).optionallyWith(provisionedThroughput.map(value => value.buildAwsValue()))(_.provisionedThroughput).optionallyWith(globalSecondaryIndexUpdates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.globalSecondaryIndexUpdates).optionallyWith(streamSpecification.map(value => value.buildAwsValue()))(_.streamSpecification).optionallyWith(sseSpecification.map(value => value.buildAwsValue()))(_.sseSpecification).optionallyWith(replicaUpdates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.replicaUpdates).build()
    }
    def asReadOnly: UpdateTableRequest.ReadOnly = UpdateTableRequest.wrap(buildAwsValue())
  }
  object UpdateTableRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateTableRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateTableRequest = UpdateTableRequest(attributeDefinitionsValue.map(value => value.map { item => 
        item.editable
      }), tableNameValue, billingModeValue.map(value => value), provisionedThroughputValue.map(value => value.editable), globalSecondaryIndexUpdatesValue.map(value => value.map { item => 
        item.editable
      }), streamSpecificationValue.map(value => value.editable), sseSpecificationValue.map(value => value.editable), replicaUpdatesValue.map(value => value.map { item => 
        item.editable
      }))
      def attributeDefinitionsValue: scala.Option[List[AttributeDefinition.ReadOnly]]
      def tableNameValue: primitives.TableName
      def billingModeValue: scala.Option[BillingMode]
      def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly]
      def globalSecondaryIndexUpdatesValue: scala.Option[List[GlobalSecondaryIndexUpdate.ReadOnly]]
      def streamSpecificationValue: scala.Option[StreamSpecification.ReadOnly]
      def sseSpecificationValue: scala.Option[SSESpecification.ReadOnly]
      def replicaUpdatesValue: scala.Option[List[ReplicationGroupUpdate.ReadOnly]]
      def attributeDefinitions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeDefinition.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attributeDefinitions", attributeDefinitionsValue)
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def billingMode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BillingMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("billingMode", billingModeValue)
      def provisionedThroughput: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ProvisionedThroughput.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("provisionedThroughput", provisionedThroughputValue)
      def globalSecondaryIndexUpdates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[GlobalSecondaryIndexUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("globalSecondaryIndexUpdates", globalSecondaryIndexUpdatesValue)
      def streamSpecification: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamSpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamSpecification", streamSpecificationValue)
      def sseSpecification: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SSESpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sseSpecification", sseSpecificationValue)
      def replicaUpdates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ReplicationGroupUpdate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("replicaUpdates", replicaUpdatesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableRequest) extends UpdateTableRequest.ReadOnly {
      override def attributeDefinitionsValue: scala.Option[List[AttributeDefinition.ReadOnly]] = scala.Option(impl.attributeDefinitions()).map(value => value.asScala.map { item => 
        AttributeDefinition.wrap(item)
      }.toList)
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def billingModeValue: scala.Option[BillingMode] = scala.Option(impl.billingMode()).map(value => BillingMode.wrap(value))
      override def provisionedThroughputValue: scala.Option[ProvisionedThroughput.ReadOnly] = scala.Option(impl.provisionedThroughput()).map(value => ProvisionedThroughput.wrap(value))
      override def globalSecondaryIndexUpdatesValue: scala.Option[List[GlobalSecondaryIndexUpdate.ReadOnly]] = scala.Option(impl.globalSecondaryIndexUpdates()).map(value => value.asScala.map { item => 
        GlobalSecondaryIndexUpdate.wrap(item)
      }.toList)
      override def streamSpecificationValue: scala.Option[StreamSpecification.ReadOnly] = scala.Option(impl.streamSpecification()).map(value => StreamSpecification.wrap(value))
      override def sseSpecificationValue: scala.Option[SSESpecification.ReadOnly] = scala.Option(impl.sseSpecification()).map(value => SSESpecification.wrap(value))
      override def replicaUpdatesValue: scala.Option[List[ReplicationGroupUpdate.ReadOnly]] = scala.Option(impl.replicaUpdates()).map(value => value.asScala.map { item => 
        ReplicationGroupUpdate.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateTableResponse(tableDescription: scala.Option[TableDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateTableResponse = {
      import UpdateTableResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateTableResponse.builder().optionallyWith(tableDescription.map(value => value.buildAwsValue()))(_.tableDescription).build()
    }
    def asReadOnly: UpdateTableResponse.ReadOnly = UpdateTableResponse.wrap(buildAwsValue())
  }
  object UpdateTableResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateTableResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateTableResponse = UpdateTableResponse(tableDescriptionValue.map(value => value.editable))
      def tableDescriptionValue: scala.Option[TableDescription.ReadOnly]
      def tableDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TableDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableDescription", tableDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableResponse) extends UpdateTableResponse.ReadOnly { override def tableDescriptionValue: scala.Option[TableDescription.ReadOnly] = scala.Option(impl.tableDescription()).map(value => TableDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTableResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateTimeToLiveRequest(tableName: primitives.TableName, timeToLiveSpecification: TimeToLiveSpecification) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveRequest = {
      import UpdateTimeToLiveRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveRequest.builder().tableName(tableName: java.lang.String).timeToLiveSpecification(timeToLiveSpecification.buildAwsValue()).build()
    }
    def asReadOnly: UpdateTimeToLiveRequest.ReadOnly = UpdateTimeToLiveRequest.wrap(buildAwsValue())
  }
  object UpdateTimeToLiveRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateTimeToLiveRequest = UpdateTimeToLiveRequest(tableNameValue, timeToLiveSpecificationValue.editable)
      def tableNameValue: primitives.TableName
      def timeToLiveSpecificationValue: TimeToLiveSpecification.ReadOnly
      def tableName: ZIO[Any, Nothing, primitives.TableName] = ZIO.succeed(tableNameValue)
      def timeToLiveSpecification: ZIO[Any, Nothing, TimeToLiveSpecification.ReadOnly] = ZIO.succeed(timeToLiveSpecificationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveRequest) extends UpdateTimeToLiveRequest.ReadOnly {
      override def tableNameValue: primitives.TableName = impl.tableName(): primitives.TableName
      override def timeToLiveSpecificationValue: TimeToLiveSpecification.ReadOnly = TimeToLiveSpecification.wrap(impl.timeToLiveSpecification())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateTimeToLiveResponse(timeToLiveSpecification: scala.Option[TimeToLiveSpecification] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveResponse = {
      import UpdateTimeToLiveResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveResponse.builder().optionallyWith(timeToLiveSpecification.map(value => value.buildAwsValue()))(_.timeToLiveSpecification).build()
    }
    def asReadOnly: UpdateTimeToLiveResponse.ReadOnly = UpdateTimeToLiveResponse.wrap(buildAwsValue())
  }
  object UpdateTimeToLiveResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateTimeToLiveResponse = UpdateTimeToLiveResponse(timeToLiveSpecificationValue.map(value => value.editable))
      def timeToLiveSpecificationValue: scala.Option[TimeToLiveSpecification.ReadOnly]
      def timeToLiveSpecification: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TimeToLiveSpecification.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeToLiveSpecification", timeToLiveSpecificationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveResponse) extends UpdateTimeToLiveResponse.ReadOnly { override def timeToLiveSpecificationValue: scala.Option[TimeToLiveSpecification.ReadOnly] = scala.Option(impl.timeToLiveSpecification()).map(value => TimeToLiveSpecification.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.UpdateTimeToLiveResponse): ReadOnly = new Wrapper(impl)
  }
  case class WriteRequest(putRequest: scala.Option[PutRequest] = None, deleteRequest: scala.Option[DeleteRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.WriteRequest = {
      import WriteRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.WriteRequest.builder().optionallyWith(putRequest.map(value => value.buildAwsValue()))(_.putRequest).optionallyWith(deleteRequest.map(value => value.buildAwsValue()))(_.deleteRequest).build()
    }
    def asReadOnly: WriteRequest.ReadOnly = WriteRequest.wrap(buildAwsValue())
  }
  object WriteRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.WriteRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WriteRequest = WriteRequest(putRequestValue.map(value => value.editable), deleteRequestValue.map(value => value.editable))
      def putRequestValue: scala.Option[PutRequest.ReadOnly]
      def deleteRequestValue: scala.Option[DeleteRequest.ReadOnly]
      def putRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PutRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("putRequest", putRequestValue)
      def deleteRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DeleteRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("deleteRequest", deleteRequestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.WriteRequest) extends WriteRequest.ReadOnly {
      override def putRequestValue: scala.Option[PutRequest.ReadOnly] = scala.Option(impl.putRequest()).map(value => PutRequest.wrap(value))
      override def deleteRequestValue: scala.Option[DeleteRequest.ReadOnly] = scala.Option(impl.deleteRequest()).map(value => DeleteRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.WriteRequest): ReadOnly = new Wrapper(impl)
  }
  type WriteRequests = List[WriteRequest]
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy