 
                        
        
                        
        io.github.vigoo.zioaws.lightsail.model.package.scala Maven / Gradle / Ivy
package io.github.vigoo.zioaws.lightsail
import scala.jdk.CollectionConverters._
import java.time.Instant
import zio.{ Chunk, ZIO }
import software.amazon.awssdk.core.SdkBytes
package object model {
  object primitives {
    type AutoSnapshotDate = String
    type Base64 = String
    type CertificateName = String
    type ContainerLabel = String
    type ContainerName = String
    type ContainerServiceName = String
    type ContainerServiceScale = Int
    type DomainEntryOptionsKeys = String
    type DomainEntryType = String
    type DomainName = String
    type EligibleToRenew = String
    type InUseResourceCount = Int
    type IncludeCertificateDetails = Boolean
    type Integer = Int
    type IpAddress = String
    type Ipv6Address = String
    type IsoDate = Instant
    type IssuerCA = String
    type KeyAlgorithm = String
    type MetricPeriod = Int
    type NonEmptyString = String
    type Port = Int
    type RenewalStatusReason = String
    type RequestFailureReason = String
    type ResourceArn = String
    type ResourceName = String
    type RevocationReason = String
    type SensitiveString = String
    type SerialNumber = String
    type StringMax256 = String
    type TagKey = String
    type TagValue = String
    type TimeOfDay = String
    type Timestamp = Instant
  }
  sealed trait AccessDirection { def unwrap: software.amazon.awssdk.services.lightsail.model.AccessDirection }
  object AccessDirection {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.AccessDirection): AccessDirection = value match {
      case software.amazon.awssdk.services.lightsail.model.AccessDirection.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.AccessDirection.INBOUND => inbound
      case software.amazon.awssdk.services.lightsail.model.AccessDirection.OUTBOUND => outbound
    }
    final case object unknownToSdkVersion extends AccessDirection { override def unwrap: software.amazon.awssdk.services.lightsail.model.AccessDirection = software.amazon.awssdk.services.lightsail.model.AccessDirection.UNKNOWN_TO_SDK_VERSION }
    final case object inbound extends AccessDirection { override def unwrap: software.amazon.awssdk.services.lightsail.model.AccessDirection = software.amazon.awssdk.services.lightsail.model.AccessDirection.INBOUND }
    final case object outbound extends AccessDirection { override def unwrap: software.amazon.awssdk.services.lightsail.model.AccessDirection = software.amazon.awssdk.services.lightsail.model.AccessDirection.OUTBOUND }
  }
  case class AddOn(name: scala.Option[String] = None, status: scala.Option[String] = None, snapshotTimeOfDay: scala.Option[primitives.TimeOfDay] = None, nextSnapshotTimeOfDay: scala.Option[primitives.TimeOfDay] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AddOn = {
      import AddOn.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AddOn.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(status.map(value => value: java.lang.String))(_.status).optionallyWith(snapshotTimeOfDay.map(value => value: java.lang.String))(_.snapshotTimeOfDay).optionallyWith(nextSnapshotTimeOfDay.map(value => value: java.lang.String))(_.nextSnapshotTimeOfDay).build()
    }
    def asReadOnly: AddOn.ReadOnly = AddOn.wrap(buildAwsValue())
  }
  object AddOn {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AddOn] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AddOn = AddOn(nameValue.map(value => value), statusValue.map(value => value), snapshotTimeOfDayValue.map(value => value), nextSnapshotTimeOfDayValue.map(value => value))
      def nameValue: scala.Option[String]
      def statusValue: scala.Option[String]
      def snapshotTimeOfDayValue: scala.Option[primitives.TimeOfDay]
      def nextSnapshotTimeOfDayValue: scala.Option[primitives.TimeOfDay]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def snapshotTimeOfDay: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TimeOfDay] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("snapshotTimeOfDay", snapshotTimeOfDayValue)
      def nextSnapshotTimeOfDay: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TimeOfDay] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextSnapshotTimeOfDay", nextSnapshotTimeOfDayValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AddOn) extends AddOn.ReadOnly {
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
      override def statusValue: scala.Option[String] = scala.Option(impl.status()).map(value => value: String)
      override def snapshotTimeOfDayValue: scala.Option[primitives.TimeOfDay] = scala.Option(impl.snapshotTimeOfDay()).map(value => value: primitives.TimeOfDay)
      override def nextSnapshotTimeOfDayValue: scala.Option[primitives.TimeOfDay] = scala.Option(impl.nextSnapshotTimeOfDay()).map(value => value: primitives.TimeOfDay)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AddOn): ReadOnly = new Wrapper(impl)
  }
  type AddOnList = List[AddOn]
  case class AddOnRequest(addOnType: AddOnType, autoSnapshotAddOnRequest: scala.Option[AutoSnapshotAddOnRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AddOnRequest = {
      import AddOnRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AddOnRequest.builder().addOnType(addOnType.unwrap).optionallyWith(autoSnapshotAddOnRequest.map(value => value.buildAwsValue()))(_.autoSnapshotAddOnRequest).build()
    }
    def asReadOnly: AddOnRequest.ReadOnly = AddOnRequest.wrap(buildAwsValue())
  }
  object AddOnRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AddOnRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AddOnRequest = AddOnRequest(addOnTypeValue, autoSnapshotAddOnRequestValue.map(value => value.editable))
      def addOnTypeValue: AddOnType
      def autoSnapshotAddOnRequestValue: scala.Option[AutoSnapshotAddOnRequest.ReadOnly]
      def addOnType: ZIO[Any, Nothing, AddOnType] = ZIO.succeed(addOnTypeValue)
      def autoSnapshotAddOnRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoSnapshotAddOnRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("autoSnapshotAddOnRequest", autoSnapshotAddOnRequestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AddOnRequest) extends AddOnRequest.ReadOnly {
      override def addOnTypeValue: AddOnType = AddOnType.wrap(impl.addOnType())
      override def autoSnapshotAddOnRequestValue: scala.Option[AutoSnapshotAddOnRequest.ReadOnly] = scala.Option(impl.autoSnapshotAddOnRequest()).map(value => AutoSnapshotAddOnRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AddOnRequest): ReadOnly = new Wrapper(impl)
  }
  type AddOnRequestList = List[AddOnRequest]
  sealed trait AddOnType { def unwrap: software.amazon.awssdk.services.lightsail.model.AddOnType }
  object AddOnType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.AddOnType): AddOnType = value match {
      case software.amazon.awssdk.services.lightsail.model.AddOnType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.AddOnType.AUTO_SNAPSHOT => AutoSnapshot
    }
    final case object unknownToSdkVersion extends AddOnType { override def unwrap: software.amazon.awssdk.services.lightsail.model.AddOnType = software.amazon.awssdk.services.lightsail.model.AddOnType.UNKNOWN_TO_SDK_VERSION }
    final case object AutoSnapshot extends AddOnType { override def unwrap: software.amazon.awssdk.services.lightsail.model.AddOnType = software.amazon.awssdk.services.lightsail.model.AddOnType.AUTO_SNAPSHOT }
  }
  case class Alarm(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, supportCode: scala.Option[String] = None, monitoredResourceInfo: scala.Option[MonitoredResourceInfo] = None, comparisonOperator: scala.Option[ComparisonOperator] = None, evaluationPeriods: scala.Option[primitives.Integer] = None, period: scala.Option[primitives.MetricPeriod] = None, threshold: scala.Option[Double] = None, datapointsToAlarm: scala.Option[primitives.Integer] = None, treatMissingData: scala.Option[TreatMissingData] = None, statistic: scala.Option[MetricStatistic] = None, metricName: scala.Option[MetricName] = None, state: scala.Option[AlarmState] = None, unit: scala.Option[MetricUnit] = None, contactProtocols: scala.Option[Iterable[ContactProtocol]] = None, notificationTriggers: scala.Option[Iterable[AlarmState]] = None, notificationEnabled: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Alarm = {
      import Alarm.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Alarm.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(monitoredResourceInfo.map(value => value.buildAwsValue()))(_.monitoredResourceInfo).optionallyWith(comparisonOperator.map(value => value.unwrap))(_.comparisonOperator).optionallyWith(evaluationPeriods.map(value => value: java.lang.Integer))(_.evaluationPeriods).optionallyWith(period.map(value => value: java.lang.Integer))(_.period).optionallyWith(threshold.map(value => value: java.lang.Double))(_.threshold).optionallyWith(datapointsToAlarm.map(value => value: java.lang.Integer))(_.datapointsToAlarm).optionallyWith(treatMissingData.map(value => value.unwrap))(_.treatMissingData).optionallyWith(statistic.map(value => value.unwrap))(_.statistic).optionallyWith(metricName.map(value => value.unwrap))(_.metricName).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(unit.map(value => value.unwrap))(_.unit).optionallyWith(contactProtocols.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.contactProtocolsWithStrings).optionallyWith(notificationTriggers.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.notificationTriggersWithStrings).optionallyWith(notificationEnabled.map(value => value: java.lang.Boolean))(_.notificationEnabled).build()
    }
    def asReadOnly: Alarm.ReadOnly = Alarm.wrap(buildAwsValue())
  }
  object Alarm {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Alarm] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Alarm = Alarm(nameValue.map(value => value), arnValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), supportCodeValue.map(value => value), monitoredResourceInfoValue.map(value => value.editable), comparisonOperatorValue.map(value => value), evaluationPeriodsValue.map(value => value), periodValue.map(value => value), thresholdValue.map(value => value), datapointsToAlarmValue.map(value => value), treatMissingDataValue.map(value => value), statisticValue.map(value => value), metricNameValue.map(value => value), stateValue.map(value => value), unitValue.map(value => value), contactProtocolsValue.map(value => value), notificationTriggersValue.map(value => value), notificationEnabledValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def supportCodeValue: scala.Option[String]
      def monitoredResourceInfoValue: scala.Option[MonitoredResourceInfo.ReadOnly]
      def comparisonOperatorValue: scala.Option[ComparisonOperator]
      def evaluationPeriodsValue: scala.Option[primitives.Integer]
      def periodValue: scala.Option[primitives.MetricPeriod]
      def thresholdValue: scala.Option[Double]
      def datapointsToAlarmValue: scala.Option[primitives.Integer]
      def treatMissingDataValue: scala.Option[TreatMissingData]
      def statisticValue: scala.Option[MetricStatistic]
      def metricNameValue: scala.Option[MetricName]
      def stateValue: scala.Option[AlarmState]
      def unitValue: scala.Option[MetricUnit]
      def contactProtocolsValue: scala.Option[List[ContactProtocol]]
      def notificationTriggersValue: scala.Option[List[AlarmState]]
      def notificationEnabledValue: scala.Option[Boolean]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def monitoredResourceInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MonitoredResourceInfo.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("monitoredResourceInfo", monitoredResourceInfoValue)
      def comparisonOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ComparisonOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("comparisonOperator", comparisonOperatorValue)
      def evaluationPeriods: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("evaluationPeriods", evaluationPeriodsValue)
      def period: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MetricPeriod] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("period", periodValue)
      def threshold: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Double] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("threshold", thresholdValue)
      def datapointsToAlarm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datapointsToAlarm", datapointsToAlarmValue)
      def treatMissingData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TreatMissingData] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("treatMissingData", treatMissingDataValue)
      def statistic: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MetricStatistic] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("statistic", statisticValue)
      def metricName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MetricName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricName", metricNameValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AlarmState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def unit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MetricUnit] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("unit", unitValue)
      def contactProtocols: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContactProtocol]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contactProtocols", contactProtocolsValue)
      def notificationTriggers: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AlarmState]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notificationTriggers", notificationTriggersValue)
      def notificationEnabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notificationEnabled", notificationEnabledValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Alarm) extends Alarm.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def monitoredResourceInfoValue: scala.Option[MonitoredResourceInfo.ReadOnly] = scala.Option(impl.monitoredResourceInfo()).map(value => MonitoredResourceInfo.wrap(value))
      override def comparisonOperatorValue: scala.Option[ComparisonOperator] = scala.Option(impl.comparisonOperator()).map(value => ComparisonOperator.wrap(value))
      override def evaluationPeriodsValue: scala.Option[primitives.Integer] = scala.Option(impl.evaluationPeriods()).map(value => value: primitives.Integer)
      override def periodValue: scala.Option[primitives.MetricPeriod] = scala.Option(impl.period()).map(value => value: primitives.MetricPeriod)
      override def thresholdValue: scala.Option[Double] = scala.Option(impl.threshold()).map(value => value: Double)
      override def datapointsToAlarmValue: scala.Option[primitives.Integer] = scala.Option(impl.datapointsToAlarm()).map(value => value: primitives.Integer)
      override def treatMissingDataValue: scala.Option[TreatMissingData] = scala.Option(impl.treatMissingData()).map(value => TreatMissingData.wrap(value))
      override def statisticValue: scala.Option[MetricStatistic] = scala.Option(impl.statistic()).map(value => MetricStatistic.wrap(value))
      override def metricNameValue: scala.Option[MetricName] = scala.Option(impl.metricName()).map(value => MetricName.wrap(value))
      override def stateValue: scala.Option[AlarmState] = scala.Option(impl.state()).map(value => AlarmState.wrap(value))
      override def unitValue: scala.Option[MetricUnit] = scala.Option(impl.unit()).map(value => MetricUnit.wrap(value))
      override def contactProtocolsValue: scala.Option[List[ContactProtocol]] = scala.Option(impl.contactProtocols()).map(value => value.asScala.map { item => 
        ContactProtocol.wrap(item)
      }.toList)
      override def notificationTriggersValue: scala.Option[List[AlarmState]] = scala.Option(impl.notificationTriggers()).map(value => value.asScala.map { item => 
        AlarmState.wrap(item)
      }.toList)
      override def notificationEnabledValue: scala.Option[Boolean] = scala.Option(impl.notificationEnabled()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Alarm): ReadOnly = new Wrapper(impl)
  }
  sealed trait AlarmState { def unwrap: software.amazon.awssdk.services.lightsail.model.AlarmState }
  object AlarmState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.AlarmState): AlarmState = value match {
      case software.amazon.awssdk.services.lightsail.model.AlarmState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.AlarmState.OK => OK
      case software.amazon.awssdk.services.lightsail.model.AlarmState.ALARM => ALARM
      case software.amazon.awssdk.services.lightsail.model.AlarmState.INSUFFICIENT_DATA => INSUFFICIENT_DATA
    }
    final case object unknownToSdkVersion extends AlarmState { override def unwrap: software.amazon.awssdk.services.lightsail.model.AlarmState = software.amazon.awssdk.services.lightsail.model.AlarmState.UNKNOWN_TO_SDK_VERSION }
    final case object OK extends AlarmState { override def unwrap: software.amazon.awssdk.services.lightsail.model.AlarmState = software.amazon.awssdk.services.lightsail.model.AlarmState.OK }
    final case object ALARM extends AlarmState { override def unwrap: software.amazon.awssdk.services.lightsail.model.AlarmState = software.amazon.awssdk.services.lightsail.model.AlarmState.ALARM }
    final case object INSUFFICIENT_DATA extends AlarmState { override def unwrap: software.amazon.awssdk.services.lightsail.model.AlarmState = software.amazon.awssdk.services.lightsail.model.AlarmState.INSUFFICIENT_DATA }
  }
  type AlarmsList = List[Alarm]
  case class AllocateStaticIpRequest(staticIpName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AllocateStaticIpRequest = {
      import AllocateStaticIpRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AllocateStaticIpRequest.builder().staticIpName(staticIpName: java.lang.String).build()
    }
    def asReadOnly: AllocateStaticIpRequest.ReadOnly = AllocateStaticIpRequest.wrap(buildAwsValue())
  }
  object AllocateStaticIpRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AllocateStaticIpRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AllocateStaticIpRequest = AllocateStaticIpRequest(staticIpNameValue)
      def staticIpNameValue: primitives.ResourceName
      def staticIpName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(staticIpNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AllocateStaticIpRequest) extends AllocateStaticIpRequest.ReadOnly { override def staticIpNameValue: primitives.ResourceName = impl.staticIpName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AllocateStaticIpRequest): ReadOnly = new Wrapper(impl)
  }
  case class AllocateStaticIpResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AllocateStaticIpResponse = {
      import AllocateStaticIpResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AllocateStaticIpResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: AllocateStaticIpResponse.ReadOnly = AllocateStaticIpResponse.wrap(buildAwsValue())
  }
  object AllocateStaticIpResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AllocateStaticIpResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AllocateStaticIpResponse = AllocateStaticIpResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AllocateStaticIpResponse) extends AllocateStaticIpResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AllocateStaticIpResponse): ReadOnly = new Wrapper(impl)
  }
  case class AttachCertificateToDistributionRequest(distributionName: primitives.ResourceName, certificateName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionRequest = {
      import AttachCertificateToDistributionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionRequest.builder().distributionName(distributionName: java.lang.String).certificateName(certificateName: java.lang.String).build()
    }
    def asReadOnly: AttachCertificateToDistributionRequest.ReadOnly = AttachCertificateToDistributionRequest.wrap(buildAwsValue())
  }
  object AttachCertificateToDistributionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachCertificateToDistributionRequest = AttachCertificateToDistributionRequest(distributionNameValue, certificateNameValue)
      def distributionNameValue: primitives.ResourceName
      def certificateNameValue: primitives.ResourceName
      def distributionName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(distributionNameValue)
      def certificateName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(certificateNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionRequest) extends AttachCertificateToDistributionRequest.ReadOnly {
      override def distributionNameValue: primitives.ResourceName = impl.distributionName(): primitives.ResourceName
      override def certificateNameValue: primitives.ResourceName = impl.certificateName(): primitives.ResourceName
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionRequest): ReadOnly = new Wrapper(impl)
  }
  case class AttachCertificateToDistributionResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionResponse = {
      import AttachCertificateToDistributionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: AttachCertificateToDistributionResponse.ReadOnly = AttachCertificateToDistributionResponse.wrap(buildAwsValue())
  }
  object AttachCertificateToDistributionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachCertificateToDistributionResponse = AttachCertificateToDistributionResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionResponse) extends AttachCertificateToDistributionResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachCertificateToDistributionResponse): ReadOnly = new Wrapper(impl)
  }
  case class AttachDiskRequest(diskName: primitives.ResourceName, instanceName: primitives.ResourceName, diskPath: primitives.NonEmptyString) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachDiskRequest = {
      import AttachDiskRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachDiskRequest.builder().diskName(diskName: java.lang.String).instanceName(instanceName: java.lang.String).diskPath(diskPath: java.lang.String).build()
    }
    def asReadOnly: AttachDiskRequest.ReadOnly = AttachDiskRequest.wrap(buildAwsValue())
  }
  object AttachDiskRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachDiskRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachDiskRequest = AttachDiskRequest(diskNameValue, instanceNameValue, diskPathValue)
      def diskNameValue: primitives.ResourceName
      def instanceNameValue: primitives.ResourceName
      def diskPathValue: primitives.NonEmptyString
      def diskName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskNameValue)
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
      def diskPath: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(diskPathValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachDiskRequest) extends AttachDiskRequest.ReadOnly {
      override def diskNameValue: primitives.ResourceName = impl.diskName(): primitives.ResourceName
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
      override def diskPathValue: primitives.NonEmptyString = impl.diskPath(): primitives.NonEmptyString
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachDiskRequest): ReadOnly = new Wrapper(impl)
  }
  case class AttachDiskResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachDiskResponse = {
      import AttachDiskResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachDiskResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: AttachDiskResponse.ReadOnly = AttachDiskResponse.wrap(buildAwsValue())
  }
  object AttachDiskResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachDiskResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachDiskResponse = AttachDiskResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachDiskResponse) extends AttachDiskResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachDiskResponse): ReadOnly = new Wrapper(impl)
  }
  case class AttachInstancesToLoadBalancerRequest(loadBalancerName: primitives.ResourceName, instanceNames: Iterable[primitives.ResourceName]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerRequest = {
      import AttachInstancesToLoadBalancerRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).instanceNames(instanceNames.map { item => 
        item: java.lang.String
      }.asJavaCollection).build()
    }
    def asReadOnly: AttachInstancesToLoadBalancerRequest.ReadOnly = AttachInstancesToLoadBalancerRequest.wrap(buildAwsValue())
  }
  object AttachInstancesToLoadBalancerRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachInstancesToLoadBalancerRequest = AttachInstancesToLoadBalancerRequest(loadBalancerNameValue, instanceNamesValue)
      def loadBalancerNameValue: primitives.ResourceName
      def instanceNamesValue: List[primitives.ResourceName]
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def instanceNames: ZIO[Any, Nothing, List[primitives.ResourceName]] = ZIO.succeed(instanceNamesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerRequest) extends AttachInstancesToLoadBalancerRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def instanceNamesValue: List[primitives.ResourceName] = impl.instanceNames().asScala.map { item => 
        item: primitives.ResourceName
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerRequest): ReadOnly = new Wrapper(impl)
  }
  case class AttachInstancesToLoadBalancerResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerResponse = {
      import AttachInstancesToLoadBalancerResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: AttachInstancesToLoadBalancerResponse.ReadOnly = AttachInstancesToLoadBalancerResponse.wrap(buildAwsValue())
  }
  object AttachInstancesToLoadBalancerResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachInstancesToLoadBalancerResponse = AttachInstancesToLoadBalancerResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerResponse) extends AttachInstancesToLoadBalancerResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachInstancesToLoadBalancerResponse): ReadOnly = new Wrapper(impl)
  }
  case class AttachLoadBalancerTlsCertificateRequest(loadBalancerName: primitives.ResourceName, certificateName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateRequest = {
      import AttachLoadBalancerTlsCertificateRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).certificateName(certificateName: java.lang.String).build()
    }
    def asReadOnly: AttachLoadBalancerTlsCertificateRequest.ReadOnly = AttachLoadBalancerTlsCertificateRequest.wrap(buildAwsValue())
  }
  object AttachLoadBalancerTlsCertificateRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachLoadBalancerTlsCertificateRequest = AttachLoadBalancerTlsCertificateRequest(loadBalancerNameValue, certificateNameValue)
      def loadBalancerNameValue: primitives.ResourceName
      def certificateNameValue: primitives.ResourceName
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def certificateName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(certificateNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateRequest) extends AttachLoadBalancerTlsCertificateRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def certificateNameValue: primitives.ResourceName = impl.certificateName(): primitives.ResourceName
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateRequest): ReadOnly = new Wrapper(impl)
  }
  case class AttachLoadBalancerTlsCertificateResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateResponse = {
      import AttachLoadBalancerTlsCertificateResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: AttachLoadBalancerTlsCertificateResponse.ReadOnly = AttachLoadBalancerTlsCertificateResponse.wrap(buildAwsValue())
  }
  object AttachLoadBalancerTlsCertificateResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachLoadBalancerTlsCertificateResponse = AttachLoadBalancerTlsCertificateResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateResponse) extends AttachLoadBalancerTlsCertificateResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachLoadBalancerTlsCertificateResponse): ReadOnly = new Wrapper(impl)
  }
  case class AttachStaticIpRequest(staticIpName: primitives.ResourceName, instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachStaticIpRequest = {
      import AttachStaticIpRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachStaticIpRequest.builder().staticIpName(staticIpName: java.lang.String).instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: AttachStaticIpRequest.ReadOnly = AttachStaticIpRequest.wrap(buildAwsValue())
  }
  object AttachStaticIpRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachStaticIpRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachStaticIpRequest = AttachStaticIpRequest(staticIpNameValue, instanceNameValue)
      def staticIpNameValue: primitives.ResourceName
      def instanceNameValue: primitives.ResourceName
      def staticIpName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(staticIpNameValue)
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachStaticIpRequest) extends AttachStaticIpRequest.ReadOnly {
      override def staticIpNameValue: primitives.ResourceName = impl.staticIpName(): primitives.ResourceName
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachStaticIpRequest): ReadOnly = new Wrapper(impl)
  }
  case class AttachStaticIpResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachStaticIpResponse = {
      import AttachStaticIpResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachStaticIpResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: AttachStaticIpResponse.ReadOnly = AttachStaticIpResponse.wrap(buildAwsValue())
  }
  object AttachStaticIpResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachStaticIpResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachStaticIpResponse = AttachStaticIpResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachStaticIpResponse) extends AttachStaticIpResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachStaticIpResponse): ReadOnly = new Wrapper(impl)
  }
  case class AttachedDisk(path: scala.Option[String] = None, sizeInGb: scala.Option[primitives.Integer] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AttachedDisk = {
      import AttachedDisk.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AttachedDisk.builder().optionallyWith(path.map(value => value: java.lang.String))(_.path).optionallyWith(sizeInGb.map(value => value: java.lang.Integer))(_.sizeInGb).build()
    }
    def asReadOnly: AttachedDisk.ReadOnly = AttachedDisk.wrap(buildAwsValue())
  }
  object AttachedDisk {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AttachedDisk] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttachedDisk = AttachedDisk(pathValue.map(value => value), sizeInGbValue.map(value => value))
      def pathValue: scala.Option[String]
      def sizeInGbValue: scala.Option[primitives.Integer]
      def path: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("path", pathValue)
      def sizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeInGb", sizeInGbValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AttachedDisk) extends AttachedDisk.ReadOnly {
      override def pathValue: scala.Option[String] = scala.Option(impl.path()).map(value => value: String)
      override def sizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.sizeInGb()).map(value => value: primitives.Integer)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AttachedDisk): ReadOnly = new Wrapper(impl)
  }
  type AttachedDiskList = List[AttachedDisk]
  type AttachedDiskMap = Map[primitives.ResourceName, Iterable[DiskMap]]
  case class AutoSnapshotAddOnRequest(snapshotTimeOfDay: scala.Option[primitives.TimeOfDay] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AutoSnapshotAddOnRequest = {
      import AutoSnapshotAddOnRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AutoSnapshotAddOnRequest.builder().optionallyWith(snapshotTimeOfDay.map(value => value: java.lang.String))(_.snapshotTimeOfDay).build()
    }
    def asReadOnly: AutoSnapshotAddOnRequest.ReadOnly = AutoSnapshotAddOnRequest.wrap(buildAwsValue())
  }
  object AutoSnapshotAddOnRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AutoSnapshotAddOnRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoSnapshotAddOnRequest = AutoSnapshotAddOnRequest(snapshotTimeOfDayValue.map(value => value))
      def snapshotTimeOfDayValue: scala.Option[primitives.TimeOfDay]
      def snapshotTimeOfDay: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TimeOfDay] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("snapshotTimeOfDay", snapshotTimeOfDayValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AutoSnapshotAddOnRequest) extends AutoSnapshotAddOnRequest.ReadOnly { override def snapshotTimeOfDayValue: scala.Option[primitives.TimeOfDay] = scala.Option(impl.snapshotTimeOfDay()).map(value => value: primitives.TimeOfDay) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AutoSnapshotAddOnRequest): ReadOnly = new Wrapper(impl)
  }
  case class AutoSnapshotDetails(date: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, status: scala.Option[AutoSnapshotStatus] = None, fromAttachedDisks: scala.Option[Iterable[AttachedDisk]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AutoSnapshotDetails = {
      import AutoSnapshotDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AutoSnapshotDetails.builder().optionallyWith(date.map(value => value: java.lang.String))(_.date).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(fromAttachedDisks.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.fromAttachedDisks).build()
    }
    def asReadOnly: AutoSnapshotDetails.ReadOnly = AutoSnapshotDetails.wrap(buildAwsValue())
  }
  object AutoSnapshotDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AutoSnapshotDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AutoSnapshotDetails = AutoSnapshotDetails(dateValue.map(value => value), createdAtValue.map(value => value), statusValue.map(value => value), fromAttachedDisksValue.map(value => value.map { item => 
        item.editable
      }))
      def dateValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def statusValue: scala.Option[AutoSnapshotStatus]
      def fromAttachedDisksValue: scala.Option[List[AttachedDisk.ReadOnly]]
      def date: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("date", dateValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AutoSnapshotStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def fromAttachedDisks: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttachedDisk.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromAttachedDisks", fromAttachedDisksValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AutoSnapshotDetails) extends AutoSnapshotDetails.ReadOnly {
      override def dateValue: scala.Option[String] = scala.Option(impl.date()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def statusValue: scala.Option[AutoSnapshotStatus] = scala.Option(impl.status()).map(value => AutoSnapshotStatus.wrap(value))
      override def fromAttachedDisksValue: scala.Option[List[AttachedDisk.ReadOnly]] = scala.Option(impl.fromAttachedDisks()).map(value => value.asScala.map { item => 
        AttachedDisk.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AutoSnapshotDetails): ReadOnly = new Wrapper(impl)
  }
  type AutoSnapshotDetailsList = List[AutoSnapshotDetails]
  sealed trait AutoSnapshotStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus }
  object AutoSnapshotStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus): AutoSnapshotStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.SUCCESS => Success
      case software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.FAILED => Failed
      case software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.IN_PROGRESS => InProgress
      case software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.NOT_FOUND => NotFound
    }
    final case object unknownToSdkVersion extends AutoSnapshotStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus = software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.UNKNOWN_TO_SDK_VERSION }
    final case object Success extends AutoSnapshotStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus = software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.SUCCESS }
    final case object Failed extends AutoSnapshotStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus = software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.FAILED }
    final case object InProgress extends AutoSnapshotStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus = software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.IN_PROGRESS }
    final case object NotFound extends AutoSnapshotStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus = software.amazon.awssdk.services.lightsail.model.AutoSnapshotStatus.NOT_FOUND }
  }
  case class AvailabilityZone(zoneName: scala.Option[primitives.NonEmptyString] = None, state: scala.Option[primitives.NonEmptyString] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.AvailabilityZone = {
      import AvailabilityZone.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.AvailabilityZone.builder().optionallyWith(zoneName.map(value => value: java.lang.String))(_.zoneName).optionallyWith(state.map(value => value: java.lang.String))(_.state).build()
    }
    def asReadOnly: AvailabilityZone.ReadOnly = AvailabilityZone.wrap(buildAwsValue())
  }
  object AvailabilityZone {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.AvailabilityZone] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AvailabilityZone = AvailabilityZone(zoneNameValue.map(value => value), stateValue.map(value => value))
      def zoneNameValue: scala.Option[primitives.NonEmptyString]
      def stateValue: scala.Option[primitives.NonEmptyString]
      def zoneName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("zoneName", zoneNameValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.AvailabilityZone) extends AvailabilityZone.ReadOnly {
      override def zoneNameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.zoneName()).map(value => value: primitives.NonEmptyString)
      override def stateValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.state()).map(value => value: primitives.NonEmptyString)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.AvailabilityZone): ReadOnly = new Wrapper(impl)
  }
  type AvailabilityZoneList = List[AvailabilityZone]
  sealed trait BehaviorEnum { def unwrap: software.amazon.awssdk.services.lightsail.model.BehaviorEnum }
  object BehaviorEnum {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.BehaviorEnum): BehaviorEnum = value match {
      case software.amazon.awssdk.services.lightsail.model.BehaviorEnum.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.BehaviorEnum.DONT_CACHE => `dont-cache`
      case software.amazon.awssdk.services.lightsail.model.BehaviorEnum.CACHE => cache
    }
    final case object unknownToSdkVersion extends BehaviorEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.BehaviorEnum = software.amazon.awssdk.services.lightsail.model.BehaviorEnum.UNKNOWN_TO_SDK_VERSION }
    final case object `dont-cache` extends BehaviorEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.BehaviorEnum = software.amazon.awssdk.services.lightsail.model.BehaviorEnum.DONT_CACHE }
    final case object cache extends BehaviorEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.BehaviorEnum = software.amazon.awssdk.services.lightsail.model.BehaviorEnum.CACHE }
  }
  case class Blueprint(blueprintId: scala.Option[primitives.NonEmptyString] = None, name: scala.Option[primitives.ResourceName] = None, group: scala.Option[primitives.NonEmptyString] = None, `type`: scala.Option[BlueprintType] = None, description: scala.Option[String] = None, isActive: scala.Option[Boolean] = None, minPower: scala.Option[primitives.Integer] = None, version: scala.Option[String] = None, versionCode: scala.Option[String] = None, productUrl: scala.Option[String] = None, licenseUrl: scala.Option[String] = None, platform: scala.Option[InstancePlatform] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Blueprint = {
      import Blueprint.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Blueprint.builder().optionallyWith(blueprintId.map(value => value: java.lang.String))(_.blueprintId).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(group.map(value => value: java.lang.String))(_.group).optionallyWith(`type`.map(value => value.unwrap))(_.`type`).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(isActive.map(value => value: java.lang.Boolean))(_.isActive).optionallyWith(minPower.map(value => value: java.lang.Integer))(_.minPower).optionallyWith(version.map(value => value: java.lang.String))(_.version).optionallyWith(versionCode.map(value => value: java.lang.String))(_.versionCode).optionallyWith(productUrl.map(value => value: java.lang.String))(_.productUrl).optionallyWith(licenseUrl.map(value => value: java.lang.String))(_.licenseUrl).optionallyWith(platform.map(value => value.unwrap))(_.platform).build()
    }
    def asReadOnly: Blueprint.ReadOnly = Blueprint.wrap(buildAwsValue())
  }
  object Blueprint {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Blueprint] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Blueprint = Blueprint(blueprintIdValue.map(value => value), nameValue.map(value => value), groupValue.map(value => value), typeValue.map(value => value), descriptionValue.map(value => value), isActiveValue.map(value => value), minPowerValue.map(value => value), versionValue.map(value => value), versionCodeValue.map(value => value), productUrlValue.map(value => value), licenseUrlValue.map(value => value), platformValue.map(value => value))
      def blueprintIdValue: scala.Option[primitives.NonEmptyString]
      def nameValue: scala.Option[primitives.ResourceName]
      def groupValue: scala.Option[primitives.NonEmptyString]
      def typeValue: scala.Option[BlueprintType]
      def descriptionValue: scala.Option[String]
      def isActiveValue: scala.Option[Boolean]
      def minPowerValue: scala.Option[primitives.Integer]
      def versionValue: scala.Option[String]
      def versionCodeValue: scala.Option[String]
      def productUrlValue: scala.Option[String]
      def licenseUrlValue: scala.Option[String]
      def platformValue: scala.Option[InstancePlatform]
      def blueprintId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("blueprintId", blueprintIdValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def group: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("group", groupValue)
      def `type`: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BlueprintType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("type", typeValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def isActive: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isActive", isActiveValue)
      def minPower: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("minPower", minPowerValue)
      def version: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("version", versionValue)
      def versionCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("versionCode", versionCodeValue)
      def productUrl: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("productUrl", productUrlValue)
      def licenseUrl: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("licenseUrl", licenseUrlValue)
      def platform: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstancePlatform] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("platform", platformValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Blueprint) extends Blueprint.ReadOnly {
      override def blueprintIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.blueprintId()).map(value => value: primitives.NonEmptyString)
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def groupValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.group()).map(value => value: primitives.NonEmptyString)
      override def typeValue: scala.Option[BlueprintType] = scala.Option(impl.`type`()).map(value => BlueprintType.wrap(value))
      override def descriptionValue: scala.Option[String] = scala.Option(impl.description()).map(value => value: String)
      override def isActiveValue: scala.Option[Boolean] = scala.Option(impl.isActive()).map(value => value: Boolean)
      override def minPowerValue: scala.Option[primitives.Integer] = scala.Option(impl.minPower()).map(value => value: primitives.Integer)
      override def versionValue: scala.Option[String] = scala.Option(impl.version()).map(value => value: String)
      override def versionCodeValue: scala.Option[String] = scala.Option(impl.versionCode()).map(value => value: String)
      override def productUrlValue: scala.Option[String] = scala.Option(impl.productUrl()).map(value => value: String)
      override def licenseUrlValue: scala.Option[String] = scala.Option(impl.licenseUrl()).map(value => value: String)
      override def platformValue: scala.Option[InstancePlatform] = scala.Option(impl.platform()).map(value => InstancePlatform.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Blueprint): ReadOnly = new Wrapper(impl)
  }
  type BlueprintList = List[Blueprint]
  sealed trait BlueprintType { def unwrap: software.amazon.awssdk.services.lightsail.model.BlueprintType }
  object BlueprintType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.BlueprintType): BlueprintType = value match {
      case software.amazon.awssdk.services.lightsail.model.BlueprintType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.BlueprintType.OS => os
      case software.amazon.awssdk.services.lightsail.model.BlueprintType.APP => app
    }
    final case object unknownToSdkVersion extends BlueprintType { override def unwrap: software.amazon.awssdk.services.lightsail.model.BlueprintType = software.amazon.awssdk.services.lightsail.model.BlueprintType.UNKNOWN_TO_SDK_VERSION }
    final case object os extends BlueprintType { override def unwrap: software.amazon.awssdk.services.lightsail.model.BlueprintType = software.amazon.awssdk.services.lightsail.model.BlueprintType.OS }
    final case object app extends BlueprintType { override def unwrap: software.amazon.awssdk.services.lightsail.model.BlueprintType = software.amazon.awssdk.services.lightsail.model.BlueprintType.APP }
  }
  case class Bundle(price: scala.Option[Float] = None, cpuCount: scala.Option[primitives.Integer] = None, diskSizeInGb: scala.Option[primitives.Integer] = None, bundleId: scala.Option[primitives.NonEmptyString] = None, instanceType: scala.Option[String] = None, isActive: scala.Option[Boolean] = None, name: scala.Option[String] = None, power: scala.Option[primitives.Integer] = None, ramSizeInGb: scala.Option[Float] = None, transferPerMonthInGb: scala.Option[primitives.Integer] = None, supportedPlatforms: scala.Option[Iterable[InstancePlatform]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Bundle = {
      import Bundle.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Bundle.builder().optionallyWith(price.map(value => value: java.lang.Float))(_.price).optionallyWith(cpuCount.map(value => value: java.lang.Integer))(_.cpuCount).optionallyWith(diskSizeInGb.map(value => value: java.lang.Integer))(_.diskSizeInGb).optionallyWith(bundleId.map(value => value: java.lang.String))(_.bundleId).optionallyWith(instanceType.map(value => value: java.lang.String))(_.instanceType).optionallyWith(isActive.map(value => value: java.lang.Boolean))(_.isActive).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(power.map(value => value: java.lang.Integer))(_.power).optionallyWith(ramSizeInGb.map(value => value: java.lang.Float))(_.ramSizeInGb).optionallyWith(transferPerMonthInGb.map(value => value: java.lang.Integer))(_.transferPerMonthInGb).optionallyWith(supportedPlatforms.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.supportedPlatformsWithStrings).build()
    }
    def asReadOnly: Bundle.ReadOnly = Bundle.wrap(buildAwsValue())
  }
  object Bundle {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Bundle] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Bundle = Bundle(priceValue.map(value => value), cpuCountValue.map(value => value), diskSizeInGbValue.map(value => value), bundleIdValue.map(value => value), instanceTypeValue.map(value => value), isActiveValue.map(value => value), nameValue.map(value => value), powerValue.map(value => value), ramSizeInGbValue.map(value => value), transferPerMonthInGbValue.map(value => value), supportedPlatformsValue.map(value => value))
      def priceValue: scala.Option[Float]
      def cpuCountValue: scala.Option[primitives.Integer]
      def diskSizeInGbValue: scala.Option[primitives.Integer]
      def bundleIdValue: scala.Option[primitives.NonEmptyString]
      def instanceTypeValue: scala.Option[String]
      def isActiveValue: scala.Option[Boolean]
      def nameValue: scala.Option[String]
      def powerValue: scala.Option[primitives.Integer]
      def ramSizeInGbValue: scala.Option[Float]
      def transferPerMonthInGbValue: scala.Option[primitives.Integer]
      def supportedPlatformsValue: scala.Option[List[InstancePlatform]]
      def price: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("price", priceValue)
      def cpuCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cpuCount", cpuCountValue)
      def diskSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskSizeInGb", diskSizeInGbValue)
      def bundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundleId", bundleIdValue)
      def instanceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceType", instanceTypeValue)
      def isActive: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isActive", isActiveValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def power: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("power", powerValue)
      def ramSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ramSizeInGb", ramSizeInGbValue)
      def transferPerMonthInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("transferPerMonthInGb", transferPerMonthInGbValue)
      def supportedPlatforms: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[InstancePlatform]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedPlatforms", supportedPlatformsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Bundle) extends Bundle.ReadOnly {
      override def priceValue: scala.Option[Float] = scala.Option(impl.price()).map(value => value: Float)
      override def cpuCountValue: scala.Option[primitives.Integer] = scala.Option(impl.cpuCount()).map(value => value: primitives.Integer)
      override def diskSizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.diskSizeInGb()).map(value => value: primitives.Integer)
      override def bundleIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.bundleId()).map(value => value: primitives.NonEmptyString)
      override def instanceTypeValue: scala.Option[String] = scala.Option(impl.instanceType()).map(value => value: String)
      override def isActiveValue: scala.Option[Boolean] = scala.Option(impl.isActive()).map(value => value: Boolean)
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
      override def powerValue: scala.Option[primitives.Integer] = scala.Option(impl.power()).map(value => value: primitives.Integer)
      override def ramSizeInGbValue: scala.Option[Float] = scala.Option(impl.ramSizeInGb()).map(value => value: Float)
      override def transferPerMonthInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.transferPerMonthInGb()).map(value => value: primitives.Integer)
      override def supportedPlatformsValue: scala.Option[List[InstancePlatform]] = scala.Option(impl.supportedPlatforms()).map(value => value.asScala.map { item => 
        InstancePlatform.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Bundle): ReadOnly = new Wrapper(impl)
  }
  type BundleList = List[Bundle]
  case class CacheBehavior(behavior: scala.Option[BehaviorEnum] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CacheBehavior = {
      import CacheBehavior.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CacheBehavior.builder().optionallyWith(behavior.map(value => value.unwrap))(_.behavior).build()
    }
    def asReadOnly: CacheBehavior.ReadOnly = CacheBehavior.wrap(buildAwsValue())
  }
  object CacheBehavior {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CacheBehavior] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CacheBehavior = CacheBehavior(behaviorValue.map(value => value))
      def behaviorValue: scala.Option[BehaviorEnum]
      def behavior: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BehaviorEnum] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("behavior", behaviorValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CacheBehavior) extends CacheBehavior.ReadOnly { override def behaviorValue: scala.Option[BehaviorEnum] = scala.Option(impl.behavior()).map(value => BehaviorEnum.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CacheBehavior): ReadOnly = new Wrapper(impl)
  }
  type CacheBehaviorList = List[CacheBehaviorPerPath]
  case class CacheBehaviorPerPath(path: scala.Option[String] = None, behavior: scala.Option[BehaviorEnum] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CacheBehaviorPerPath = {
      import CacheBehaviorPerPath.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CacheBehaviorPerPath.builder().optionallyWith(path.map(value => value: java.lang.String))(_.path).optionallyWith(behavior.map(value => value.unwrap))(_.behavior).build()
    }
    def asReadOnly: CacheBehaviorPerPath.ReadOnly = CacheBehaviorPerPath.wrap(buildAwsValue())
  }
  object CacheBehaviorPerPath {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CacheBehaviorPerPath] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CacheBehaviorPerPath = CacheBehaviorPerPath(pathValue.map(value => value), behaviorValue.map(value => value))
      def pathValue: scala.Option[String]
      def behaviorValue: scala.Option[BehaviorEnum]
      def path: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("path", pathValue)
      def behavior: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, BehaviorEnum] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("behavior", behaviorValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CacheBehaviorPerPath) extends CacheBehaviorPerPath.ReadOnly {
      override def pathValue: scala.Option[String] = scala.Option(impl.path()).map(value => value: String)
      override def behaviorValue: scala.Option[BehaviorEnum] = scala.Option(impl.behavior()).map(value => BehaviorEnum.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CacheBehaviorPerPath): ReadOnly = new Wrapper(impl)
  }
  case class CacheSettings(defaultTTL: scala.Option[Long] = None, minimumTTL: scala.Option[Long] = None, maximumTTL: scala.Option[Long] = None, allowedHTTPMethods: scala.Option[primitives.NonEmptyString] = None, cachedHTTPMethods: scala.Option[primitives.NonEmptyString] = None, forwardedCookies: scala.Option[CookieObject] = None, forwardedHeaders: scala.Option[HeaderObject] = None, forwardedQueryStrings: scala.Option[QueryStringObject] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CacheSettings = {
      import CacheSettings.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CacheSettings.builder().optionallyWith(defaultTTL.map(value => value: java.lang.Long))(_.defaultTTL).optionallyWith(minimumTTL.map(value => value: java.lang.Long))(_.minimumTTL).optionallyWith(maximumTTL.map(value => value: java.lang.Long))(_.maximumTTL).optionallyWith(allowedHTTPMethods.map(value => value: java.lang.String))(_.allowedHTTPMethods).optionallyWith(cachedHTTPMethods.map(value => value: java.lang.String))(_.cachedHTTPMethods).optionallyWith(forwardedCookies.map(value => value.buildAwsValue()))(_.forwardedCookies).optionallyWith(forwardedHeaders.map(value => value.buildAwsValue()))(_.forwardedHeaders).optionallyWith(forwardedQueryStrings.map(value => value.buildAwsValue()))(_.forwardedQueryStrings).build()
    }
    def asReadOnly: CacheSettings.ReadOnly = CacheSettings.wrap(buildAwsValue())
  }
  object CacheSettings {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CacheSettings] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CacheSettings = CacheSettings(defaultTTLValue.map(value => value), minimumTTLValue.map(value => value), maximumTTLValue.map(value => value), allowedHTTPMethodsValue.map(value => value), cachedHTTPMethodsValue.map(value => value), forwardedCookiesValue.map(value => value.editable), forwardedHeadersValue.map(value => value.editable), forwardedQueryStringsValue.map(value => value.editable))
      def defaultTTLValue: scala.Option[Long]
      def minimumTTLValue: scala.Option[Long]
      def maximumTTLValue: scala.Option[Long]
      def allowedHTTPMethodsValue: scala.Option[primitives.NonEmptyString]
      def cachedHTTPMethodsValue: scala.Option[primitives.NonEmptyString]
      def forwardedCookiesValue: scala.Option[CookieObject.ReadOnly]
      def forwardedHeadersValue: scala.Option[HeaderObject.ReadOnly]
      def forwardedQueryStringsValue: scala.Option[QueryStringObject.ReadOnly]
      def defaultTTL: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTTL", defaultTTLValue)
      def minimumTTL: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("minimumTTL", minimumTTLValue)
      def maximumTTL: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumTTL", maximumTTLValue)
      def allowedHTTPMethods: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("allowedHTTPMethods", allowedHTTPMethodsValue)
      def cachedHTTPMethods: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cachedHTTPMethods", cachedHTTPMethodsValue)
      def forwardedCookies: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CookieObject.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forwardedCookies", forwardedCookiesValue)
      def forwardedHeaders: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, HeaderObject.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forwardedHeaders", forwardedHeadersValue)
      def forwardedQueryStrings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, QueryStringObject.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forwardedQueryStrings", forwardedQueryStringsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CacheSettings) extends CacheSettings.ReadOnly {
      override def defaultTTLValue: scala.Option[Long] = scala.Option(impl.defaultTTL()).map(value => value: Long)
      override def minimumTTLValue: scala.Option[Long] = scala.Option(impl.minimumTTL()).map(value => value: Long)
      override def maximumTTLValue: scala.Option[Long] = scala.Option(impl.maximumTTL()).map(value => value: Long)
      override def allowedHTTPMethodsValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.allowedHTTPMethods()).map(value => value: primitives.NonEmptyString)
      override def cachedHTTPMethodsValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.cachedHTTPMethods()).map(value => value: primitives.NonEmptyString)
      override def forwardedCookiesValue: scala.Option[CookieObject.ReadOnly] = scala.Option(impl.forwardedCookies()).map(value => CookieObject.wrap(value))
      override def forwardedHeadersValue: scala.Option[HeaderObject.ReadOnly] = scala.Option(impl.forwardedHeaders()).map(value => HeaderObject.wrap(value))
      override def forwardedQueryStringsValue: scala.Option[QueryStringObject.ReadOnly] = scala.Option(impl.forwardedQueryStrings()).map(value => QueryStringObject.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CacheSettings): ReadOnly = new Wrapper(impl)
  }
  case class Certificate(arn: scala.Option[primitives.NonEmptyString] = None, name: scala.Option[primitives.CertificateName] = None, domainName: scala.Option[primitives.DomainName] = None, status: scala.Option[CertificateStatus] = None, serialNumber: scala.Option[primitives.SerialNumber] = None, subjectAlternativeNames: scala.Option[Iterable[primitives.DomainName]] = None, domainValidationRecords: scala.Option[Iterable[DomainValidationRecord]] = None, requestFailureReason: scala.Option[primitives.RequestFailureReason] = None, inUseResourceCount: scala.Option[primitives.InUseResourceCount] = None, keyAlgorithm: scala.Option[primitives.KeyAlgorithm] = None, createdAt: scala.Option[primitives.IsoDate] = None, issuedAt: scala.Option[primitives.IsoDate] = None, issuerCA: scala.Option[primitives.IssuerCA] = None, notBefore: scala.Option[primitives.IsoDate] = None, notAfter: scala.Option[primitives.IsoDate] = None, eligibleToRenew: scala.Option[primitives.EligibleToRenew] = None, renewalSummary: scala.Option[RenewalSummary] = None, revokedAt: scala.Option[primitives.IsoDate] = None, revocationReason: scala.Option[primitives.RevocationReason] = None, tags: scala.Option[Iterable[Tag]] = None, supportCode: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Certificate = {
      import Certificate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Certificate.builder().optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(domainName.map(value => value: java.lang.String))(_.domainName).optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(serialNumber.map(value => value: java.lang.String))(_.serialNumber).optionallyWith(subjectAlternativeNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.subjectAlternativeNames).optionallyWith(domainValidationRecords.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.domainValidationRecords).optionallyWith(requestFailureReason.map(value => value: java.lang.String))(_.requestFailureReason).optionallyWith(inUseResourceCount.map(value => value: java.lang.Integer))(_.inUseResourceCount).optionallyWith(keyAlgorithm.map(value => value: java.lang.String))(_.keyAlgorithm).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(issuedAt.map(value => value: java.time.Instant))(_.issuedAt).optionallyWith(issuerCA.map(value => value: java.lang.String))(_.issuerCA).optionallyWith(notBefore.map(value => value: java.time.Instant))(_.notBefore).optionallyWith(notAfter.map(value => value: java.time.Instant))(_.notAfter).optionallyWith(eligibleToRenew.map(value => value: java.lang.String))(_.eligibleToRenew).optionallyWith(renewalSummary.map(value => value.buildAwsValue()))(_.renewalSummary).optionallyWith(revokedAt.map(value => value: java.time.Instant))(_.revokedAt).optionallyWith(revocationReason.map(value => value: java.lang.String))(_.revocationReason).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).build()
    }
    def asReadOnly: Certificate.ReadOnly = Certificate.wrap(buildAwsValue())
  }
  object Certificate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Certificate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Certificate = Certificate(arnValue.map(value => value), nameValue.map(value => value), domainNameValue.map(value => value), statusValue.map(value => value), serialNumberValue.map(value => value), subjectAlternativeNamesValue.map(value => value), domainValidationRecordsValue.map(value => value.map { item => 
        item.editable
      }), requestFailureReasonValue.map(value => value), inUseResourceCountValue.map(value => value), keyAlgorithmValue.map(value => value), createdAtValue.map(value => value), issuedAtValue.map(value => value), issuerCAValue.map(value => value), notBeforeValue.map(value => value), notAfterValue.map(value => value), eligibleToRenewValue.map(value => value), renewalSummaryValue.map(value => value.editable), revokedAtValue.map(value => value), revocationReasonValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), supportCodeValue.map(value => value))
      def arnValue: scala.Option[primitives.NonEmptyString]
      def nameValue: scala.Option[primitives.CertificateName]
      def domainNameValue: scala.Option[primitives.DomainName]
      def statusValue: scala.Option[CertificateStatus]
      def serialNumberValue: scala.Option[primitives.SerialNumber]
      def subjectAlternativeNamesValue: scala.Option[List[primitives.DomainName]]
      def domainValidationRecordsValue: scala.Option[List[DomainValidationRecord.ReadOnly]]
      def requestFailureReasonValue: scala.Option[primitives.RequestFailureReason]
      def inUseResourceCountValue: scala.Option[primitives.InUseResourceCount]
      def keyAlgorithmValue: scala.Option[primitives.KeyAlgorithm]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def issuedAtValue: scala.Option[primitives.IsoDate]
      def issuerCAValue: scala.Option[primitives.IssuerCA]
      def notBeforeValue: scala.Option[primitives.IsoDate]
      def notAfterValue: scala.Option[primitives.IsoDate]
      def eligibleToRenewValue: scala.Option[primitives.EligibleToRenew]
      def renewalSummaryValue: scala.Option[RenewalSummary.ReadOnly]
      def revokedAtValue: scala.Option[primitives.IsoDate]
      def revocationReasonValue: scala.Option[primitives.RevocationReason]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def supportCodeValue: scala.Option[String]
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.CertificateName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def domainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainName", domainNameValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CertificateStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def serialNumber: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SerialNumber] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serialNumber", serialNumberValue)
      def subjectAlternativeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.DomainName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("subjectAlternativeNames", subjectAlternativeNamesValue)
      def domainValidationRecords: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[DomainValidationRecord.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainValidationRecords", domainValidationRecordsValue)
      def requestFailureReason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RequestFailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("requestFailureReason", requestFailureReasonValue)
      def inUseResourceCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.InUseResourceCount] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("inUseResourceCount", inUseResourceCountValue)
      def keyAlgorithm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KeyAlgorithm] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyAlgorithm", keyAlgorithmValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def issuedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("issuedAt", issuedAtValue)
      def issuerCA: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IssuerCA] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("issuerCA", issuerCAValue)
      def notBefore: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notBefore", notBeforeValue)
      def notAfter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notAfter", notAfterValue)
      def eligibleToRenew: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EligibleToRenew] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eligibleToRenew", eligibleToRenewValue)
      def renewalSummary: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RenewalSummary.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("renewalSummary", renewalSummaryValue)
      def revokedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("revokedAt", revokedAtValue)
      def revocationReason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RevocationReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("revocationReason", revocationReasonValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Certificate) extends Certificate.ReadOnly {
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def nameValue: scala.Option[primitives.CertificateName] = scala.Option(impl.name()).map(value => value: primitives.CertificateName)
      override def domainNameValue: scala.Option[primitives.DomainName] = scala.Option(impl.domainName()).map(value => value: primitives.DomainName)
      override def statusValue: scala.Option[CertificateStatus] = scala.Option(impl.status()).map(value => CertificateStatus.wrap(value))
      override def serialNumberValue: scala.Option[primitives.SerialNumber] = scala.Option(impl.serialNumber()).map(value => value: primitives.SerialNumber)
      override def subjectAlternativeNamesValue: scala.Option[List[primitives.DomainName]] = scala.Option(impl.subjectAlternativeNames()).map(value => value.asScala.map { item => 
        item: primitives.DomainName
      }.toList)
      override def domainValidationRecordsValue: scala.Option[List[DomainValidationRecord.ReadOnly]] = scala.Option(impl.domainValidationRecords()).map(value => value.asScala.map { item => 
        DomainValidationRecord.wrap(item)
      }.toList)
      override def requestFailureReasonValue: scala.Option[primitives.RequestFailureReason] = scala.Option(impl.requestFailureReason()).map(value => value: primitives.RequestFailureReason)
      override def inUseResourceCountValue: scala.Option[primitives.InUseResourceCount] = scala.Option(impl.inUseResourceCount()).map(value => value: primitives.InUseResourceCount)
      override def keyAlgorithmValue: scala.Option[primitives.KeyAlgorithm] = scala.Option(impl.keyAlgorithm()).map(value => value: primitives.KeyAlgorithm)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def issuedAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.issuedAt()).map(value => value: primitives.IsoDate)
      override def issuerCAValue: scala.Option[primitives.IssuerCA] = scala.Option(impl.issuerCA()).map(value => value: primitives.IssuerCA)
      override def notBeforeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.notBefore()).map(value => value: primitives.IsoDate)
      override def notAfterValue: scala.Option[primitives.IsoDate] = scala.Option(impl.notAfter()).map(value => value: primitives.IsoDate)
      override def eligibleToRenewValue: scala.Option[primitives.EligibleToRenew] = scala.Option(impl.eligibleToRenew()).map(value => value: primitives.EligibleToRenew)
      override def renewalSummaryValue: scala.Option[RenewalSummary.ReadOnly] = scala.Option(impl.renewalSummary()).map(value => RenewalSummary.wrap(value))
      override def revokedAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.revokedAt()).map(value => value: primitives.IsoDate)
      override def revocationReasonValue: scala.Option[primitives.RevocationReason] = scala.Option(impl.revocationReason()).map(value => value: primitives.RevocationReason)
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Certificate): ReadOnly = new Wrapper(impl)
  }
  sealed trait CertificateStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus }
  object CertificateStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.CertificateStatus): CertificateStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.PENDING_VALIDATION => PENDING_VALIDATION
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.ISSUED => ISSUED
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.INACTIVE => INACTIVE
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.EXPIRED => EXPIRED
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.VALIDATION_TIMED_OUT => VALIDATION_TIMED_OUT
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.REVOKED => REVOKED
      case software.amazon.awssdk.services.lightsail.model.CertificateStatus.FAILED => FAILED
    }
    final case object unknownToSdkVersion extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.UNKNOWN_TO_SDK_VERSION }
    final case object PENDING_VALIDATION extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.PENDING_VALIDATION }
    final case object ISSUED extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.ISSUED }
    final case object INACTIVE extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.INACTIVE }
    final case object EXPIRED extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.EXPIRED }
    final case object VALIDATION_TIMED_OUT extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.VALIDATION_TIMED_OUT }
    final case object REVOKED extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.REVOKED }
    final case object FAILED extends CertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.CertificateStatus = software.amazon.awssdk.services.lightsail.model.CertificateStatus.FAILED }
  }
  type CertificateStatusList = List[CertificateStatus]
  case class CertificateSummary(certificateArn: scala.Option[primitives.NonEmptyString] = None, certificateName: scala.Option[primitives.CertificateName] = None, domainName: scala.Option[primitives.DomainName] = None, certificateDetail: scala.Option[Certificate] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CertificateSummary = {
      import CertificateSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CertificateSummary.builder().optionallyWith(certificateArn.map(value => value: java.lang.String))(_.certificateArn).optionallyWith(certificateName.map(value => value: java.lang.String))(_.certificateName).optionallyWith(domainName.map(value => value: java.lang.String))(_.domainName).optionallyWith(certificateDetail.map(value => value.buildAwsValue()))(_.certificateDetail).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CertificateSummary.ReadOnly = CertificateSummary.wrap(buildAwsValue())
  }
  object CertificateSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CertificateSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CertificateSummary = CertificateSummary(certificateArnValue.map(value => value), certificateNameValue.map(value => value), domainNameValue.map(value => value), certificateDetailValue.map(value => value.editable), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def certificateArnValue: scala.Option[primitives.NonEmptyString]
      def certificateNameValue: scala.Option[primitives.CertificateName]
      def domainNameValue: scala.Option[primitives.DomainName]
      def certificateDetailValue: scala.Option[Certificate.ReadOnly]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def certificateArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateArn", certificateArnValue)
      def certificateName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.CertificateName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateName", certificateNameValue)
      def domainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainName", domainNameValue)
      def certificateDetail: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Certificate.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateDetail", certificateDetailValue)
      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.lightsail.model.CertificateSummary) extends CertificateSummary.ReadOnly {
      override def certificateArnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.certificateArn()).map(value => value: primitives.NonEmptyString)
      override def certificateNameValue: scala.Option[primitives.CertificateName] = scala.Option(impl.certificateName()).map(value => value: primitives.CertificateName)
      override def domainNameValue: scala.Option[primitives.DomainName] = scala.Option(impl.domainName()).map(value => value: primitives.DomainName)
      override def certificateDetailValue: scala.Option[Certificate.ReadOnly] = scala.Option(impl.certificateDetail()).map(value => Certificate.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.lightsail.model.CertificateSummary): ReadOnly = new Wrapper(impl)
  }
  type CertificateSummaryList = List[CertificateSummary]
  case class CloseInstancePublicPortsRequest(portInfo: PortInfo, instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsRequest = {
      import CloseInstancePublicPortsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsRequest.builder().portInfo(portInfo.buildAwsValue()).instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: CloseInstancePublicPortsRequest.ReadOnly = CloseInstancePublicPortsRequest.wrap(buildAwsValue())
  }
  object CloseInstancePublicPortsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CloseInstancePublicPortsRequest = CloseInstancePublicPortsRequest(portInfoValue.editable, instanceNameValue)
      def portInfoValue: PortInfo.ReadOnly
      def instanceNameValue: primitives.ResourceName
      def portInfo: ZIO[Any, Nothing, PortInfo.ReadOnly] = ZIO.succeed(portInfoValue)
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsRequest) extends CloseInstancePublicPortsRequest.ReadOnly {
      override def portInfoValue: PortInfo.ReadOnly = PortInfo.wrap(impl.portInfo())
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsRequest): ReadOnly = new Wrapper(impl)
  }
  case class CloseInstancePublicPortsResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsResponse = {
      import CloseInstancePublicPortsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: CloseInstancePublicPortsResponse.ReadOnly = CloseInstancePublicPortsResponse.wrap(buildAwsValue())
  }
  object CloseInstancePublicPortsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CloseInstancePublicPortsResponse = CloseInstancePublicPortsResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsResponse) extends CloseInstancePublicPortsResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CloseInstancePublicPortsResponse): ReadOnly = new Wrapper(impl)
  }
  case class CloudFormationStackRecord(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, state: scala.Option[RecordState] = None, sourceInfo: scala.Option[Iterable[CloudFormationStackRecordSourceInfo]] = None, destinationInfo: scala.Option[DestinationInfo] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecord = {
      import CloudFormationStackRecord.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecord.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(sourceInfo.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.sourceInfo).optionallyWith(destinationInfo.map(value => value.buildAwsValue()))(_.destinationInfo).build()
    }
    def asReadOnly: CloudFormationStackRecord.ReadOnly = CloudFormationStackRecord.wrap(buildAwsValue())
  }
  object CloudFormationStackRecord {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecord] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CloudFormationStackRecord = CloudFormationStackRecord(nameValue.map(value => value), arnValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), stateValue.map(value => value), sourceInfoValue.map(value => value.map { item => 
        item.editable
      }), destinationInfoValue.map(value => value.editable))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def stateValue: scala.Option[RecordState]
      def sourceInfoValue: scala.Option[List[CloudFormationStackRecordSourceInfo.ReadOnly]]
      def destinationInfoValue: scala.Option[DestinationInfo.ReadOnly]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RecordState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def sourceInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[CloudFormationStackRecordSourceInfo.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceInfo", sourceInfoValue)
      def destinationInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DestinationInfo.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationInfo", destinationInfoValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecord) extends CloudFormationStackRecord.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def stateValue: scala.Option[RecordState] = scala.Option(impl.state()).map(value => RecordState.wrap(value))
      override def sourceInfoValue: scala.Option[List[CloudFormationStackRecordSourceInfo.ReadOnly]] = scala.Option(impl.sourceInfo()).map(value => value.asScala.map { item => 
        CloudFormationStackRecordSourceInfo.wrap(item)
      }.toList)
      override def destinationInfoValue: scala.Option[DestinationInfo.ReadOnly] = scala.Option(impl.destinationInfo()).map(value => DestinationInfo.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecord): ReadOnly = new Wrapper(impl)
  }
  type CloudFormationStackRecordList = List[CloudFormationStackRecord]
  case class CloudFormationStackRecordSourceInfo(resourceType: scala.Option[CloudFormationStackRecordSourceType] = None, name: scala.Option[primitives.NonEmptyString] = None, arn: scala.Option[primitives.NonEmptyString] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceInfo = {
      import CloudFormationStackRecordSourceInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceInfo.builder().optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).build()
    }
    def asReadOnly: CloudFormationStackRecordSourceInfo.ReadOnly = CloudFormationStackRecordSourceInfo.wrap(buildAwsValue())
  }
  object CloudFormationStackRecordSourceInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CloudFormationStackRecordSourceInfo = CloudFormationStackRecordSourceInfo(resourceTypeValue.map(value => value), nameValue.map(value => value), arnValue.map(value => value))
      def resourceTypeValue: scala.Option[CloudFormationStackRecordSourceType]
      def nameValue: scala.Option[primitives.NonEmptyString]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CloudFormationStackRecordSourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceInfo) extends CloudFormationStackRecordSourceInfo.ReadOnly {
      override def resourceTypeValue: scala.Option[CloudFormationStackRecordSourceType] = scala.Option(impl.resourceType()).map(value => CloudFormationStackRecordSourceType.wrap(value))
      override def nameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.name()).map(value => value: primitives.NonEmptyString)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceInfo): ReadOnly = new Wrapper(impl)
  }
  type CloudFormationStackRecordSourceInfoList = List[CloudFormationStackRecordSourceInfo]
  sealed trait CloudFormationStackRecordSourceType { def unwrap: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType }
  object CloudFormationStackRecordSourceType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType): CloudFormationStackRecordSourceType = value match {
      case software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType.EXPORT_SNAPSHOT_RECORD => ExportSnapshotRecord
    }
    final case object unknownToSdkVersion extends CloudFormationStackRecordSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType = software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType.UNKNOWN_TO_SDK_VERSION }
    final case object ExportSnapshotRecord extends CloudFormationStackRecordSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType = software.amazon.awssdk.services.lightsail.model.CloudFormationStackRecordSourceType.EXPORT_SNAPSHOT_RECORD }
  }
  sealed trait ComparisonOperator { def unwrap: software.amazon.awssdk.services.lightsail.model.ComparisonOperator }
  object ComparisonOperator {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ComparisonOperator): ComparisonOperator = value match {
      case software.amazon.awssdk.services.lightsail.model.ComparisonOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD => GreaterThanOrEqualToThreshold
      case software.amazon.awssdk.services.lightsail.model.ComparisonOperator.GREATER_THAN_THRESHOLD => GreaterThanThreshold
      case software.amazon.awssdk.services.lightsail.model.ComparisonOperator.LESS_THAN_THRESHOLD => LessThanThreshold
      case software.amazon.awssdk.services.lightsail.model.ComparisonOperator.LESS_THAN_OR_EQUAL_TO_THRESHOLD => LessThanOrEqualToThreshold
    }
    final case object unknownToSdkVersion extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.lightsail.model.ComparisonOperator = software.amazon.awssdk.services.lightsail.model.ComparisonOperator.UNKNOWN_TO_SDK_VERSION }
    final case object GreaterThanOrEqualToThreshold extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.lightsail.model.ComparisonOperator = software.amazon.awssdk.services.lightsail.model.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD }
    final case object GreaterThanThreshold extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.lightsail.model.ComparisonOperator = software.amazon.awssdk.services.lightsail.model.ComparisonOperator.GREATER_THAN_THRESHOLD }
    final case object LessThanThreshold extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.lightsail.model.ComparisonOperator = software.amazon.awssdk.services.lightsail.model.ComparisonOperator.LESS_THAN_THRESHOLD }
    final case object LessThanOrEqualToThreshold extends ComparisonOperator { override def unwrap: software.amazon.awssdk.services.lightsail.model.ComparisonOperator = software.amazon.awssdk.services.lightsail.model.ComparisonOperator.LESS_THAN_OR_EQUAL_TO_THRESHOLD }
  }
  case class ContactMethod(contactEndpoint: scala.Option[primitives.NonEmptyString] = None, status: scala.Option[ContactMethodStatus] = None, protocol: scala.Option[ContactProtocol] = None, name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, supportCode: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContactMethod = {
      import ContactMethod.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContactMethod.builder().optionallyWith(contactEndpoint.map(value => value: java.lang.String))(_.contactEndpoint).optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(protocol.map(value => value.unwrap))(_.protocol).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).build()
    }
    def asReadOnly: ContactMethod.ReadOnly = ContactMethod.wrap(buildAwsValue())
  }
  object ContactMethod {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContactMethod] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContactMethod = ContactMethod(contactEndpointValue.map(value => value), statusValue.map(value => value), protocolValue.map(value => value), nameValue.map(value => value), arnValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), supportCodeValue.map(value => value))
      def contactEndpointValue: scala.Option[primitives.NonEmptyString]
      def statusValue: scala.Option[ContactMethodStatus]
      def protocolValue: scala.Option[ContactProtocol]
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def supportCodeValue: scala.Option[String]
      def contactEndpoint: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contactEndpoint", contactEndpointValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContactMethodStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def protocol: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContactProtocol] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocol", protocolValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContactMethod) extends ContactMethod.ReadOnly {
      override def contactEndpointValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.contactEndpoint()).map(value => value: primitives.NonEmptyString)
      override def statusValue: scala.Option[ContactMethodStatus] = scala.Option(impl.status()).map(value => ContactMethodStatus.wrap(value))
      override def protocolValue: scala.Option[ContactProtocol] = scala.Option(impl.protocol()).map(value => ContactProtocol.wrap(value))
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContactMethod): ReadOnly = new Wrapper(impl)
  }
  sealed trait ContactMethodStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodStatus }
  object ContactMethodStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContactMethodStatus): ContactMethodStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.PENDING_VERIFICATION => PendingVerification
      case software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.VALID => Valid
      case software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.INVALID => Invalid
    }
    final case object unknownToSdkVersion extends ContactMethodStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodStatus = software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.UNKNOWN_TO_SDK_VERSION }
    final case object PendingVerification extends ContactMethodStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodStatus = software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.PENDING_VERIFICATION }
    final case object Valid extends ContactMethodStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodStatus = software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.VALID }
    final case object Invalid extends ContactMethodStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodStatus = software.amazon.awssdk.services.lightsail.model.ContactMethodStatus.INVALID }
  }
  sealed trait ContactMethodVerificationProtocol { def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol }
  object ContactMethodVerificationProtocol {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol): ContactMethodVerificationProtocol = value match {
      case software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol.EMAIL => Email
    }
    final case object unknownToSdkVersion extends ContactMethodVerificationProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol = software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol.UNKNOWN_TO_SDK_VERSION }
    final case object Email extends ContactMethodVerificationProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol = software.amazon.awssdk.services.lightsail.model.ContactMethodVerificationProtocol.EMAIL }
  }
  type ContactMethodsList = List[ContactMethod]
  sealed trait ContactProtocol { def unwrap: software.amazon.awssdk.services.lightsail.model.ContactProtocol }
  object ContactProtocol {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContactProtocol): ContactProtocol = value match {
      case software.amazon.awssdk.services.lightsail.model.ContactProtocol.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContactProtocol.EMAIL => Email
      case software.amazon.awssdk.services.lightsail.model.ContactProtocol.SMS => SMS
    }
    final case object unknownToSdkVersion extends ContactProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactProtocol = software.amazon.awssdk.services.lightsail.model.ContactProtocol.UNKNOWN_TO_SDK_VERSION }
    final case object Email extends ContactProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactProtocol = software.amazon.awssdk.services.lightsail.model.ContactProtocol.EMAIL }
    final case object SMS extends ContactProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContactProtocol = software.amazon.awssdk.services.lightsail.model.ContactProtocol.SMS }
  }
  type ContactProtocolsList = List[ContactProtocol]
  case class Container(image: scala.Option[String] = None, command: scala.Option[Iterable[String]] = None, environment: scala.Option[Map[String, String]] = None, ports: scala.Option[Map[String, ContainerServiceProtocol]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Container = {
      import Container.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Container.builder().optionallyWith(image.map(value => value: java.lang.String))(_.image).optionallyWith(command.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.command).optionallyWith(environment.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.environment).optionallyWith(ports.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.unwrap.toString
      }).asJava))(_.portsWithStrings).build()
    }
    def asReadOnly: Container.ReadOnly = Container.wrap(buildAwsValue())
  }
  object Container {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Container] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Container = Container(imageValue.map(value => value), commandValue.map(value => value), environmentValue.map(value => value), portsValue.map(value => value))
      def imageValue: scala.Option[String]
      def commandValue: scala.Option[List[String]]
      def environmentValue: scala.Option[Map[String, String]]
      def portsValue: scala.Option[Map[String, ContainerServiceProtocol]]
      def image: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("image", imageValue)
      def command: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("command", commandValue)
      def environment: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[String, String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("environment", environmentValue)
      def ports: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[String, ContainerServiceProtocol]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ports", portsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Container) extends Container.ReadOnly {
      override def imageValue: scala.Option[String] = scala.Option(impl.image()).map(value => value: String)
      override def commandValue: scala.Option[List[String]] = scala.Option(impl.command()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def environmentValue: scala.Option[Map[String, String]] = scala.Option(impl.environment()).map(value => value.asScala.map({
        case (key, value) =>
          (key: String) -> (value: String)
      }).toMap)
      override def portsValue: scala.Option[Map[String, ContainerServiceProtocol]] = scala.Option(impl.ports()).map(value => value.asScala.map({
        case (key, value) =>
          (key: String) -> ContainerServiceProtocol.wrap(value)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Container): ReadOnly = new Wrapper(impl)
  }
  case class ContainerImage(image: scala.Option[String] = None, digest: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerImage = {
      import ContainerImage.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerImage.builder().optionallyWith(image.map(value => value: java.lang.String))(_.image).optionallyWith(digest.map(value => value: java.lang.String))(_.digest).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).build()
    }
    def asReadOnly: ContainerImage.ReadOnly = ContainerImage.wrap(buildAwsValue())
  }
  object ContainerImage {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerImage] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerImage = ContainerImage(imageValue.map(value => value), digestValue.map(value => value), createdAtValue.map(value => value))
      def imageValue: scala.Option[String]
      def digestValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def image: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("image", imageValue)
      def digest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("digest", digestValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerImage) extends ContainerImage.ReadOnly {
      override def imageValue: scala.Option[String] = scala.Option(impl.image()).map(value => value: String)
      override def digestValue: scala.Option[String] = scala.Option(impl.digest()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerImage): ReadOnly = new Wrapper(impl)
  }
  type ContainerImageList = List[ContainerImage]
  type ContainerMap = Map[primitives.ContainerName, Container]
  case class ContainerService(containerServiceName: scala.Option[primitives.ContainerServiceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, power: scala.Option[ContainerServicePowerName] = None, powerId: scala.Option[String] = None, state: scala.Option[ContainerServiceState] = None, stateDetail: scala.Option[ContainerServiceStateDetail] = None, scale: scala.Option[primitives.ContainerServiceScale] = None, currentDeployment: scala.Option[ContainerServiceDeployment] = None, nextDeployment: scala.Option[ContainerServiceDeployment] = None, isDisabled: scala.Option[Boolean] = None, principalArn: scala.Option[String] = None, privateDomainName: scala.Option[String] = None, publicDomainNames: scala.Option[Map[String, Iterable[String]]] = None, url: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerService = {
      import ContainerService.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerService.builder().optionallyWith(containerServiceName.map(value => value: java.lang.String))(_.containerServiceName).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(power.map(value => value.unwrap))(_.power).optionallyWith(powerId.map(value => value: java.lang.String))(_.powerId).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(stateDetail.map(value => value.buildAwsValue()))(_.stateDetail).optionallyWith(scale.map(value => value: java.lang.Integer))(_.scale).optionallyWith(currentDeployment.map(value => value.buildAwsValue()))(_.currentDeployment).optionallyWith(nextDeployment.map(value => value.buildAwsValue()))(_.nextDeployment).optionallyWith(isDisabled.map(value => value: java.lang.Boolean))(_.isDisabled).optionallyWith(principalArn.map(value => value: java.lang.String))(_.principalArn).optionallyWith(privateDomainName.map(value => value: java.lang.String))(_.privateDomainName).optionallyWith(publicDomainNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item: java.lang.String
          }.asJavaCollection
      }).asJava))(_.publicDomainNames).optionallyWith(url.map(value => value: java.lang.String))(_.url).build()
    }
    def asReadOnly: ContainerService.ReadOnly = ContainerService.wrap(buildAwsValue())
  }
  object ContainerService {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerService] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerService = ContainerService(containerServiceNameValue.map(value => value), arnValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), powerValue.map(value => value), powerIdValue.map(value => value), stateValue.map(value => value), stateDetailValue.map(value => value.editable), scaleValue.map(value => value), currentDeploymentValue.map(value => value.editable), nextDeploymentValue.map(value => value.editable), isDisabledValue.map(value => value), principalArnValue.map(value => value), privateDomainNameValue.map(value => value), publicDomainNamesValue.map(value => value), urlValue.map(value => value))
      def containerServiceNameValue: scala.Option[primitives.ContainerServiceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def powerValue: scala.Option[ContainerServicePowerName]
      def powerIdValue: scala.Option[String]
      def stateValue: scala.Option[ContainerServiceState]
      def stateDetailValue: scala.Option[ContainerServiceStateDetail.ReadOnly]
      def scaleValue: scala.Option[primitives.ContainerServiceScale]
      def currentDeploymentValue: scala.Option[ContainerServiceDeployment.ReadOnly]
      def nextDeploymentValue: scala.Option[ContainerServiceDeployment.ReadOnly]
      def isDisabledValue: scala.Option[Boolean]
      def principalArnValue: scala.Option[String]
      def privateDomainNameValue: scala.Option[String]
      def publicDomainNamesValue: scala.Option[Map[String, List[String]]]
      def urlValue: scala.Option[String]
      def containerServiceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ContainerServiceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerServiceName", containerServiceNameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def power: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServicePowerName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("power", powerValue)
      def powerId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("powerId", powerIdValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def stateDetail: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceStateDetail.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("stateDetail", stateDetailValue)
      def scale: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ContainerServiceScale] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scale", scaleValue)
      def currentDeployment: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceDeployment.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("currentDeployment", currentDeploymentValue)
      def nextDeployment: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceDeployment.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextDeployment", nextDeploymentValue)
      def isDisabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isDisabled", isDisabledValue)
      def principalArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("principalArn", principalArnValue)
      def privateDomainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("privateDomainName", privateDomainNameValue)
      def publicDomainNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[String, List[String]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicDomainNames", publicDomainNamesValue)
      def url: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("url", urlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerService) extends ContainerService.ReadOnly {
      override def containerServiceNameValue: scala.Option[primitives.ContainerServiceName] = scala.Option(impl.containerServiceName()).map(value => value: primitives.ContainerServiceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def powerValue: scala.Option[ContainerServicePowerName] = scala.Option(impl.power()).map(value => ContainerServicePowerName.wrap(value))
      override def powerIdValue: scala.Option[String] = scala.Option(impl.powerId()).map(value => value: String)
      override def stateValue: scala.Option[ContainerServiceState] = scala.Option(impl.state()).map(value => ContainerServiceState.wrap(value))
      override def stateDetailValue: scala.Option[ContainerServiceStateDetail.ReadOnly] = scala.Option(impl.stateDetail()).map(value => ContainerServiceStateDetail.wrap(value))
      override def scaleValue: scala.Option[primitives.ContainerServiceScale] = scala.Option(impl.scale()).map(value => value: primitives.ContainerServiceScale)
      override def currentDeploymentValue: scala.Option[ContainerServiceDeployment.ReadOnly] = scala.Option(impl.currentDeployment()).map(value => ContainerServiceDeployment.wrap(value))
      override def nextDeploymentValue: scala.Option[ContainerServiceDeployment.ReadOnly] = scala.Option(impl.nextDeployment()).map(value => ContainerServiceDeployment.wrap(value))
      override def isDisabledValue: scala.Option[Boolean] = scala.Option(impl.isDisabled()).map(value => value: Boolean)
      override def principalArnValue: scala.Option[String] = scala.Option(impl.principalArn()).map(value => value: String)
      override def privateDomainNameValue: scala.Option[String] = scala.Option(impl.privateDomainName()).map(value => value: String)
      override def publicDomainNamesValue: scala.Option[Map[String, List[String]]] = scala.Option(impl.publicDomainNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: String) -> value.asScala.map { item => 
            item: String
          }.toList
      }).toMap)
      override def urlValue: scala.Option[String] = scala.Option(impl.url()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerService): ReadOnly = new Wrapper(impl)
  }
  case class ContainerServiceDeployment(version: scala.Option[primitives.Integer] = None, state: scala.Option[ContainerServiceDeploymentState] = None, containers: scala.Option[Map[primitives.ContainerName, Container]] = None, publicEndpoint: scala.Option[ContainerServiceEndpoint] = None, createdAt: scala.Option[primitives.IsoDate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServiceDeployment = {
      import ContainerServiceDeployment.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServiceDeployment.builder().optionallyWith(version.map(value => value: java.lang.Integer))(_.version).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(containers.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.containers).optionallyWith(publicEndpoint.map(value => value.buildAwsValue()))(_.publicEndpoint).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).build()
    }
    def asReadOnly: ContainerServiceDeployment.ReadOnly = ContainerServiceDeployment.wrap(buildAwsValue())
  }
  object ContainerServiceDeployment {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServiceDeployment] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServiceDeployment = ContainerServiceDeployment(versionValue.map(value => value), stateValue.map(value => value), containersValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), publicEndpointValue.map(value => value.editable), createdAtValue.map(value => value))
      def versionValue: scala.Option[primitives.Integer]
      def stateValue: scala.Option[ContainerServiceDeploymentState]
      def containersValue: scala.Option[Map[primitives.ContainerName, Container.ReadOnly]]
      def publicEndpointValue: scala.Option[ContainerServiceEndpoint.ReadOnly]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def version: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("version", versionValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceDeploymentState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def containers: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ContainerName, Container.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containers", containersValue)
      def publicEndpoint: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceEndpoint.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicEndpoint", publicEndpointValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeployment) extends ContainerServiceDeployment.ReadOnly {
      override def versionValue: scala.Option[primitives.Integer] = scala.Option(impl.version()).map(value => value: primitives.Integer)
      override def stateValue: scala.Option[ContainerServiceDeploymentState] = scala.Option(impl.state()).map(value => ContainerServiceDeploymentState.wrap(value))
      override def containersValue: scala.Option[Map[primitives.ContainerName, Container.ReadOnly]] = scala.Option(impl.containers()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ContainerName) -> Container.wrap(value)
      }).toMap)
      override def publicEndpointValue: scala.Option[ContainerServiceEndpoint.ReadOnly] = scala.Option(impl.publicEndpoint()).map(value => ContainerServiceEndpoint.wrap(value))
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeployment): ReadOnly = new Wrapper(impl)
  }
  type ContainerServiceDeploymentList = List[ContainerServiceDeployment]
  case class ContainerServiceDeploymentRequest(containers: scala.Option[Map[primitives.ContainerName, Container]] = None, publicEndpoint: scala.Option[EndpointRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentRequest = {
      import ContainerServiceDeploymentRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentRequest.builder().optionallyWith(containers.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.containers).optionallyWith(publicEndpoint.map(value => value.buildAwsValue()))(_.publicEndpoint).build()
    }
    def asReadOnly: ContainerServiceDeploymentRequest.ReadOnly = ContainerServiceDeploymentRequest.wrap(buildAwsValue())
  }
  object ContainerServiceDeploymentRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServiceDeploymentRequest = ContainerServiceDeploymentRequest(containersValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), publicEndpointValue.map(value => value.editable))
      def containersValue: scala.Option[Map[primitives.ContainerName, Container.ReadOnly]]
      def publicEndpointValue: scala.Option[EndpointRequest.ReadOnly]
      def containers: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ContainerName, Container.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containers", containersValue)
      def publicEndpoint: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, EndpointRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicEndpoint", publicEndpointValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentRequest) extends ContainerServiceDeploymentRequest.ReadOnly {
      override def containersValue: scala.Option[Map[primitives.ContainerName, Container.ReadOnly]] = scala.Option(impl.containers()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ContainerName) -> Container.wrap(value)
      }).toMap)
      override def publicEndpointValue: scala.Option[EndpointRequest.ReadOnly] = scala.Option(impl.publicEndpoint()).map(value => EndpointRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentRequest): ReadOnly = new Wrapper(impl)
  }
  sealed trait ContainerServiceDeploymentState { def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState }
  object ContainerServiceDeploymentState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState): ContainerServiceDeploymentState = value match {
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.ACTIVATING => ACTIVATING
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.ACTIVE => ACTIVE
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.INACTIVE => INACTIVE
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.FAILED => FAILED
    }
    final case object unknownToSdkVersion extends ContainerServiceDeploymentState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState = software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.UNKNOWN_TO_SDK_VERSION }
    final case object ACTIVATING extends ContainerServiceDeploymentState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState = software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.ACTIVATING }
    final case object ACTIVE extends ContainerServiceDeploymentState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState = software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.ACTIVE }
    final case object INACTIVE extends ContainerServiceDeploymentState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState = software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.INACTIVE }
    final case object FAILED extends ContainerServiceDeploymentState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState = software.amazon.awssdk.services.lightsail.model.ContainerServiceDeploymentState.FAILED }
  }
  case class ContainerServiceEndpoint(containerName: scala.Option[String] = None, containerPort: scala.Option[primitives.Integer] = None, healthCheck: scala.Option[ContainerServiceHealthCheckConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServiceEndpoint = {
      import ContainerServiceEndpoint.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServiceEndpoint.builder().optionallyWith(containerName.map(value => value: java.lang.String))(_.containerName).optionallyWith(containerPort.map(value => value: java.lang.Integer))(_.containerPort).optionallyWith(healthCheck.map(value => value.buildAwsValue()))(_.healthCheck).build()
    }
    def asReadOnly: ContainerServiceEndpoint.ReadOnly = ContainerServiceEndpoint.wrap(buildAwsValue())
  }
  object ContainerServiceEndpoint {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServiceEndpoint] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServiceEndpoint = ContainerServiceEndpoint(containerNameValue.map(value => value), containerPortValue.map(value => value), healthCheckValue.map(value => value.editable))
      def containerNameValue: scala.Option[String]
      def containerPortValue: scala.Option[primitives.Integer]
      def healthCheckValue: scala.Option[ContainerServiceHealthCheckConfig.ReadOnly]
      def containerName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerName", containerNameValue)
      def containerPort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerPort", containerPortValue)
      def healthCheck: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceHealthCheckConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("healthCheck", healthCheckValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceEndpoint) extends ContainerServiceEndpoint.ReadOnly {
      override def containerNameValue: scala.Option[String] = scala.Option(impl.containerName()).map(value => value: String)
      override def containerPortValue: scala.Option[primitives.Integer] = scala.Option(impl.containerPort()).map(value => value: primitives.Integer)
      override def healthCheckValue: scala.Option[ContainerServiceHealthCheckConfig.ReadOnly] = scala.Option(impl.healthCheck()).map(value => ContainerServiceHealthCheckConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceEndpoint): ReadOnly = new Wrapper(impl)
  }
  case class ContainerServiceHealthCheckConfig(healthyThreshold: scala.Option[primitives.Integer] = None, unhealthyThreshold: scala.Option[primitives.Integer] = None, timeoutSeconds: scala.Option[primitives.Integer] = None, intervalSeconds: scala.Option[primitives.Integer] = None, path: scala.Option[String] = None, successCodes: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServiceHealthCheckConfig = {
      import ContainerServiceHealthCheckConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServiceHealthCheckConfig.builder().optionallyWith(healthyThreshold.map(value => value: java.lang.Integer))(_.healthyThreshold).optionallyWith(unhealthyThreshold.map(value => value: java.lang.Integer))(_.unhealthyThreshold).optionallyWith(timeoutSeconds.map(value => value: java.lang.Integer))(_.timeoutSeconds).optionallyWith(intervalSeconds.map(value => value: java.lang.Integer))(_.intervalSeconds).optionallyWith(path.map(value => value: java.lang.String))(_.path).optionallyWith(successCodes.map(value => value: java.lang.String))(_.successCodes).build()
    }
    def asReadOnly: ContainerServiceHealthCheckConfig.ReadOnly = ContainerServiceHealthCheckConfig.wrap(buildAwsValue())
  }
  object ContainerServiceHealthCheckConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServiceHealthCheckConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServiceHealthCheckConfig = ContainerServiceHealthCheckConfig(healthyThresholdValue.map(value => value), unhealthyThresholdValue.map(value => value), timeoutSecondsValue.map(value => value), intervalSecondsValue.map(value => value), pathValue.map(value => value), successCodesValue.map(value => value))
      def healthyThresholdValue: scala.Option[primitives.Integer]
      def unhealthyThresholdValue: scala.Option[primitives.Integer]
      def timeoutSecondsValue: scala.Option[primitives.Integer]
      def intervalSecondsValue: scala.Option[primitives.Integer]
      def pathValue: scala.Option[String]
      def successCodesValue: scala.Option[String]
      def healthyThreshold: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("healthyThreshold", healthyThresholdValue)
      def unhealthyThreshold: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("unhealthyThreshold", unhealthyThresholdValue)
      def timeoutSeconds: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeoutSeconds", timeoutSecondsValue)
      def intervalSeconds: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("intervalSeconds", intervalSecondsValue)
      def path: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("path", pathValue)
      def successCodes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("successCodes", successCodesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceHealthCheckConfig) extends ContainerServiceHealthCheckConfig.ReadOnly {
      override def healthyThresholdValue: scala.Option[primitives.Integer] = scala.Option(impl.healthyThreshold()).map(value => value: primitives.Integer)
      override def unhealthyThresholdValue: scala.Option[primitives.Integer] = scala.Option(impl.unhealthyThreshold()).map(value => value: primitives.Integer)
      override def timeoutSecondsValue: scala.Option[primitives.Integer] = scala.Option(impl.timeoutSeconds()).map(value => value: primitives.Integer)
      override def intervalSecondsValue: scala.Option[primitives.Integer] = scala.Option(impl.intervalSeconds()).map(value => value: primitives.Integer)
      override def pathValue: scala.Option[String] = scala.Option(impl.path()).map(value => value: String)
      override def successCodesValue: scala.Option[String] = scala.Option(impl.successCodes()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceHealthCheckConfig): ReadOnly = new Wrapper(impl)
  }
  type ContainerServiceList = List[ContainerService]
  case class ContainerServiceLogEvent(createdAt: scala.Option[primitives.IsoDate] = None, message: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServiceLogEvent = {
      import ContainerServiceLogEvent.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServiceLogEvent.builder().optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(message.map(value => value: java.lang.String))(_.message).build()
    }
    def asReadOnly: ContainerServiceLogEvent.ReadOnly = ContainerServiceLogEvent.wrap(buildAwsValue())
  }
  object ContainerServiceLogEvent {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServiceLogEvent] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServiceLogEvent = ContainerServiceLogEvent(createdAtValue.map(value => value), messageValue.map(value => value))
      def createdAtValue: scala.Option[primitives.IsoDate]
      def messageValue: scala.Option[String]
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      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.lightsail.model.ContainerServiceLogEvent) extends ContainerServiceLogEvent.ReadOnly {
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def messageValue: scala.Option[String] = scala.Option(impl.message()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceLogEvent): ReadOnly = new Wrapper(impl)
  }
  type ContainerServiceLogEventList = List[ContainerServiceLogEvent]
  type ContainerServiceMetadataEntry = Map[String, String]
  type ContainerServiceMetadataEntryList = List[Map[String, String]]
  sealed trait ContainerServiceMetricName { def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName }
  object ContainerServiceMetricName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName): ContainerServiceMetricName = value match {
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName.CPU_UTILIZATION => CPUUtilization
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName.MEMORY_UTILIZATION => MemoryUtilization
    }
    final case object unknownToSdkVersion extends ContainerServiceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName = software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName.UNKNOWN_TO_SDK_VERSION }
    final case object CPUUtilization extends ContainerServiceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName = software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName.CPU_UTILIZATION }
    final case object MemoryUtilization extends ContainerServiceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName = software.amazon.awssdk.services.lightsail.model.ContainerServiceMetricName.MEMORY_UTILIZATION }
  }
  case class ContainerServicePower(powerId: scala.Option[String] = None, price: scala.Option[Float] = None, cpuCount: scala.Option[Float] = None, ramSizeInGb: scala.Option[Float] = None, name: scala.Option[String] = None, isActive: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServicePower = {
      import ContainerServicePower.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServicePower.builder().optionallyWith(powerId.map(value => value: java.lang.String))(_.powerId).optionallyWith(price.map(value => value: java.lang.Float))(_.price).optionallyWith(cpuCount.map(value => value: java.lang.Float))(_.cpuCount).optionallyWith(ramSizeInGb.map(value => value: java.lang.Float))(_.ramSizeInGb).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(isActive.map(value => value: java.lang.Boolean))(_.isActive).build()
    }
    def asReadOnly: ContainerServicePower.ReadOnly = ContainerServicePower.wrap(buildAwsValue())
  }
  object ContainerServicePower {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServicePower] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServicePower = ContainerServicePower(powerIdValue.map(value => value), priceValue.map(value => value), cpuCountValue.map(value => value), ramSizeInGbValue.map(value => value), nameValue.map(value => value), isActiveValue.map(value => value))
      def powerIdValue: scala.Option[String]
      def priceValue: scala.Option[Float]
      def cpuCountValue: scala.Option[Float]
      def ramSizeInGbValue: scala.Option[Float]
      def nameValue: scala.Option[String]
      def isActiveValue: scala.Option[Boolean]
      def powerId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("powerId", powerIdValue)
      def price: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("price", priceValue)
      def cpuCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cpuCount", cpuCountValue)
      def ramSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ramSizeInGb", ramSizeInGbValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def isActive: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isActive", isActiveValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerServicePower) extends ContainerServicePower.ReadOnly {
      override def powerIdValue: scala.Option[String] = scala.Option(impl.powerId()).map(value => value: String)
      override def priceValue: scala.Option[Float] = scala.Option(impl.price()).map(value => value: Float)
      override def cpuCountValue: scala.Option[Float] = scala.Option(impl.cpuCount()).map(value => value: Float)
      override def ramSizeInGbValue: scala.Option[Float] = scala.Option(impl.ramSizeInGb()).map(value => value: Float)
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
      override def isActiveValue: scala.Option[Boolean] = scala.Option(impl.isActive()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServicePower): ReadOnly = new Wrapper(impl)
  }
  type ContainerServicePowerList = List[ContainerServicePower]
  sealed trait ContainerServicePowerName { def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName }
  object ContainerServicePowerName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName): ContainerServicePowerName = value match {
      case software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.NANO => nano
      case software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.MICRO => micro
      case software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.SMALL => small
      case software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.MEDIUM => medium
      case software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.LARGE => large
      case software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.XLARGE => xlarge
    }
    final case object unknownToSdkVersion extends ContainerServicePowerName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName = software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.UNKNOWN_TO_SDK_VERSION }
    final case object nano extends ContainerServicePowerName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName = software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.NANO }
    final case object micro extends ContainerServicePowerName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName = software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.MICRO }
    final case object small extends ContainerServicePowerName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName = software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.SMALL }
    final case object medium extends ContainerServicePowerName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName = software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.MEDIUM }
    final case object large extends ContainerServicePowerName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName = software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.LARGE }
    final case object xlarge extends ContainerServicePowerName { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName = software.amazon.awssdk.services.lightsail.model.ContainerServicePowerName.XLARGE }
  }
  sealed trait ContainerServiceProtocol { def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol }
  object ContainerServiceProtocol {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol): ContainerServiceProtocol = value match {
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.HTTP => HTTP
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.HTTPS => HTTPS
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.TCP => TCP
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.UDP => UDP
    }
    final case object unknownToSdkVersion extends ContainerServiceProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol = software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.UNKNOWN_TO_SDK_VERSION }
    final case object HTTP extends ContainerServiceProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol = software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.HTTP }
    final case object HTTPS extends ContainerServiceProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol = software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.HTTPS }
    final case object TCP extends ContainerServiceProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol = software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.TCP }
    final case object UDP extends ContainerServiceProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol = software.amazon.awssdk.services.lightsail.model.ContainerServiceProtocol.UDP }
  }
  type ContainerServicePublicDomains = Map[String, Iterable[String]]
  type ContainerServicePublicDomainsList = List[String]
  case class ContainerServiceRegistryLogin(username: scala.Option[String] = None, password: scala.Option[String] = None, expiresAt: scala.Option[primitives.IsoDate] = None, registry: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServiceRegistryLogin = {
      import ContainerServiceRegistryLogin.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServiceRegistryLogin.builder().optionallyWith(username.map(value => value: java.lang.String))(_.username).optionallyWith(password.map(value => value: java.lang.String))(_.password).optionallyWith(expiresAt.map(value => value: java.time.Instant))(_.expiresAt).optionallyWith(registry.map(value => value: java.lang.String))(_.registry).build()
    }
    def asReadOnly: ContainerServiceRegistryLogin.ReadOnly = ContainerServiceRegistryLogin.wrap(buildAwsValue())
  }
  object ContainerServiceRegistryLogin {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServiceRegistryLogin] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServiceRegistryLogin = ContainerServiceRegistryLogin(usernameValue.map(value => value), passwordValue.map(value => value), expiresAtValue.map(value => value), registryValue.map(value => value))
      def usernameValue: scala.Option[String]
      def passwordValue: scala.Option[String]
      def expiresAtValue: scala.Option[primitives.IsoDate]
      def registryValue: scala.Option[String]
      def username: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("username", usernameValue)
      def password: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("password", passwordValue)
      def expiresAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expiresAt", expiresAtValue)
      def registry: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("registry", registryValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceRegistryLogin) extends ContainerServiceRegistryLogin.ReadOnly {
      override def usernameValue: scala.Option[String] = scala.Option(impl.username()).map(value => value: String)
      override def passwordValue: scala.Option[String] = scala.Option(impl.password()).map(value => value: String)
      override def expiresAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.expiresAt()).map(value => value: primitives.IsoDate)
      override def registryValue: scala.Option[String] = scala.Option(impl.registry()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceRegistryLogin): ReadOnly = new Wrapper(impl)
  }
  sealed trait ContainerServiceState { def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState }
  object ContainerServiceState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContainerServiceState): ContainerServiceState = value match {
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.PENDING => PENDING
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.READY => READY
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.RUNNING => RUNNING
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.UPDATING => UPDATING
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.DELETING => DELETING
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.DISABLED => DISABLED
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceState.DEPLOYING => DEPLOYING
    }
    final case object unknownToSdkVersion extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.UNKNOWN_TO_SDK_VERSION }
    final case object PENDING extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.PENDING }
    final case object READY extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.READY }
    final case object RUNNING extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.RUNNING }
    final case object UPDATING extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.UPDATING }
    final case object DELETING extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.DELETING }
    final case object DISABLED extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.DISABLED }
    final case object DEPLOYING extends ContainerServiceState { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceState = software.amazon.awssdk.services.lightsail.model.ContainerServiceState.DEPLOYING }
  }
  case class ContainerServiceStateDetail(code: scala.Option[ContainerServiceStateDetailCode] = None, message: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetail = {
      import ContainerServiceStateDetail.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetail.builder().optionallyWith(code.map(value => value.unwrap))(_.code).optionallyWith(message.map(value => value: java.lang.String))(_.message).build()
    }
    def asReadOnly: ContainerServiceStateDetail.ReadOnly = ContainerServiceStateDetail.wrap(buildAwsValue())
  }
  object ContainerServiceStateDetail {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetail] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContainerServiceStateDetail = ContainerServiceStateDetail(codeValue.map(value => value), messageValue.map(value => value))
      def codeValue: scala.Option[ContainerServiceStateDetailCode]
      def messageValue: scala.Option[String]
      def code: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceStateDetailCode] = 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.lightsail.model.ContainerServiceStateDetail) extends ContainerServiceStateDetail.ReadOnly {
      override def codeValue: scala.Option[ContainerServiceStateDetailCode] = scala.Option(impl.code()).map(value => ContainerServiceStateDetailCode.wrap(value))
      override def messageValue: scala.Option[String] = scala.Option(impl.message()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetail): ReadOnly = new Wrapper(impl)
  }
  sealed trait ContainerServiceStateDetailCode { def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode }
  object ContainerServiceStateDetailCode {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode): ContainerServiceStateDetailCode = value match {
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CREATING_SYSTEM_RESOURCES => CREATING_SYSTEM_RESOURCES
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CREATING_NETWORK_INFRASTRUCTURE => CREATING_NETWORK_INFRASTRUCTURE
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.PROVISIONING_CERTIFICATE => PROVISIONING_CERTIFICATE
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.PROVISIONING_SERVICE => PROVISIONING_SERVICE
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CREATING_DEPLOYMENT => CREATING_DEPLOYMENT
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.EVALUATING_HEALTH_CHECK => EVALUATING_HEALTH_CHECK
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.ACTIVATING_DEPLOYMENT => ACTIVATING_DEPLOYMENT
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CERTIFICATE_LIMIT_EXCEEDED => CERTIFICATE_LIMIT_EXCEEDED
      case software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.UNKNOWN_ERROR => UNKNOWN_ERROR
    }
    final case object unknownToSdkVersion extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.UNKNOWN_TO_SDK_VERSION }
    final case object CREATING_SYSTEM_RESOURCES extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CREATING_SYSTEM_RESOURCES }
    final case object CREATING_NETWORK_INFRASTRUCTURE extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CREATING_NETWORK_INFRASTRUCTURE }
    final case object PROVISIONING_CERTIFICATE extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.PROVISIONING_CERTIFICATE }
    final case object PROVISIONING_SERVICE extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.PROVISIONING_SERVICE }
    final case object CREATING_DEPLOYMENT extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CREATING_DEPLOYMENT }
    final case object EVALUATING_HEALTH_CHECK extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.EVALUATING_HEALTH_CHECK }
    final case object ACTIVATING_DEPLOYMENT extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.ACTIVATING_DEPLOYMENT }
    final case object CERTIFICATE_LIMIT_EXCEEDED extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.CERTIFICATE_LIMIT_EXCEEDED }
    final case object UNKNOWN_ERROR extends ContainerServiceStateDetailCode { override def unwrap: software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode = software.amazon.awssdk.services.lightsail.model.ContainerServiceStateDetailCode.UNKNOWN_ERROR }
  }
  case class CookieObject(option: scala.Option[ForwardValues] = None, cookiesAllowList: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CookieObject = {
      import CookieObject.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CookieObject.builder().optionallyWith(option.map(value => value.unwrap))(_.option).optionallyWith(cookiesAllowList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.cookiesAllowList).build()
    }
    def asReadOnly: CookieObject.ReadOnly = CookieObject.wrap(buildAwsValue())
  }
  object CookieObject {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CookieObject] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CookieObject = CookieObject(optionValue.map(value => value), cookiesAllowListValue.map(value => value))
      def optionValue: scala.Option[ForwardValues]
      def cookiesAllowListValue: scala.Option[List[String]]
      def option: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ForwardValues] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("option", optionValue)
      def cookiesAllowList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cookiesAllowList", cookiesAllowListValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CookieObject) extends CookieObject.ReadOnly {
      override def optionValue: scala.Option[ForwardValues] = scala.Option(impl.option()).map(value => ForwardValues.wrap(value))
      override def cookiesAllowListValue: scala.Option[List[String]] = scala.Option(impl.cookiesAllowList()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CookieObject): ReadOnly = new Wrapper(impl)
  }
  case class CopySnapshotRequest(sourceSnapshotName: scala.Option[primitives.ResourceName] = None, sourceResourceName: scala.Option[String] = None, restoreDate: scala.Option[String] = None, useLatestRestorableAutoSnapshot: scala.Option[Boolean] = None, targetSnapshotName: primitives.ResourceName, sourceRegion: RegionName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CopySnapshotRequest = {
      import CopySnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CopySnapshotRequest.builder().optionallyWith(sourceSnapshotName.map(value => value: java.lang.String))(_.sourceSnapshotName).optionallyWith(sourceResourceName.map(value => value: java.lang.String))(_.sourceResourceName).optionallyWith(restoreDate.map(value => value: java.lang.String))(_.restoreDate).optionallyWith(useLatestRestorableAutoSnapshot.map(value => value: java.lang.Boolean))(_.useLatestRestorableAutoSnapshot).targetSnapshotName(targetSnapshotName: java.lang.String).sourceRegion(sourceRegion.unwrap).build()
    }
    def asReadOnly: CopySnapshotRequest.ReadOnly = CopySnapshotRequest.wrap(buildAwsValue())
  }
  object CopySnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CopySnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CopySnapshotRequest = CopySnapshotRequest(sourceSnapshotNameValue.map(value => value), sourceResourceNameValue.map(value => value), restoreDateValue.map(value => value), useLatestRestorableAutoSnapshotValue.map(value => value), targetSnapshotNameValue, sourceRegionValue)
      def sourceSnapshotNameValue: scala.Option[primitives.ResourceName]
      def sourceResourceNameValue: scala.Option[String]
      def restoreDateValue: scala.Option[String]
      def useLatestRestorableAutoSnapshotValue: scala.Option[Boolean]
      def targetSnapshotNameValue: primitives.ResourceName
      def sourceRegionValue: RegionName
      def sourceSnapshotName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceSnapshotName", sourceSnapshotNameValue)
      def sourceResourceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceResourceName", sourceResourceNameValue)
      def restoreDate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("restoreDate", restoreDateValue)
      def useLatestRestorableAutoSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("useLatestRestorableAutoSnapshot", useLatestRestorableAutoSnapshotValue)
      def targetSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(targetSnapshotNameValue)
      def sourceRegion: ZIO[Any, Nothing, RegionName] = ZIO.succeed(sourceRegionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CopySnapshotRequest) extends CopySnapshotRequest.ReadOnly {
      override def sourceSnapshotNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.sourceSnapshotName()).map(value => value: primitives.ResourceName)
      override def sourceResourceNameValue: scala.Option[String] = scala.Option(impl.sourceResourceName()).map(value => value: String)
      override def restoreDateValue: scala.Option[String] = scala.Option(impl.restoreDate()).map(value => value: String)
      override def useLatestRestorableAutoSnapshotValue: scala.Option[Boolean] = scala.Option(impl.useLatestRestorableAutoSnapshot()).map(value => value: Boolean)
      override def targetSnapshotNameValue: primitives.ResourceName = impl.targetSnapshotName(): primitives.ResourceName
      override def sourceRegionValue: RegionName = RegionName.wrap(impl.sourceRegion())
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CopySnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class CopySnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CopySnapshotResponse = {
      import CopySnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CopySnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CopySnapshotResponse.ReadOnly = CopySnapshotResponse.wrap(buildAwsValue())
  }
  object CopySnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CopySnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CopySnapshotResponse = CopySnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CopySnapshotResponse) extends CopySnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CopySnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateCertificateRequest(certificateName: primitives.CertificateName, domainName: primitives.DomainName, subjectAlternativeNames: scala.Option[Iterable[primitives.DomainName]] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateCertificateRequest = {
      import CreateCertificateRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateCertificateRequest.builder().certificateName(certificateName: java.lang.String).domainName(domainName: java.lang.String).optionallyWith(subjectAlternativeNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.subjectAlternativeNames).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateCertificateRequest.ReadOnly = CreateCertificateRequest.wrap(buildAwsValue())
  }
  object CreateCertificateRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateCertificateRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateCertificateRequest = CreateCertificateRequest(certificateNameValue, domainNameValue, subjectAlternativeNamesValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def certificateNameValue: primitives.CertificateName
      def domainNameValue: primitives.DomainName
      def subjectAlternativeNamesValue: scala.Option[List[primitives.DomainName]]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def certificateName: ZIO[Any, Nothing, primitives.CertificateName] = ZIO.succeed(certificateNameValue)
      def domainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainNameValue)
      def subjectAlternativeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.DomainName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("subjectAlternativeNames", subjectAlternativeNamesValue)
      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.lightsail.model.CreateCertificateRequest) extends CreateCertificateRequest.ReadOnly {
      override def certificateNameValue: primitives.CertificateName = impl.certificateName(): primitives.CertificateName
      override def domainNameValue: primitives.DomainName = impl.domainName(): primitives.DomainName
      override def subjectAlternativeNamesValue: scala.Option[List[primitives.DomainName]] = scala.Option(impl.subjectAlternativeNames()).map(value => value.asScala.map { item => 
        item: primitives.DomainName
      }.toList)
      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.lightsail.model.CreateCertificateRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateCertificateResponse(certificate: scala.Option[CertificateSummary] = None, operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateCertificateResponse = {
      import CreateCertificateResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateCertificateResponse.builder().optionallyWith(certificate.map(value => value.buildAwsValue()))(_.certificate).optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateCertificateResponse.ReadOnly = CreateCertificateResponse.wrap(buildAwsValue())
  }
  object CreateCertificateResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateCertificateResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateCertificateResponse = CreateCertificateResponse(certificateValue.map(value => value.editable), operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def certificateValue: scala.Option[CertificateSummary.ReadOnly]
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def certificate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CertificateSummary.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificate", certificateValue)
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateCertificateResponse) extends CreateCertificateResponse.ReadOnly {
      override def certificateValue: scala.Option[CertificateSummary.ReadOnly] = scala.Option(impl.certificate()).map(value => CertificateSummary.wrap(value))
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateCertificateResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateCloudFormationStackRequest(instances: Iterable[InstanceEntry]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackRequest = {
      import CreateCloudFormationStackRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackRequest.builder().instances(instances.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: CreateCloudFormationStackRequest.ReadOnly = CreateCloudFormationStackRequest.wrap(buildAwsValue())
  }
  object CreateCloudFormationStackRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateCloudFormationStackRequest = CreateCloudFormationStackRequest(instancesValue.map { item => 
        item.editable
      })
      def instancesValue: List[InstanceEntry.ReadOnly]
      def instances: ZIO[Any, Nothing, List[InstanceEntry.ReadOnly]] = ZIO.succeed(instancesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackRequest) extends CreateCloudFormationStackRequest.ReadOnly {
      override def instancesValue: List[InstanceEntry.ReadOnly] = impl.instances().asScala.map { item => 
        InstanceEntry.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateCloudFormationStackResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackResponse = {
      import CreateCloudFormationStackResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateCloudFormationStackResponse.ReadOnly = CreateCloudFormationStackResponse.wrap(buildAwsValue())
  }
  object CreateCloudFormationStackResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateCloudFormationStackResponse = CreateCloudFormationStackResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackResponse) extends CreateCloudFormationStackResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateCloudFormationStackResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateContactMethodRequest(protocol: ContactProtocol, contactEndpoint: primitives.StringMax256) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContactMethodRequest = {
      import CreateContactMethodRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContactMethodRequest.builder().protocol(protocol.unwrap).contactEndpoint(contactEndpoint: java.lang.String).build()
    }
    def asReadOnly: CreateContactMethodRequest.ReadOnly = CreateContactMethodRequest.wrap(buildAwsValue())
  }
  object CreateContactMethodRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContactMethodRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateContactMethodRequest = CreateContactMethodRequest(protocolValue, contactEndpointValue)
      def protocolValue: ContactProtocol
      def contactEndpointValue: primitives.StringMax256
      def protocol: ZIO[Any, Nothing, ContactProtocol] = ZIO.succeed(protocolValue)
      def contactEndpoint: ZIO[Any, Nothing, primitives.StringMax256] = ZIO.succeed(contactEndpointValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContactMethodRequest) extends CreateContactMethodRequest.ReadOnly {
      override def protocolValue: ContactProtocol = ContactProtocol.wrap(impl.protocol())
      override def contactEndpointValue: primitives.StringMax256 = impl.contactEndpoint(): primitives.StringMax256
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContactMethodRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateContactMethodResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContactMethodResponse = {
      import CreateContactMethodResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContactMethodResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateContactMethodResponse.ReadOnly = CreateContactMethodResponse.wrap(buildAwsValue())
  }
  object CreateContactMethodResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContactMethodResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateContactMethodResponse = CreateContactMethodResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContactMethodResponse) extends CreateContactMethodResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContactMethodResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateContainerServiceDeploymentRequest(serviceName: primitives.ContainerServiceName, containers: scala.Option[Map[primitives.ContainerName, Container]] = None, publicEndpoint: scala.Option[EndpointRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentRequest = {
      import CreateContainerServiceDeploymentRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentRequest.builder().serviceName(serviceName: java.lang.String).optionallyWith(containers.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.containers).optionallyWith(publicEndpoint.map(value => value.buildAwsValue()))(_.publicEndpoint).build()
    }
    def asReadOnly: CreateContainerServiceDeploymentRequest.ReadOnly = CreateContainerServiceDeploymentRequest.wrap(buildAwsValue())
  }
  object CreateContainerServiceDeploymentRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateContainerServiceDeploymentRequest = CreateContainerServiceDeploymentRequest(serviceNameValue, containersValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), publicEndpointValue.map(value => value.editable))
      def serviceNameValue: primitives.ContainerServiceName
      def containersValue: scala.Option[Map[primitives.ContainerName, Container.ReadOnly]]
      def publicEndpointValue: scala.Option[EndpointRequest.ReadOnly]
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
      def containers: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ContainerName, Container.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containers", containersValue)
      def publicEndpoint: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, EndpointRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicEndpoint", publicEndpointValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentRequest) extends CreateContainerServiceDeploymentRequest.ReadOnly {
      override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName
      override def containersValue: scala.Option[Map[primitives.ContainerName, Container.ReadOnly]] = scala.Option(impl.containers()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ContainerName) -> Container.wrap(value)
      }).toMap)
      override def publicEndpointValue: scala.Option[EndpointRequest.ReadOnly] = scala.Option(impl.publicEndpoint()).map(value => EndpointRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateContainerServiceDeploymentResponse(containerService: scala.Option[ContainerService] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentResponse = {
      import CreateContainerServiceDeploymentResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentResponse.builder().optionallyWith(containerService.map(value => value.buildAwsValue()))(_.containerService).build()
    }
    def asReadOnly: CreateContainerServiceDeploymentResponse.ReadOnly = CreateContainerServiceDeploymentResponse.wrap(buildAwsValue())
  }
  object CreateContainerServiceDeploymentResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateContainerServiceDeploymentResponse = CreateContainerServiceDeploymentResponse(containerServiceValue.map(value => value.editable))
      def containerServiceValue: scala.Option[ContainerService.ReadOnly]
      def containerService: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerService.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerService", containerServiceValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentResponse) extends CreateContainerServiceDeploymentResponse.ReadOnly { override def containerServiceValue: scala.Option[ContainerService.ReadOnly] = scala.Option(impl.containerService()).map(value => ContainerService.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceDeploymentResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateContainerServiceRegistryLoginRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginRequest = {
      import CreateContainerServiceRegistryLoginRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginRequest.builder().build()
    }
    def asReadOnly: CreateContainerServiceRegistryLoginRequest.ReadOnly = CreateContainerServiceRegistryLoginRequest.wrap(buildAwsValue())
  }
  object CreateContainerServiceRegistryLoginRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: CreateContainerServiceRegistryLoginRequest = CreateContainerServiceRegistryLoginRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginRequest) extends CreateContainerServiceRegistryLoginRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateContainerServiceRegistryLoginResponse(registryLogin: scala.Option[ContainerServiceRegistryLogin] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginResponse = {
      import CreateContainerServiceRegistryLoginResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginResponse.builder().optionallyWith(registryLogin.map(value => value.buildAwsValue()))(_.registryLogin).build()
    }
    def asReadOnly: CreateContainerServiceRegistryLoginResponse.ReadOnly = CreateContainerServiceRegistryLoginResponse.wrap(buildAwsValue())
  }
  object CreateContainerServiceRegistryLoginResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateContainerServiceRegistryLoginResponse = CreateContainerServiceRegistryLoginResponse(registryLoginValue.map(value => value.editable))
      def registryLoginValue: scala.Option[ContainerServiceRegistryLogin.ReadOnly]
      def registryLogin: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceRegistryLogin.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("registryLogin", registryLoginValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginResponse) extends CreateContainerServiceRegistryLoginResponse.ReadOnly { override def registryLoginValue: scala.Option[ContainerServiceRegistryLogin.ReadOnly] = scala.Option(impl.registryLogin()).map(value => ContainerServiceRegistryLogin.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRegistryLoginResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateContainerServiceRequest(serviceName: primitives.ContainerServiceName, power: ContainerServicePowerName, scale: primitives.ContainerServiceScale, tags: scala.Option[Iterable[Tag]] = None, publicDomainNames: scala.Option[Map[String, Iterable[String]]] = None, deployment: scala.Option[ContainerServiceDeploymentRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRequest = {
      import CreateContainerServiceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRequest.builder().serviceName(serviceName: java.lang.String).power(power.unwrap).scale(scale: java.lang.Integer).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(publicDomainNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item: java.lang.String
          }.asJavaCollection
      }).asJava))(_.publicDomainNames).optionallyWith(deployment.map(value => value.buildAwsValue()))(_.deployment).build()
    }
    def asReadOnly: CreateContainerServiceRequest.ReadOnly = CreateContainerServiceRequest.wrap(buildAwsValue())
  }
  object CreateContainerServiceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateContainerServiceRequest = CreateContainerServiceRequest(serviceNameValue, powerValue, scaleValue, tagsValue.map(value => value.map { item => 
        item.editable
      }), publicDomainNamesValue.map(value => value), deploymentValue.map(value => value.editable))
      def serviceNameValue: primitives.ContainerServiceName
      def powerValue: ContainerServicePowerName
      def scaleValue: primitives.ContainerServiceScale
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def publicDomainNamesValue: scala.Option[Map[String, List[String]]]
      def deploymentValue: scala.Option[ContainerServiceDeploymentRequest.ReadOnly]
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
      def power: ZIO[Any, Nothing, ContainerServicePowerName] = ZIO.succeed(powerValue)
      def scale: ZIO[Any, Nothing, primitives.ContainerServiceScale] = ZIO.succeed(scaleValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def publicDomainNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[String, List[String]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicDomainNames", publicDomainNamesValue)
      def deployment: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceDeploymentRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("deployment", deploymentValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRequest) extends CreateContainerServiceRequest.ReadOnly {
      override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName
      override def powerValue: ContainerServicePowerName = ContainerServicePowerName.wrap(impl.power())
      override def scaleValue: primitives.ContainerServiceScale = impl.scale(): primitives.ContainerServiceScale
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def publicDomainNamesValue: scala.Option[Map[String, List[String]]] = scala.Option(impl.publicDomainNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: String) -> value.asScala.map { item => 
            item: String
          }.toList
      }).toMap)
      override def deploymentValue: scala.Option[ContainerServiceDeploymentRequest.ReadOnly] = scala.Option(impl.deployment()).map(value => ContainerServiceDeploymentRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateContainerServiceResponse(containerService: scala.Option[ContainerService] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateContainerServiceResponse = {
      import CreateContainerServiceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateContainerServiceResponse.builder().optionallyWith(containerService.map(value => value.buildAwsValue()))(_.containerService).build()
    }
    def asReadOnly: CreateContainerServiceResponse.ReadOnly = CreateContainerServiceResponse.wrap(buildAwsValue())
  }
  object CreateContainerServiceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateContainerServiceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateContainerServiceResponse = CreateContainerServiceResponse(containerServiceValue.map(value => value.editable))
      def containerServiceValue: scala.Option[ContainerService.ReadOnly]
      def containerService: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerService.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerService", containerServiceValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceResponse) extends CreateContainerServiceResponse.ReadOnly { override def containerServiceValue: scala.Option[ContainerService.ReadOnly] = scala.Option(impl.containerService()).map(value => ContainerService.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateContainerServiceResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateDiskFromSnapshotRequest(diskName: primitives.ResourceName, diskSnapshotName: scala.Option[primitives.ResourceName] = None, availabilityZone: primitives.NonEmptyString, sizeInGb: primitives.Integer, tags: scala.Option[Iterable[Tag]] = None, addOns: scala.Option[Iterable[AddOnRequest]] = None, sourceDiskName: scala.Option[String] = None, restoreDate: scala.Option[String] = None, useLatestRestorableAutoSnapshot: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotRequest = {
      import CreateDiskFromSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotRequest.builder().diskName(diskName: java.lang.String).optionallyWith(diskSnapshotName.map(value => value: java.lang.String))(_.diskSnapshotName).availabilityZone(availabilityZone: java.lang.String).sizeInGb(sizeInGb: java.lang.Integer).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(addOns.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.addOns).optionallyWith(sourceDiskName.map(value => value: java.lang.String))(_.sourceDiskName).optionallyWith(restoreDate.map(value => value: java.lang.String))(_.restoreDate).optionallyWith(useLatestRestorableAutoSnapshot.map(value => value: java.lang.Boolean))(_.useLatestRestorableAutoSnapshot).build()
    }
    def asReadOnly: CreateDiskFromSnapshotRequest.ReadOnly = CreateDiskFromSnapshotRequest.wrap(buildAwsValue())
  }
  object CreateDiskFromSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDiskFromSnapshotRequest = CreateDiskFromSnapshotRequest(diskNameValue, diskSnapshotNameValue.map(value => value), availabilityZoneValue, sizeInGbValue, tagsValue.map(value => value.map { item => 
        item.editable
      }), addOnsValue.map(value => value.map { item => 
        item.editable
      }), sourceDiskNameValue.map(value => value), restoreDateValue.map(value => value), useLatestRestorableAutoSnapshotValue.map(value => value))
      def diskNameValue: primitives.ResourceName
      def diskSnapshotNameValue: scala.Option[primitives.ResourceName]
      def availabilityZoneValue: primitives.NonEmptyString
      def sizeInGbValue: primitives.Integer
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]]
      def sourceDiskNameValue: scala.Option[String]
      def restoreDateValue: scala.Option[String]
      def useLatestRestorableAutoSnapshotValue: scala.Option[Boolean]
      def diskName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskNameValue)
      def diskSnapshotName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskSnapshotName", diskSnapshotNameValue)
      def availabilityZone: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(availabilityZoneValue)
      def sizeInGb: ZIO[Any, Nothing, primitives.Integer] = ZIO.succeed(sizeInGbValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def addOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AddOnRequest.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("addOns", addOnsValue)
      def sourceDiskName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceDiskName", sourceDiskNameValue)
      def restoreDate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("restoreDate", restoreDateValue)
      def useLatestRestorableAutoSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("useLatestRestorableAutoSnapshot", useLatestRestorableAutoSnapshotValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotRequest) extends CreateDiskFromSnapshotRequest.ReadOnly {
      override def diskNameValue: primitives.ResourceName = impl.diskName(): primitives.ResourceName
      override def diskSnapshotNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.diskSnapshotName()).map(value => value: primitives.ResourceName)
      override def availabilityZoneValue: primitives.NonEmptyString = impl.availabilityZone(): primitives.NonEmptyString
      override def sizeInGbValue: primitives.Integer = impl.sizeInGb(): primitives.Integer
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]] = scala.Option(impl.addOns()).map(value => value.asScala.map { item => 
        AddOnRequest.wrap(item)
      }.toList)
      override def sourceDiskNameValue: scala.Option[String] = scala.Option(impl.sourceDiskName()).map(value => value: String)
      override def restoreDateValue: scala.Option[String] = scala.Option(impl.restoreDate()).map(value => value: String)
      override def useLatestRestorableAutoSnapshotValue: scala.Option[Boolean] = scala.Option(impl.useLatestRestorableAutoSnapshot()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateDiskFromSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotResponse = {
      import CreateDiskFromSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateDiskFromSnapshotResponse.ReadOnly = CreateDiskFromSnapshotResponse.wrap(buildAwsValue())
  }
  object CreateDiskFromSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDiskFromSnapshotResponse = CreateDiskFromSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotResponse) extends CreateDiskFromSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskFromSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateDiskRequest(diskName: primitives.ResourceName, availabilityZone: primitives.NonEmptyString, sizeInGb: primitives.Integer, tags: scala.Option[Iterable[Tag]] = None, addOns: scala.Option[Iterable[AddOnRequest]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDiskRequest = {
      import CreateDiskRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDiskRequest.builder().diskName(diskName: java.lang.String).availabilityZone(availabilityZone: java.lang.String).sizeInGb(sizeInGb: java.lang.Integer).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(addOns.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.addOns).build()
    }
    def asReadOnly: CreateDiskRequest.ReadOnly = CreateDiskRequest.wrap(buildAwsValue())
  }
  object CreateDiskRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDiskRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDiskRequest = CreateDiskRequest(diskNameValue, availabilityZoneValue, sizeInGbValue, tagsValue.map(value => value.map { item => 
        item.editable
      }), addOnsValue.map(value => value.map { item => 
        item.editable
      }))
      def diskNameValue: primitives.ResourceName
      def availabilityZoneValue: primitives.NonEmptyString
      def sizeInGbValue: primitives.Integer
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]]
      def diskName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskNameValue)
      def availabilityZone: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(availabilityZoneValue)
      def sizeInGb: ZIO[Any, Nothing, primitives.Integer] = ZIO.succeed(sizeInGbValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def addOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AddOnRequest.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("addOns", addOnsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskRequest) extends CreateDiskRequest.ReadOnly {
      override def diskNameValue: primitives.ResourceName = impl.diskName(): primitives.ResourceName
      override def availabilityZoneValue: primitives.NonEmptyString = impl.availabilityZone(): primitives.NonEmptyString
      override def sizeInGbValue: primitives.Integer = impl.sizeInGb(): primitives.Integer
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]] = scala.Option(impl.addOns()).map(value => value.asScala.map { item => 
        AddOnRequest.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateDiskResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDiskResponse = {
      import CreateDiskResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDiskResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateDiskResponse.ReadOnly = CreateDiskResponse.wrap(buildAwsValue())
  }
  object CreateDiskResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDiskResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDiskResponse = CreateDiskResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskResponse) extends CreateDiskResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateDiskSnapshotRequest(diskName: scala.Option[primitives.ResourceName] = None, diskSnapshotName: primitives.ResourceName, instanceName: scala.Option[primitives.ResourceName] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotRequest = {
      import CreateDiskSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotRequest.builder().optionallyWith(diskName.map(value => value: java.lang.String))(_.diskName).diskSnapshotName(diskSnapshotName: java.lang.String).optionallyWith(instanceName.map(value => value: java.lang.String))(_.instanceName).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateDiskSnapshotRequest.ReadOnly = CreateDiskSnapshotRequest.wrap(buildAwsValue())
  }
  object CreateDiskSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDiskSnapshotRequest = CreateDiskSnapshotRequest(diskNameValue.map(value => value), diskSnapshotNameValue, instanceNameValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def diskNameValue: scala.Option[primitives.ResourceName]
      def diskSnapshotNameValue: primitives.ResourceName
      def instanceNameValue: scala.Option[primitives.ResourceName]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def diskName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskName", diskNameValue)
      def diskSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskSnapshotNameValue)
      def instanceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceName", instanceNameValue)
      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.lightsail.model.CreateDiskSnapshotRequest) extends CreateDiskSnapshotRequest.ReadOnly {
      override def diskNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.diskName()).map(value => value: primitives.ResourceName)
      override def diskSnapshotNameValue: primitives.ResourceName = impl.diskSnapshotName(): primitives.ResourceName
      override def instanceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.instanceName()).map(value => value: primitives.ResourceName)
      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.lightsail.model.CreateDiskSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateDiskSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotResponse = {
      import CreateDiskSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateDiskSnapshotResponse.ReadOnly = CreateDiskSnapshotResponse.wrap(buildAwsValue())
  }
  object CreateDiskSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDiskSnapshotResponse = CreateDiskSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotResponse) extends CreateDiskSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDiskSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateDistributionRequest(distributionName: primitives.ResourceName, origin: InputOrigin, defaultCacheBehavior: CacheBehavior, cacheBehaviorSettings: scala.Option[CacheSettings] = None, cacheBehaviors: scala.Option[Iterable[CacheBehaviorPerPath]] = None, bundleId: String, ipAddressType: scala.Option[IpAddressType] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDistributionRequest = {
      import CreateDistributionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDistributionRequest.builder().distributionName(distributionName: java.lang.String).origin(origin.buildAwsValue()).defaultCacheBehavior(defaultCacheBehavior.buildAwsValue()).optionallyWith(cacheBehaviorSettings.map(value => value.buildAwsValue()))(_.cacheBehaviorSettings).optionallyWith(cacheBehaviors.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.cacheBehaviors).bundleId(bundleId: java.lang.String).optionallyWith(ipAddressType.map(value => value.unwrap))(_.ipAddressType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateDistributionRequest.ReadOnly = CreateDistributionRequest.wrap(buildAwsValue())
  }
  object CreateDistributionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDistributionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDistributionRequest = CreateDistributionRequest(distributionNameValue, originValue.editable, defaultCacheBehaviorValue.editable, cacheBehaviorSettingsValue.map(value => value.editable), cacheBehaviorsValue.map(value => value.map { item => 
        item.editable
      }), bundleIdValue, ipAddressTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def distributionNameValue: primitives.ResourceName
      def originValue: InputOrigin.ReadOnly
      def defaultCacheBehaviorValue: CacheBehavior.ReadOnly
      def cacheBehaviorSettingsValue: scala.Option[CacheSettings.ReadOnly]
      def cacheBehaviorsValue: scala.Option[List[CacheBehaviorPerPath.ReadOnly]]
      def bundleIdValue: String
      def ipAddressTypeValue: scala.Option[IpAddressType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def distributionName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(distributionNameValue)
      def origin: ZIO[Any, Nothing, InputOrigin.ReadOnly] = ZIO.succeed(originValue)
      def defaultCacheBehavior: ZIO[Any, Nothing, CacheBehavior.ReadOnly] = ZIO.succeed(defaultCacheBehaviorValue)
      def cacheBehaviorSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CacheSettings.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cacheBehaviorSettings", cacheBehaviorSettingsValue)
      def cacheBehaviors: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[CacheBehaviorPerPath.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cacheBehaviors", cacheBehaviorsValue)
      def bundleId: ZIO[Any, Nothing, String] = ZIO.succeed(bundleIdValue)
      def ipAddressType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IpAddressType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddressType", ipAddressTypeValue)
      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.lightsail.model.CreateDistributionRequest) extends CreateDistributionRequest.ReadOnly {
      override def distributionNameValue: primitives.ResourceName = impl.distributionName(): primitives.ResourceName
      override def originValue: InputOrigin.ReadOnly = InputOrigin.wrap(impl.origin())
      override def defaultCacheBehaviorValue: CacheBehavior.ReadOnly = CacheBehavior.wrap(impl.defaultCacheBehavior())
      override def cacheBehaviorSettingsValue: scala.Option[CacheSettings.ReadOnly] = scala.Option(impl.cacheBehaviorSettings()).map(value => CacheSettings.wrap(value))
      override def cacheBehaviorsValue: scala.Option[List[CacheBehaviorPerPath.ReadOnly]] = scala.Option(impl.cacheBehaviors()).map(value => value.asScala.map { item => 
        CacheBehaviorPerPath.wrap(item)
      }.toList)
      override def bundleIdValue: String = impl.bundleId(): String
      override def ipAddressTypeValue: scala.Option[IpAddressType] = scala.Option(impl.ipAddressType()).map(value => IpAddressType.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.lightsail.model.CreateDistributionRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateDistributionResponse(distribution: scala.Option[LightsailDistribution] = None, operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDistributionResponse = {
      import CreateDistributionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDistributionResponse.builder().optionallyWith(distribution.map(value => value.buildAwsValue()))(_.distribution).optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: CreateDistributionResponse.ReadOnly = CreateDistributionResponse.wrap(buildAwsValue())
  }
  object CreateDistributionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDistributionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDistributionResponse = CreateDistributionResponse(distributionValue.map(value => value.editable), operationValue.map(value => value.editable))
      def distributionValue: scala.Option[LightsailDistribution.ReadOnly]
      def operationValue: scala.Option[Operation.ReadOnly]
      def distribution: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LightsailDistribution.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("distribution", distributionValue)
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDistributionResponse) extends CreateDistributionResponse.ReadOnly {
      override def distributionValue: scala.Option[LightsailDistribution.ReadOnly] = scala.Option(impl.distribution()).map(value => LightsailDistribution.wrap(value))
      override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDistributionResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateDomainEntryRequest(domainName: primitives.DomainName, domainEntry: DomainEntry) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDomainEntryRequest = {
      import CreateDomainEntryRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDomainEntryRequest.builder().domainName(domainName: java.lang.String).domainEntry(domainEntry.buildAwsValue()).build()
    }
    def asReadOnly: CreateDomainEntryRequest.ReadOnly = CreateDomainEntryRequest.wrap(buildAwsValue())
  }
  object CreateDomainEntryRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDomainEntryRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDomainEntryRequest = CreateDomainEntryRequest(domainNameValue, domainEntryValue.editable)
      def domainNameValue: primitives.DomainName
      def domainEntryValue: DomainEntry.ReadOnly
      def domainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainNameValue)
      def domainEntry: ZIO[Any, Nothing, DomainEntry.ReadOnly] = ZIO.succeed(domainEntryValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDomainEntryRequest) extends CreateDomainEntryRequest.ReadOnly {
      override def domainNameValue: primitives.DomainName = impl.domainName(): primitives.DomainName
      override def domainEntryValue: DomainEntry.ReadOnly = DomainEntry.wrap(impl.domainEntry())
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDomainEntryRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateDomainEntryResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDomainEntryResponse = {
      import CreateDomainEntryResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDomainEntryResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: CreateDomainEntryResponse.ReadOnly = CreateDomainEntryResponse.wrap(buildAwsValue())
  }
  object CreateDomainEntryResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDomainEntryResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDomainEntryResponse = CreateDomainEntryResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDomainEntryResponse) extends CreateDomainEntryResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDomainEntryResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateDomainRequest(domainName: primitives.DomainName, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDomainRequest = {
      import CreateDomainRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDomainRequest.builder().domainName(domainName: java.lang.String).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateDomainRequest.ReadOnly = CreateDomainRequest.wrap(buildAwsValue())
  }
  object CreateDomainRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDomainRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDomainRequest = CreateDomainRequest(domainNameValue, tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def domainNameValue: primitives.DomainName
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def domainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainNameValue)
      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.lightsail.model.CreateDomainRequest) extends CreateDomainRequest.ReadOnly {
      override def domainNameValue: primitives.DomainName = impl.domainName(): primitives.DomainName
      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.lightsail.model.CreateDomainRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateDomainResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateDomainResponse = {
      import CreateDomainResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateDomainResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: CreateDomainResponse.ReadOnly = CreateDomainResponse.wrap(buildAwsValue())
  }
  object CreateDomainResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateDomainResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateDomainResponse = CreateDomainResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateDomainResponse) extends CreateDomainResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateDomainResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateInstanceSnapshotRequest(instanceSnapshotName: primitives.ResourceName, instanceName: primitives.ResourceName, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotRequest = {
      import CreateInstanceSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotRequest.builder().instanceSnapshotName(instanceSnapshotName: java.lang.String).instanceName(instanceName: java.lang.String).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateInstanceSnapshotRequest.ReadOnly = CreateInstanceSnapshotRequest.wrap(buildAwsValue())
  }
  object CreateInstanceSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateInstanceSnapshotRequest = CreateInstanceSnapshotRequest(instanceSnapshotNameValue, instanceNameValue, tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def instanceSnapshotNameValue: primitives.ResourceName
      def instanceNameValue: primitives.ResourceName
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def instanceSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceSnapshotNameValue)
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
      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.lightsail.model.CreateInstanceSnapshotRequest) extends CreateInstanceSnapshotRequest.ReadOnly {
      override def instanceSnapshotNameValue: primitives.ResourceName = impl.instanceSnapshotName(): primitives.ResourceName
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
      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.lightsail.model.CreateInstanceSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateInstanceSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotResponse = {
      import CreateInstanceSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateInstanceSnapshotResponse.ReadOnly = CreateInstanceSnapshotResponse.wrap(buildAwsValue())
  }
  object CreateInstanceSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateInstanceSnapshotResponse = CreateInstanceSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotResponse) extends CreateInstanceSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateInstanceSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateInstancesFromSnapshotRequest(instanceNames: Iterable[String], attachedDiskMapping: scala.Option[Map[primitives.ResourceName, Iterable[DiskMap]]] = None, availabilityZone: String, instanceSnapshotName: scala.Option[primitives.ResourceName] = None, bundleId: primitives.NonEmptyString, userData: scala.Option[String] = None, keyPairName: scala.Option[primitives.ResourceName] = None, tags: scala.Option[Iterable[Tag]] = None, addOns: scala.Option[Iterable[AddOnRequest]] = None, ipAddressType: scala.Option[IpAddressType] = None, sourceInstanceName: scala.Option[String] = None, restoreDate: scala.Option[String] = None, useLatestRestorableAutoSnapshot: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotRequest = {
      import CreateInstancesFromSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotRequest.builder().instanceNames(instanceNames.map { item => 
        item: java.lang.String
      }.asJavaCollection).optionallyWith(attachedDiskMapping.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item.buildAwsValue()
          }.asJavaCollection
      }).asJava))(_.attachedDiskMapping).availabilityZone(availabilityZone: java.lang.String).optionallyWith(instanceSnapshotName.map(value => value: java.lang.String))(_.instanceSnapshotName).bundleId(bundleId: java.lang.String).optionallyWith(userData.map(value => value: java.lang.String))(_.userData).optionallyWith(keyPairName.map(value => value: java.lang.String))(_.keyPairName).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(addOns.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.addOns).optionallyWith(ipAddressType.map(value => value.unwrap))(_.ipAddressType).optionallyWith(sourceInstanceName.map(value => value: java.lang.String))(_.sourceInstanceName).optionallyWith(restoreDate.map(value => value: java.lang.String))(_.restoreDate).optionallyWith(useLatestRestorableAutoSnapshot.map(value => value: java.lang.Boolean))(_.useLatestRestorableAutoSnapshot).build()
    }
    def asReadOnly: CreateInstancesFromSnapshotRequest.ReadOnly = CreateInstancesFromSnapshotRequest.wrap(buildAwsValue())
  }
  object CreateInstancesFromSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateInstancesFromSnapshotRequest = CreateInstancesFromSnapshotRequest(instanceNamesValue, attachedDiskMappingValue.map(value => value.map({
        case (key, value) =>
          key -> value.map { item => 
            item.editable
          }
      })), availabilityZoneValue, instanceSnapshotNameValue.map(value => value), bundleIdValue, userDataValue.map(value => value), keyPairNameValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), addOnsValue.map(value => value.map { item => 
        item.editable
      }), ipAddressTypeValue.map(value => value), sourceInstanceNameValue.map(value => value), restoreDateValue.map(value => value), useLatestRestorableAutoSnapshotValue.map(value => value))
      def instanceNamesValue: List[String]
      def attachedDiskMappingValue: scala.Option[Map[primitives.ResourceName, List[DiskMap.ReadOnly]]]
      def availabilityZoneValue: String
      def instanceSnapshotNameValue: scala.Option[primitives.ResourceName]
      def bundleIdValue: primitives.NonEmptyString
      def userDataValue: scala.Option[String]
      def keyPairNameValue: scala.Option[primitives.ResourceName]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]]
      def ipAddressTypeValue: scala.Option[IpAddressType]
      def sourceInstanceNameValue: scala.Option[String]
      def restoreDateValue: scala.Option[String]
      def useLatestRestorableAutoSnapshotValue: scala.Option[Boolean]
      def instanceNames: ZIO[Any, Nothing, List[String]] = ZIO.succeed(instanceNamesValue)
      def attachedDiskMapping: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.ResourceName, List[DiskMap.ReadOnly]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attachedDiskMapping", attachedDiskMappingValue)
      def availabilityZone: ZIO[Any, Nothing, String] = ZIO.succeed(availabilityZoneValue)
      def instanceSnapshotName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceSnapshotName", instanceSnapshotNameValue)
      def bundleId: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(bundleIdValue)
      def userData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("userData", userDataValue)
      def keyPairName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyPairName", keyPairNameValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def addOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AddOnRequest.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("addOns", addOnsValue)
      def ipAddressType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IpAddressType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddressType", ipAddressTypeValue)
      def sourceInstanceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceInstanceName", sourceInstanceNameValue)
      def restoreDate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("restoreDate", restoreDateValue)
      def useLatestRestorableAutoSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("useLatestRestorableAutoSnapshot", useLatestRestorableAutoSnapshotValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotRequest) extends CreateInstancesFromSnapshotRequest.ReadOnly {
      override def instanceNamesValue: List[String] = impl.instanceNames().asScala.map { item => 
        item: String
      }.toList
      override def attachedDiskMappingValue: scala.Option[Map[primitives.ResourceName, List[DiskMap.ReadOnly]]] = scala.Option(impl.attachedDiskMapping()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.ResourceName) -> value.asScala.map { item => 
            DiskMap.wrap(item)
          }.toList
      }).toMap)
      override def availabilityZoneValue: String = impl.availabilityZone(): String
      override def instanceSnapshotNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.instanceSnapshotName()).map(value => value: primitives.ResourceName)
      override def bundleIdValue: primitives.NonEmptyString = impl.bundleId(): primitives.NonEmptyString
      override def userDataValue: scala.Option[String] = scala.Option(impl.userData()).map(value => value: String)
      override def keyPairNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.keyPairName()).map(value => value: primitives.ResourceName)
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]] = scala.Option(impl.addOns()).map(value => value.asScala.map { item => 
        AddOnRequest.wrap(item)
      }.toList)
      override def ipAddressTypeValue: scala.Option[IpAddressType] = scala.Option(impl.ipAddressType()).map(value => IpAddressType.wrap(value))
      override def sourceInstanceNameValue: scala.Option[String] = scala.Option(impl.sourceInstanceName()).map(value => value: String)
      override def restoreDateValue: scala.Option[String] = scala.Option(impl.restoreDate()).map(value => value: String)
      override def useLatestRestorableAutoSnapshotValue: scala.Option[Boolean] = scala.Option(impl.useLatestRestorableAutoSnapshot()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateInstancesFromSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotResponse = {
      import CreateInstancesFromSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateInstancesFromSnapshotResponse.ReadOnly = CreateInstancesFromSnapshotResponse.wrap(buildAwsValue())
  }
  object CreateInstancesFromSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateInstancesFromSnapshotResponse = CreateInstancesFromSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotResponse) extends CreateInstancesFromSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesFromSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateInstancesRequest(instanceNames: Iterable[String], availabilityZone: String, customImageName: scala.Option[primitives.ResourceName] = None, blueprintId: primitives.NonEmptyString, bundleId: primitives.NonEmptyString, userData: scala.Option[String] = None, keyPairName: scala.Option[primitives.ResourceName] = None, tags: scala.Option[Iterable[Tag]] = None, addOns: scala.Option[Iterable[AddOnRequest]] = None, ipAddressType: scala.Option[IpAddressType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateInstancesRequest = {
      import CreateInstancesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateInstancesRequest.builder().instanceNames(instanceNames.map { item => 
        item: java.lang.String
      }.asJavaCollection).availabilityZone(availabilityZone: java.lang.String).optionallyWith(customImageName.map(value => value: java.lang.String))(_.customImageName).blueprintId(blueprintId: java.lang.String).bundleId(bundleId: java.lang.String).optionallyWith(userData.map(value => value: java.lang.String))(_.userData).optionallyWith(keyPairName.map(value => value: java.lang.String))(_.keyPairName).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(addOns.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.addOns).optionallyWith(ipAddressType.map(value => value.unwrap))(_.ipAddressType).build()
    }
    def asReadOnly: CreateInstancesRequest.ReadOnly = CreateInstancesRequest.wrap(buildAwsValue())
  }
  object CreateInstancesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateInstancesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateInstancesRequest = CreateInstancesRequest(instanceNamesValue, availabilityZoneValue, customImageNameValue.map(value => value), blueprintIdValue, bundleIdValue, userDataValue.map(value => value), keyPairNameValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), addOnsValue.map(value => value.map { item => 
        item.editable
      }), ipAddressTypeValue.map(value => value))
      def instanceNamesValue: List[String]
      def availabilityZoneValue: String
      def customImageNameValue: scala.Option[primitives.ResourceName]
      def blueprintIdValue: primitives.NonEmptyString
      def bundleIdValue: primitives.NonEmptyString
      def userDataValue: scala.Option[String]
      def keyPairNameValue: scala.Option[primitives.ResourceName]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]]
      def ipAddressTypeValue: scala.Option[IpAddressType]
      def instanceNames: ZIO[Any, Nothing, List[String]] = ZIO.succeed(instanceNamesValue)
      def availabilityZone: ZIO[Any, Nothing, String] = ZIO.succeed(availabilityZoneValue)
      def customImageName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("customImageName", customImageNameValue)
      def blueprintId: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(blueprintIdValue)
      def bundleId: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(bundleIdValue)
      def userData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("userData", userDataValue)
      def keyPairName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyPairName", keyPairNameValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def addOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AddOnRequest.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("addOns", addOnsValue)
      def ipAddressType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IpAddressType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddressType", ipAddressTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesRequest) extends CreateInstancesRequest.ReadOnly {
      override def instanceNamesValue: List[String] = impl.instanceNames().asScala.map { item => 
        item: String
      }.toList
      override def availabilityZoneValue: String = impl.availabilityZone(): String
      override def customImageNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.customImageName()).map(value => value: primitives.ResourceName)
      override def blueprintIdValue: primitives.NonEmptyString = impl.blueprintId(): primitives.NonEmptyString
      override def bundleIdValue: primitives.NonEmptyString = impl.bundleId(): primitives.NonEmptyString
      override def userDataValue: scala.Option[String] = scala.Option(impl.userData()).map(value => value: String)
      override def keyPairNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.keyPairName()).map(value => value: primitives.ResourceName)
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def addOnsValue: scala.Option[List[AddOnRequest.ReadOnly]] = scala.Option(impl.addOns()).map(value => value.asScala.map { item => 
        AddOnRequest.wrap(item)
      }.toList)
      override def ipAddressTypeValue: scala.Option[IpAddressType] = scala.Option(impl.ipAddressType()).map(value => IpAddressType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateInstancesResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateInstancesResponse = {
      import CreateInstancesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateInstancesResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateInstancesResponse.ReadOnly = CreateInstancesResponse.wrap(buildAwsValue())
  }
  object CreateInstancesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateInstancesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateInstancesResponse = CreateInstancesResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesResponse) extends CreateInstancesResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateInstancesResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateKeyPairRequest(keyPairName: primitives.ResourceName, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateKeyPairRequest = {
      import CreateKeyPairRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateKeyPairRequest.builder().keyPairName(keyPairName: java.lang.String).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateKeyPairRequest.ReadOnly = CreateKeyPairRequest.wrap(buildAwsValue())
  }
  object CreateKeyPairRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateKeyPairRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateKeyPairRequest = CreateKeyPairRequest(keyPairNameValue, tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def keyPairNameValue: primitives.ResourceName
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def keyPairName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(keyPairNameValue)
      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.lightsail.model.CreateKeyPairRequest) extends CreateKeyPairRequest.ReadOnly {
      override def keyPairNameValue: primitives.ResourceName = impl.keyPairName(): primitives.ResourceName
      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.lightsail.model.CreateKeyPairRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateKeyPairResponse(keyPair: scala.Option[KeyPair] = None, publicKeyBase64: scala.Option[primitives.Base64] = None, privateKeyBase64: scala.Option[primitives.Base64] = None, operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateKeyPairResponse = {
      import CreateKeyPairResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateKeyPairResponse.builder().optionallyWith(keyPair.map(value => value.buildAwsValue()))(_.keyPair).optionallyWith(publicKeyBase64.map(value => value: java.lang.String))(_.publicKeyBase64).optionallyWith(privateKeyBase64.map(value => value: java.lang.String))(_.privateKeyBase64).optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: CreateKeyPairResponse.ReadOnly = CreateKeyPairResponse.wrap(buildAwsValue())
  }
  object CreateKeyPairResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateKeyPairResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateKeyPairResponse = CreateKeyPairResponse(keyPairValue.map(value => value.editable), publicKeyBase64Value.map(value => value), privateKeyBase64Value.map(value => value), operationValue.map(value => value.editable))
      def keyPairValue: scala.Option[KeyPair.ReadOnly]
      def publicKeyBase64Value: scala.Option[primitives.Base64]
      def privateKeyBase64Value: scala.Option[primitives.Base64]
      def operationValue: scala.Option[Operation.ReadOnly]
      def keyPair: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, KeyPair.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyPair", keyPairValue)
      def publicKeyBase64: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Base64] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicKeyBase64", publicKeyBase64Value)
      def privateKeyBase64: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Base64] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("privateKeyBase64", privateKeyBase64Value)
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateKeyPairResponse) extends CreateKeyPairResponse.ReadOnly {
      override def keyPairValue: scala.Option[KeyPair.ReadOnly] = scala.Option(impl.keyPair()).map(value => KeyPair.wrap(value))
      override def publicKeyBase64Value: scala.Option[primitives.Base64] = scala.Option(impl.publicKeyBase64()).map(value => value: primitives.Base64)
      override def privateKeyBase64Value: scala.Option[primitives.Base64] = scala.Option(impl.privateKeyBase64()).map(value => value: primitives.Base64)
      override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateKeyPairResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateLoadBalancerRequest(loadBalancerName: primitives.ResourceName, instancePort: primitives.Port, healthCheckPath: scala.Option[String] = None, certificateName: scala.Option[primitives.ResourceName] = None, certificateDomainName: scala.Option[primitives.DomainName] = None, certificateAlternativeNames: scala.Option[Iterable[primitives.DomainName]] = None, tags: scala.Option[Iterable[Tag]] = None, ipAddressType: scala.Option[IpAddressType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerRequest = {
      import CreateLoadBalancerRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).instancePort(instancePort: java.lang.Integer).optionallyWith(healthCheckPath.map(value => value: java.lang.String))(_.healthCheckPath).optionallyWith(certificateName.map(value => value: java.lang.String))(_.certificateName).optionallyWith(certificateDomainName.map(value => value: java.lang.String))(_.certificateDomainName).optionallyWith(certificateAlternativeNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.certificateAlternativeNames).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(ipAddressType.map(value => value.unwrap))(_.ipAddressType).build()
    }
    def asReadOnly: CreateLoadBalancerRequest.ReadOnly = CreateLoadBalancerRequest.wrap(buildAwsValue())
  }
  object CreateLoadBalancerRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateLoadBalancerRequest = CreateLoadBalancerRequest(loadBalancerNameValue, instancePortValue, healthCheckPathValue.map(value => value), certificateNameValue.map(value => value), certificateDomainNameValue.map(value => value), certificateAlternativeNamesValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), ipAddressTypeValue.map(value => value))
      def loadBalancerNameValue: primitives.ResourceName
      def instancePortValue: primitives.Port
      def healthCheckPathValue: scala.Option[String]
      def certificateNameValue: scala.Option[primitives.ResourceName]
      def certificateDomainNameValue: scala.Option[primitives.DomainName]
      def certificateAlternativeNamesValue: scala.Option[List[primitives.DomainName]]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def ipAddressTypeValue: scala.Option[IpAddressType]
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def instancePort: ZIO[Any, Nothing, primitives.Port] = ZIO.succeed(instancePortValue)
      def healthCheckPath: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("healthCheckPath", healthCheckPathValue)
      def certificateName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateName", certificateNameValue)
      def certificateDomainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateDomainName", certificateDomainNameValue)
      def certificateAlternativeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.DomainName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateAlternativeNames", certificateAlternativeNamesValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def ipAddressType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IpAddressType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddressType", ipAddressTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerRequest) extends CreateLoadBalancerRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def instancePortValue: primitives.Port = impl.instancePort(): primitives.Port
      override def healthCheckPathValue: scala.Option[String] = scala.Option(impl.healthCheckPath()).map(value => value: String)
      override def certificateNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.certificateName()).map(value => value: primitives.ResourceName)
      override def certificateDomainNameValue: scala.Option[primitives.DomainName] = scala.Option(impl.certificateDomainName()).map(value => value: primitives.DomainName)
      override def certificateAlternativeNamesValue: scala.Option[List[primitives.DomainName]] = scala.Option(impl.certificateAlternativeNames()).map(value => value.asScala.map { item => 
        item: primitives.DomainName
      }.toList)
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def ipAddressTypeValue: scala.Option[IpAddressType] = scala.Option(impl.ipAddressType()).map(value => IpAddressType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateLoadBalancerResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerResponse = {
      import CreateLoadBalancerResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateLoadBalancerResponse.ReadOnly = CreateLoadBalancerResponse.wrap(buildAwsValue())
  }
  object CreateLoadBalancerResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateLoadBalancerResponse = CreateLoadBalancerResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerResponse) extends CreateLoadBalancerResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateLoadBalancerTlsCertificateRequest(loadBalancerName: primitives.ResourceName, certificateName: primitives.ResourceName, certificateDomainName: primitives.DomainName, certificateAlternativeNames: scala.Option[Iterable[primitives.DomainName]] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateRequest = {
      import CreateLoadBalancerTlsCertificateRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).certificateName(certificateName: java.lang.String).certificateDomainName(certificateDomainName: java.lang.String).optionallyWith(certificateAlternativeNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.certificateAlternativeNames).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateLoadBalancerTlsCertificateRequest.ReadOnly = CreateLoadBalancerTlsCertificateRequest.wrap(buildAwsValue())
  }
  object CreateLoadBalancerTlsCertificateRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateLoadBalancerTlsCertificateRequest = CreateLoadBalancerTlsCertificateRequest(loadBalancerNameValue, certificateNameValue, certificateDomainNameValue, certificateAlternativeNamesValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def loadBalancerNameValue: primitives.ResourceName
      def certificateNameValue: primitives.ResourceName
      def certificateDomainNameValue: primitives.DomainName
      def certificateAlternativeNamesValue: scala.Option[List[primitives.DomainName]]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def certificateName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(certificateNameValue)
      def certificateDomainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(certificateDomainNameValue)
      def certificateAlternativeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.DomainName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateAlternativeNames", certificateAlternativeNamesValue)
      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.lightsail.model.CreateLoadBalancerTlsCertificateRequest) extends CreateLoadBalancerTlsCertificateRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def certificateNameValue: primitives.ResourceName = impl.certificateName(): primitives.ResourceName
      override def certificateDomainNameValue: primitives.DomainName = impl.certificateDomainName(): primitives.DomainName
      override def certificateAlternativeNamesValue: scala.Option[List[primitives.DomainName]] = scala.Option(impl.certificateAlternativeNames()).map(value => value.asScala.map { item => 
        item: primitives.DomainName
      }.toList)
      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.lightsail.model.CreateLoadBalancerTlsCertificateRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateLoadBalancerTlsCertificateResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateResponse = {
      import CreateLoadBalancerTlsCertificateResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateLoadBalancerTlsCertificateResponse.ReadOnly = CreateLoadBalancerTlsCertificateResponse.wrap(buildAwsValue())
  }
  object CreateLoadBalancerTlsCertificateResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateLoadBalancerTlsCertificateResponse = CreateLoadBalancerTlsCertificateResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateResponse) extends CreateLoadBalancerTlsCertificateResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateLoadBalancerTlsCertificateResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateRelationalDatabaseFromSnapshotRequest(relationalDatabaseName: primitives.ResourceName, availabilityZone: scala.Option[String] = None, publiclyAccessible: scala.Option[Boolean] = None, relationalDatabaseSnapshotName: scala.Option[primitives.ResourceName] = None, relationalDatabaseBundleId: scala.Option[String] = None, sourceRelationalDatabaseName: scala.Option[primitives.ResourceName] = None, restoreTime: scala.Option[primitives.IsoDate] = None, useLatestRestorableTime: scala.Option[Boolean] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotRequest = {
      import CreateRelationalDatabaseFromSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(availabilityZone.map(value => value: java.lang.String))(_.availabilityZone).optionallyWith(publiclyAccessible.map(value => value: java.lang.Boolean))(_.publiclyAccessible).optionallyWith(relationalDatabaseSnapshotName.map(value => value: java.lang.String))(_.relationalDatabaseSnapshotName).optionallyWith(relationalDatabaseBundleId.map(value => value: java.lang.String))(_.relationalDatabaseBundleId).optionallyWith(sourceRelationalDatabaseName.map(value => value: java.lang.String))(_.sourceRelationalDatabaseName).optionallyWith(restoreTime.map(value => value: java.time.Instant))(_.restoreTime).optionallyWith(useLatestRestorableTime.map(value => value: java.lang.Boolean))(_.useLatestRestorableTime).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateRelationalDatabaseFromSnapshotRequest.ReadOnly = CreateRelationalDatabaseFromSnapshotRequest.wrap(buildAwsValue())
  }
  object CreateRelationalDatabaseFromSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateRelationalDatabaseFromSnapshotRequest = CreateRelationalDatabaseFromSnapshotRequest(relationalDatabaseNameValue, availabilityZoneValue.map(value => value), publiclyAccessibleValue.map(value => value), relationalDatabaseSnapshotNameValue.map(value => value), relationalDatabaseBundleIdValue.map(value => value), sourceRelationalDatabaseNameValue.map(value => value), restoreTimeValue.map(value => value), useLatestRestorableTimeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def relationalDatabaseNameValue: primitives.ResourceName
      def availabilityZoneValue: scala.Option[String]
      def publiclyAccessibleValue: scala.Option[Boolean]
      def relationalDatabaseSnapshotNameValue: scala.Option[primitives.ResourceName]
      def relationalDatabaseBundleIdValue: scala.Option[String]
      def sourceRelationalDatabaseNameValue: scala.Option[primitives.ResourceName]
      def restoreTimeValue: scala.Option[primitives.IsoDate]
      def useLatestRestorableTimeValue: scala.Option[Boolean]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def availabilityZone: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("availabilityZone", availabilityZoneValue)
      def publiclyAccessible: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publiclyAccessible", publiclyAccessibleValue)
      def relationalDatabaseSnapshotName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseSnapshotName", relationalDatabaseSnapshotNameValue)
      def relationalDatabaseBundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseBundleId", relationalDatabaseBundleIdValue)
      def sourceRelationalDatabaseName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceRelationalDatabaseName", sourceRelationalDatabaseNameValue)
      def restoreTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("restoreTime", restoreTimeValue)
      def useLatestRestorableTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("useLatestRestorableTime", useLatestRestorableTimeValue)
      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.lightsail.model.CreateRelationalDatabaseFromSnapshotRequest) extends CreateRelationalDatabaseFromSnapshotRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def availabilityZoneValue: scala.Option[String] = scala.Option(impl.availabilityZone()).map(value => value: String)
      override def publiclyAccessibleValue: scala.Option[Boolean] = scala.Option(impl.publiclyAccessible()).map(value => value: Boolean)
      override def relationalDatabaseSnapshotNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.relationalDatabaseSnapshotName()).map(value => value: primitives.ResourceName)
      override def relationalDatabaseBundleIdValue: scala.Option[String] = scala.Option(impl.relationalDatabaseBundleId()).map(value => value: String)
      override def sourceRelationalDatabaseNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.sourceRelationalDatabaseName()).map(value => value: primitives.ResourceName)
      override def restoreTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.restoreTime()).map(value => value: primitives.IsoDate)
      override def useLatestRestorableTimeValue: scala.Option[Boolean] = scala.Option(impl.useLatestRestorableTime()).map(value => value: Boolean)
      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.lightsail.model.CreateRelationalDatabaseFromSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateRelationalDatabaseFromSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotResponse = {
      import CreateRelationalDatabaseFromSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateRelationalDatabaseFromSnapshotResponse.ReadOnly = CreateRelationalDatabaseFromSnapshotResponse.wrap(buildAwsValue())
  }
  object CreateRelationalDatabaseFromSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateRelationalDatabaseFromSnapshotResponse = CreateRelationalDatabaseFromSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotResponse) extends CreateRelationalDatabaseFromSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseFromSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateRelationalDatabaseRequest(relationalDatabaseName: primitives.ResourceName, availabilityZone: scala.Option[String] = None, relationalDatabaseBlueprintId: String, relationalDatabaseBundleId: String, masterDatabaseName: String, masterUsername: String, masterUserPassword: scala.Option[primitives.SensitiveString] = None, preferredBackupWindow: scala.Option[String] = None, preferredMaintenanceWindow: scala.Option[String] = None, publiclyAccessible: scala.Option[Boolean] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseRequest = {
      import CreateRelationalDatabaseRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(availabilityZone.map(value => value: java.lang.String))(_.availabilityZone).relationalDatabaseBlueprintId(relationalDatabaseBlueprintId: java.lang.String).relationalDatabaseBundleId(relationalDatabaseBundleId: java.lang.String).masterDatabaseName(masterDatabaseName: java.lang.String).masterUsername(masterUsername: java.lang.String).optionallyWith(masterUserPassword.map(value => value: java.lang.String))(_.masterUserPassword).optionallyWith(preferredBackupWindow.map(value => value: java.lang.String))(_.preferredBackupWindow).optionallyWith(preferredMaintenanceWindow.map(value => value: java.lang.String))(_.preferredMaintenanceWindow).optionallyWith(publiclyAccessible.map(value => value: java.lang.Boolean))(_.publiclyAccessible).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateRelationalDatabaseRequest.ReadOnly = CreateRelationalDatabaseRequest.wrap(buildAwsValue())
  }
  object CreateRelationalDatabaseRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateRelationalDatabaseRequest = CreateRelationalDatabaseRequest(relationalDatabaseNameValue, availabilityZoneValue.map(value => value), relationalDatabaseBlueprintIdValue, relationalDatabaseBundleIdValue, masterDatabaseNameValue, masterUsernameValue, masterUserPasswordValue.map(value => value), preferredBackupWindowValue.map(value => value), preferredMaintenanceWindowValue.map(value => value), publiclyAccessibleValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def relationalDatabaseNameValue: primitives.ResourceName
      def availabilityZoneValue: scala.Option[String]
      def relationalDatabaseBlueprintIdValue: String
      def relationalDatabaseBundleIdValue: String
      def masterDatabaseNameValue: String
      def masterUsernameValue: String
      def masterUserPasswordValue: scala.Option[primitives.SensitiveString]
      def preferredBackupWindowValue: scala.Option[String]
      def preferredMaintenanceWindowValue: scala.Option[String]
      def publiclyAccessibleValue: scala.Option[Boolean]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def availabilityZone: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("availabilityZone", availabilityZoneValue)
      def relationalDatabaseBlueprintId: ZIO[Any, Nothing, String] = ZIO.succeed(relationalDatabaseBlueprintIdValue)
      def relationalDatabaseBundleId: ZIO[Any, Nothing, String] = ZIO.succeed(relationalDatabaseBundleIdValue)
      def masterDatabaseName: ZIO[Any, Nothing, String] = ZIO.succeed(masterDatabaseNameValue)
      def masterUsername: ZIO[Any, Nothing, String] = ZIO.succeed(masterUsernameValue)
      def masterUserPassword: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SensitiveString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("masterUserPassword", masterUserPasswordValue)
      def preferredBackupWindow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("preferredBackupWindow", preferredBackupWindowValue)
      def preferredMaintenanceWindow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("preferredMaintenanceWindow", preferredMaintenanceWindowValue)
      def publiclyAccessible: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publiclyAccessible", publiclyAccessibleValue)
      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.lightsail.model.CreateRelationalDatabaseRequest) extends CreateRelationalDatabaseRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def availabilityZoneValue: scala.Option[String] = scala.Option(impl.availabilityZone()).map(value => value: String)
      override def relationalDatabaseBlueprintIdValue: String = impl.relationalDatabaseBlueprintId(): String
      override def relationalDatabaseBundleIdValue: String = impl.relationalDatabaseBundleId(): String
      override def masterDatabaseNameValue: String = impl.masterDatabaseName(): String
      override def masterUsernameValue: String = impl.masterUsername(): String
      override def masterUserPasswordValue: scala.Option[primitives.SensitiveString] = scala.Option(impl.masterUserPassword()).map(value => value: primitives.SensitiveString)
      override def preferredBackupWindowValue: scala.Option[String] = scala.Option(impl.preferredBackupWindow()).map(value => value: String)
      override def preferredMaintenanceWindowValue: scala.Option[String] = scala.Option(impl.preferredMaintenanceWindow()).map(value => value: String)
      override def publiclyAccessibleValue: scala.Option[Boolean] = scala.Option(impl.publiclyAccessible()).map(value => value: Boolean)
      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.lightsail.model.CreateRelationalDatabaseRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateRelationalDatabaseResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseResponse = {
      import CreateRelationalDatabaseResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateRelationalDatabaseResponse.ReadOnly = CreateRelationalDatabaseResponse.wrap(buildAwsValue())
  }
  object CreateRelationalDatabaseResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateRelationalDatabaseResponse = CreateRelationalDatabaseResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseResponse) extends CreateRelationalDatabaseResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateRelationalDatabaseSnapshotRequest(relationalDatabaseName: primitives.ResourceName, relationalDatabaseSnapshotName: primitives.ResourceName, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotRequest = {
      import CreateRelationalDatabaseSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).relationalDatabaseSnapshotName(relationalDatabaseSnapshotName: java.lang.String).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: CreateRelationalDatabaseSnapshotRequest.ReadOnly = CreateRelationalDatabaseSnapshotRequest.wrap(buildAwsValue())
  }
  object CreateRelationalDatabaseSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateRelationalDatabaseSnapshotRequest = CreateRelationalDatabaseSnapshotRequest(relationalDatabaseNameValue, relationalDatabaseSnapshotNameValue, tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def relationalDatabaseNameValue: primitives.ResourceName
      def relationalDatabaseSnapshotNameValue: primitives.ResourceName
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def relationalDatabaseSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseSnapshotNameValue)
      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.lightsail.model.CreateRelationalDatabaseSnapshotRequest) extends CreateRelationalDatabaseSnapshotRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def relationalDatabaseSnapshotNameValue: primitives.ResourceName = impl.relationalDatabaseSnapshotName(): primitives.ResourceName
      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.lightsail.model.CreateRelationalDatabaseSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateRelationalDatabaseSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotResponse = {
      import CreateRelationalDatabaseSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: CreateRelationalDatabaseSnapshotResponse.ReadOnly = CreateRelationalDatabaseSnapshotResponse.wrap(buildAwsValue())
  }
  object CreateRelationalDatabaseSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateRelationalDatabaseSnapshotResponse = CreateRelationalDatabaseSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotResponse) extends CreateRelationalDatabaseSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.CreateRelationalDatabaseSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteAlarmRequest(alarmName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteAlarmRequest = {
      import DeleteAlarmRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteAlarmRequest.builder().alarmName(alarmName: java.lang.String).build()
    }
    def asReadOnly: DeleteAlarmRequest.ReadOnly = DeleteAlarmRequest.wrap(buildAwsValue())
  }
  object DeleteAlarmRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteAlarmRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteAlarmRequest = DeleteAlarmRequest(alarmNameValue)
      def alarmNameValue: primitives.ResourceName
      def alarmName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(alarmNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteAlarmRequest) extends DeleteAlarmRequest.ReadOnly { override def alarmNameValue: primitives.ResourceName = impl.alarmName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteAlarmRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteAlarmResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteAlarmResponse = {
      import DeleteAlarmResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteAlarmResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteAlarmResponse.ReadOnly = DeleteAlarmResponse.wrap(buildAwsValue())
  }
  object DeleteAlarmResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteAlarmResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteAlarmResponse = DeleteAlarmResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteAlarmResponse) extends DeleteAlarmResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteAlarmResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteAutoSnapshotRequest(resourceName: primitives.ResourceName, date: primitives.AutoSnapshotDate) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotRequest = {
      import DeleteAutoSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotRequest.builder().resourceName(resourceName: java.lang.String).date(date: java.lang.String).build()
    }
    def asReadOnly: DeleteAutoSnapshotRequest.ReadOnly = DeleteAutoSnapshotRequest.wrap(buildAwsValue())
  }
  object DeleteAutoSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteAutoSnapshotRequest = DeleteAutoSnapshotRequest(resourceNameValue, dateValue)
      def resourceNameValue: primitives.ResourceName
      def dateValue: primitives.AutoSnapshotDate
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
      def date: ZIO[Any, Nothing, primitives.AutoSnapshotDate] = ZIO.succeed(dateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotRequest) extends DeleteAutoSnapshotRequest.ReadOnly {
      override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName
      override def dateValue: primitives.AutoSnapshotDate = impl.date(): primitives.AutoSnapshotDate
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteAutoSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotResponse = {
      import DeleteAutoSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteAutoSnapshotResponse.ReadOnly = DeleteAutoSnapshotResponse.wrap(buildAwsValue())
  }
  object DeleteAutoSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteAutoSnapshotResponse = DeleteAutoSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotResponse) extends DeleteAutoSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteAutoSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteCertificateRequest(certificateName: primitives.CertificateName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteCertificateRequest = {
      import DeleteCertificateRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteCertificateRequest.builder().certificateName(certificateName: java.lang.String).build()
    }
    def asReadOnly: DeleteCertificateRequest.ReadOnly = DeleteCertificateRequest.wrap(buildAwsValue())
  }
  object DeleteCertificateRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteCertificateRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteCertificateRequest = DeleteCertificateRequest(certificateNameValue)
      def certificateNameValue: primitives.CertificateName
      def certificateName: ZIO[Any, Nothing, primitives.CertificateName] = ZIO.succeed(certificateNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteCertificateRequest) extends DeleteCertificateRequest.ReadOnly { override def certificateNameValue: primitives.CertificateName = impl.certificateName(): primitives.CertificateName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteCertificateRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteCertificateResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteCertificateResponse = {
      import DeleteCertificateResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteCertificateResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteCertificateResponse.ReadOnly = DeleteCertificateResponse.wrap(buildAwsValue())
  }
  object DeleteCertificateResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteCertificateResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteCertificateResponse = DeleteCertificateResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteCertificateResponse) extends DeleteCertificateResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteCertificateResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteContactMethodRequest(protocol: ContactProtocol) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteContactMethodRequest = {
      import DeleteContactMethodRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteContactMethodRequest.builder().protocol(protocol.unwrap).build()
    }
    def asReadOnly: DeleteContactMethodRequest.ReadOnly = DeleteContactMethodRequest.wrap(buildAwsValue())
  }
  object DeleteContactMethodRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteContactMethodRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteContactMethodRequest = DeleteContactMethodRequest(protocolValue)
      def protocolValue: ContactProtocol
      def protocol: ZIO[Any, Nothing, ContactProtocol] = ZIO.succeed(protocolValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteContactMethodRequest) extends DeleteContactMethodRequest.ReadOnly { override def protocolValue: ContactProtocol = ContactProtocol.wrap(impl.protocol()) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteContactMethodRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteContactMethodResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteContactMethodResponse = {
      import DeleteContactMethodResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteContactMethodResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteContactMethodResponse.ReadOnly = DeleteContactMethodResponse.wrap(buildAwsValue())
  }
  object DeleteContactMethodResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteContactMethodResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteContactMethodResponse = DeleteContactMethodResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteContactMethodResponse) extends DeleteContactMethodResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteContactMethodResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteContainerImageRequest(serviceName: primitives.ContainerServiceName, image: String) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteContainerImageRequest = {
      import DeleteContainerImageRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteContainerImageRequest.builder().serviceName(serviceName: java.lang.String).image(image: java.lang.String).build()
    }
    def asReadOnly: DeleteContainerImageRequest.ReadOnly = DeleteContainerImageRequest.wrap(buildAwsValue())
  }
  object DeleteContainerImageRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteContainerImageRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteContainerImageRequest = DeleteContainerImageRequest(serviceNameValue, imageValue)
      def serviceNameValue: primitives.ContainerServiceName
      def imageValue: String
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
      def image: ZIO[Any, Nothing, String] = ZIO.succeed(imageValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerImageRequest) extends DeleteContainerImageRequest.ReadOnly {
      override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName
      override def imageValue: String = impl.image(): String
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerImageRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteContainerImageResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteContainerImageResponse = {
      import DeleteContainerImageResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteContainerImageResponse.builder().build()
    }
    def asReadOnly: DeleteContainerImageResponse.ReadOnly = DeleteContainerImageResponse.wrap(buildAwsValue())
  }
  object DeleteContainerImageResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteContainerImageResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DeleteContainerImageResponse = DeleteContainerImageResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerImageResponse) extends DeleteContainerImageResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerImageResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteContainerServiceRequest(serviceName: primitives.ContainerServiceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceRequest = {
      import DeleteContainerServiceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceRequest.builder().serviceName(serviceName: java.lang.String).build()
    }
    def asReadOnly: DeleteContainerServiceRequest.ReadOnly = DeleteContainerServiceRequest.wrap(buildAwsValue())
  }
  object DeleteContainerServiceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteContainerServiceRequest = DeleteContainerServiceRequest(serviceNameValue)
      def serviceNameValue: primitives.ContainerServiceName
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceRequest) extends DeleteContainerServiceRequest.ReadOnly { override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteContainerServiceResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceResponse = {
      import DeleteContainerServiceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceResponse.builder().build()
    }
    def asReadOnly: DeleteContainerServiceResponse.ReadOnly = DeleteContainerServiceResponse.wrap(buildAwsValue())
  }
  object DeleteContainerServiceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DeleteContainerServiceResponse = DeleteContainerServiceResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceResponse) extends DeleteContainerServiceResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteContainerServiceResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDiskRequest(diskName: primitives.ResourceName, forceDeleteAddOns: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDiskRequest = {
      import DeleteDiskRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDiskRequest.builder().diskName(diskName: java.lang.String).optionallyWith(forceDeleteAddOns.map(value => value: java.lang.Boolean))(_.forceDeleteAddOns).build()
    }
    def asReadOnly: DeleteDiskRequest.ReadOnly = DeleteDiskRequest.wrap(buildAwsValue())
  }
  object DeleteDiskRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDiskRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDiskRequest = DeleteDiskRequest(diskNameValue, forceDeleteAddOnsValue.map(value => value))
      def diskNameValue: primitives.ResourceName
      def forceDeleteAddOnsValue: scala.Option[Boolean]
      def diskName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskNameValue)
      def forceDeleteAddOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forceDeleteAddOns", forceDeleteAddOnsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskRequest) extends DeleteDiskRequest.ReadOnly {
      override def diskNameValue: primitives.ResourceName = impl.diskName(): primitives.ResourceName
      override def forceDeleteAddOnsValue: scala.Option[Boolean] = scala.Option(impl.forceDeleteAddOns()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDiskResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDiskResponse = {
      import DeleteDiskResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDiskResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteDiskResponse.ReadOnly = DeleteDiskResponse.wrap(buildAwsValue())
  }
  object DeleteDiskResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDiskResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDiskResponse = DeleteDiskResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskResponse) extends DeleteDiskResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDiskSnapshotRequest(diskSnapshotName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotRequest = {
      import DeleteDiskSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotRequest.builder().diskSnapshotName(diskSnapshotName: java.lang.String).build()
    }
    def asReadOnly: DeleteDiskSnapshotRequest.ReadOnly = DeleteDiskSnapshotRequest.wrap(buildAwsValue())
  }
  object DeleteDiskSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDiskSnapshotRequest = DeleteDiskSnapshotRequest(diskSnapshotNameValue)
      def diskSnapshotNameValue: primitives.ResourceName
      def diskSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotRequest) extends DeleteDiskSnapshotRequest.ReadOnly { override def diskSnapshotNameValue: primitives.ResourceName = impl.diskSnapshotName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDiskSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotResponse = {
      import DeleteDiskSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteDiskSnapshotResponse.ReadOnly = DeleteDiskSnapshotResponse.wrap(buildAwsValue())
  }
  object DeleteDiskSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDiskSnapshotResponse = DeleteDiskSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotResponse) extends DeleteDiskSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDiskSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDistributionRequest(distributionName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDistributionRequest = {
      import DeleteDistributionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDistributionRequest.builder().optionallyWith(distributionName.map(value => value: java.lang.String))(_.distributionName).build()
    }
    def asReadOnly: DeleteDistributionRequest.ReadOnly = DeleteDistributionRequest.wrap(buildAwsValue())
  }
  object DeleteDistributionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDistributionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDistributionRequest = DeleteDistributionRequest(distributionNameValue.map(value => value))
      def distributionNameValue: scala.Option[primitives.ResourceName]
      def distributionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("distributionName", distributionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDistributionRequest) extends DeleteDistributionRequest.ReadOnly { override def distributionNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.distributionName()).map(value => value: primitives.ResourceName) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDistributionRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDistributionResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDistributionResponse = {
      import DeleteDistributionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDistributionResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: DeleteDistributionResponse.ReadOnly = DeleteDistributionResponse.wrap(buildAwsValue())
  }
  object DeleteDistributionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDistributionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDistributionResponse = DeleteDistributionResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDistributionResponse) extends DeleteDistributionResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDistributionResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDomainEntryRequest(domainName: primitives.DomainName, domainEntry: DomainEntry) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryRequest = {
      import DeleteDomainEntryRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryRequest.builder().domainName(domainName: java.lang.String).domainEntry(domainEntry.buildAwsValue()).build()
    }
    def asReadOnly: DeleteDomainEntryRequest.ReadOnly = DeleteDomainEntryRequest.wrap(buildAwsValue())
  }
  object DeleteDomainEntryRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDomainEntryRequest = DeleteDomainEntryRequest(domainNameValue, domainEntryValue.editable)
      def domainNameValue: primitives.DomainName
      def domainEntryValue: DomainEntry.ReadOnly
      def domainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainNameValue)
      def domainEntry: ZIO[Any, Nothing, DomainEntry.ReadOnly] = ZIO.succeed(domainEntryValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryRequest) extends DeleteDomainEntryRequest.ReadOnly {
      override def domainNameValue: primitives.DomainName = impl.domainName(): primitives.DomainName
      override def domainEntryValue: DomainEntry.ReadOnly = DomainEntry.wrap(impl.domainEntry())
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDomainEntryResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryResponse = {
      import DeleteDomainEntryResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: DeleteDomainEntryResponse.ReadOnly = DeleteDomainEntryResponse.wrap(buildAwsValue())
  }
  object DeleteDomainEntryResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDomainEntryResponse = DeleteDomainEntryResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryResponse) extends DeleteDomainEntryResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainEntryResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDomainRequest(domainName: primitives.DomainName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDomainRequest = {
      import DeleteDomainRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDomainRequest.builder().domainName(domainName: java.lang.String).build()
    }
    def asReadOnly: DeleteDomainRequest.ReadOnly = DeleteDomainRequest.wrap(buildAwsValue())
  }
  object DeleteDomainRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDomainRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDomainRequest = DeleteDomainRequest(domainNameValue)
      def domainNameValue: primitives.DomainName
      def domainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainRequest) extends DeleteDomainRequest.ReadOnly { override def domainNameValue: primitives.DomainName = impl.domainName(): primitives.DomainName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteDomainResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteDomainResponse = {
      import DeleteDomainResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteDomainResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: DeleteDomainResponse.ReadOnly = DeleteDomainResponse.wrap(buildAwsValue())
  }
  object DeleteDomainResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteDomainResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteDomainResponse = DeleteDomainResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainResponse) extends DeleteDomainResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteDomainResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteInstanceRequest(instanceName: primitives.ResourceName, forceDeleteAddOns: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteInstanceRequest = {
      import DeleteInstanceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteInstanceRequest.builder().instanceName(instanceName: java.lang.String).optionallyWith(forceDeleteAddOns.map(value => value: java.lang.Boolean))(_.forceDeleteAddOns).build()
    }
    def asReadOnly: DeleteInstanceRequest.ReadOnly = DeleteInstanceRequest.wrap(buildAwsValue())
  }
  object DeleteInstanceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteInstanceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteInstanceRequest = DeleteInstanceRequest(instanceNameValue, forceDeleteAddOnsValue.map(value => value))
      def instanceNameValue: primitives.ResourceName
      def forceDeleteAddOnsValue: scala.Option[Boolean]
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
      def forceDeleteAddOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forceDeleteAddOns", forceDeleteAddOnsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceRequest) extends DeleteInstanceRequest.ReadOnly {
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
      override def forceDeleteAddOnsValue: scala.Option[Boolean] = scala.Option(impl.forceDeleteAddOns()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteInstanceResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteInstanceResponse = {
      import DeleteInstanceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteInstanceResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteInstanceResponse.ReadOnly = DeleteInstanceResponse.wrap(buildAwsValue())
  }
  object DeleteInstanceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteInstanceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteInstanceResponse = DeleteInstanceResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceResponse) extends DeleteInstanceResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteInstanceSnapshotRequest(instanceSnapshotName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotRequest = {
      import DeleteInstanceSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotRequest.builder().instanceSnapshotName(instanceSnapshotName: java.lang.String).build()
    }
    def asReadOnly: DeleteInstanceSnapshotRequest.ReadOnly = DeleteInstanceSnapshotRequest.wrap(buildAwsValue())
  }
  object DeleteInstanceSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteInstanceSnapshotRequest = DeleteInstanceSnapshotRequest(instanceSnapshotNameValue)
      def instanceSnapshotNameValue: primitives.ResourceName
      def instanceSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotRequest) extends DeleteInstanceSnapshotRequest.ReadOnly { override def instanceSnapshotNameValue: primitives.ResourceName = impl.instanceSnapshotName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteInstanceSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotResponse = {
      import DeleteInstanceSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteInstanceSnapshotResponse.ReadOnly = DeleteInstanceSnapshotResponse.wrap(buildAwsValue())
  }
  object DeleteInstanceSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteInstanceSnapshotResponse = DeleteInstanceSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotResponse) extends DeleteInstanceSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteInstanceSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteKeyPairRequest(keyPairName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteKeyPairRequest = {
      import DeleteKeyPairRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteKeyPairRequest.builder().keyPairName(keyPairName: java.lang.String).build()
    }
    def asReadOnly: DeleteKeyPairRequest.ReadOnly = DeleteKeyPairRequest.wrap(buildAwsValue())
  }
  object DeleteKeyPairRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteKeyPairRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteKeyPairRequest = DeleteKeyPairRequest(keyPairNameValue)
      def keyPairNameValue: primitives.ResourceName
      def keyPairName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(keyPairNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteKeyPairRequest) extends DeleteKeyPairRequest.ReadOnly { override def keyPairNameValue: primitives.ResourceName = impl.keyPairName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteKeyPairRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteKeyPairResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteKeyPairResponse = {
      import DeleteKeyPairResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteKeyPairResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: DeleteKeyPairResponse.ReadOnly = DeleteKeyPairResponse.wrap(buildAwsValue())
  }
  object DeleteKeyPairResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteKeyPairResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteKeyPairResponse = DeleteKeyPairResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteKeyPairResponse) extends DeleteKeyPairResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteKeyPairResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteKnownHostKeysRequest(instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysRequest = {
      import DeleteKnownHostKeysRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysRequest.builder().instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: DeleteKnownHostKeysRequest.ReadOnly = DeleteKnownHostKeysRequest.wrap(buildAwsValue())
  }
  object DeleteKnownHostKeysRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteKnownHostKeysRequest = DeleteKnownHostKeysRequest(instanceNameValue)
      def instanceNameValue: primitives.ResourceName
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysRequest) extends DeleteKnownHostKeysRequest.ReadOnly { override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteKnownHostKeysResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysResponse = {
      import DeleteKnownHostKeysResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteKnownHostKeysResponse.ReadOnly = DeleteKnownHostKeysResponse.wrap(buildAwsValue())
  }
  object DeleteKnownHostKeysResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteKnownHostKeysResponse = DeleteKnownHostKeysResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysResponse) extends DeleteKnownHostKeysResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteKnownHostKeysResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteLoadBalancerRequest(loadBalancerName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerRequest = {
      import DeleteLoadBalancerRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).build()
    }
    def asReadOnly: DeleteLoadBalancerRequest.ReadOnly = DeleteLoadBalancerRequest.wrap(buildAwsValue())
  }
  object DeleteLoadBalancerRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteLoadBalancerRequest = DeleteLoadBalancerRequest(loadBalancerNameValue)
      def loadBalancerNameValue: primitives.ResourceName
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerRequest) extends DeleteLoadBalancerRequest.ReadOnly { override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteLoadBalancerResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerResponse = {
      import DeleteLoadBalancerResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteLoadBalancerResponse.ReadOnly = DeleteLoadBalancerResponse.wrap(buildAwsValue())
  }
  object DeleteLoadBalancerResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteLoadBalancerResponse = DeleteLoadBalancerResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerResponse) extends DeleteLoadBalancerResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteLoadBalancerTlsCertificateRequest(loadBalancerName: primitives.ResourceName, certificateName: primitives.ResourceName, force: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateRequest = {
      import DeleteLoadBalancerTlsCertificateRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).certificateName(certificateName: java.lang.String).optionallyWith(force.map(value => value: java.lang.Boolean))(_.force).build()
    }
    def asReadOnly: DeleteLoadBalancerTlsCertificateRequest.ReadOnly = DeleteLoadBalancerTlsCertificateRequest.wrap(buildAwsValue())
  }
  object DeleteLoadBalancerTlsCertificateRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteLoadBalancerTlsCertificateRequest = DeleteLoadBalancerTlsCertificateRequest(loadBalancerNameValue, certificateNameValue, forceValue.map(value => value))
      def loadBalancerNameValue: primitives.ResourceName
      def certificateNameValue: primitives.ResourceName
      def forceValue: scala.Option[Boolean]
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def certificateName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(certificateNameValue)
      def force: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("force", forceValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateRequest) extends DeleteLoadBalancerTlsCertificateRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def certificateNameValue: primitives.ResourceName = impl.certificateName(): primitives.ResourceName
      override def forceValue: scala.Option[Boolean] = scala.Option(impl.force()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteLoadBalancerTlsCertificateResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateResponse = {
      import DeleteLoadBalancerTlsCertificateResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteLoadBalancerTlsCertificateResponse.ReadOnly = DeleteLoadBalancerTlsCertificateResponse.wrap(buildAwsValue())
  }
  object DeleteLoadBalancerTlsCertificateResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteLoadBalancerTlsCertificateResponse = DeleteLoadBalancerTlsCertificateResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateResponse) extends DeleteLoadBalancerTlsCertificateResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteLoadBalancerTlsCertificateResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteRelationalDatabaseRequest(relationalDatabaseName: primitives.ResourceName, skipFinalSnapshot: scala.Option[Boolean] = None, finalRelationalDatabaseSnapshotName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseRequest = {
      import DeleteRelationalDatabaseRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(skipFinalSnapshot.map(value => value: java.lang.Boolean))(_.skipFinalSnapshot).optionallyWith(finalRelationalDatabaseSnapshotName.map(value => value: java.lang.String))(_.finalRelationalDatabaseSnapshotName).build()
    }
    def asReadOnly: DeleteRelationalDatabaseRequest.ReadOnly = DeleteRelationalDatabaseRequest.wrap(buildAwsValue())
  }
  object DeleteRelationalDatabaseRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteRelationalDatabaseRequest = DeleteRelationalDatabaseRequest(relationalDatabaseNameValue, skipFinalSnapshotValue.map(value => value), finalRelationalDatabaseSnapshotNameValue.map(value => value))
      def relationalDatabaseNameValue: primitives.ResourceName
      def skipFinalSnapshotValue: scala.Option[Boolean]
      def finalRelationalDatabaseSnapshotNameValue: scala.Option[primitives.ResourceName]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def skipFinalSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("skipFinalSnapshot", skipFinalSnapshotValue)
      def finalRelationalDatabaseSnapshotName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("finalRelationalDatabaseSnapshotName", finalRelationalDatabaseSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseRequest) extends DeleteRelationalDatabaseRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def skipFinalSnapshotValue: scala.Option[Boolean] = scala.Option(impl.skipFinalSnapshot()).map(value => value: Boolean)
      override def finalRelationalDatabaseSnapshotNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.finalRelationalDatabaseSnapshotName()).map(value => value: primitives.ResourceName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteRelationalDatabaseResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseResponse = {
      import DeleteRelationalDatabaseResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteRelationalDatabaseResponse.ReadOnly = DeleteRelationalDatabaseResponse.wrap(buildAwsValue())
  }
  object DeleteRelationalDatabaseResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteRelationalDatabaseResponse = DeleteRelationalDatabaseResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseResponse) extends DeleteRelationalDatabaseResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteRelationalDatabaseSnapshotRequest(relationalDatabaseSnapshotName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotRequest = {
      import DeleteRelationalDatabaseSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotRequest.builder().relationalDatabaseSnapshotName(relationalDatabaseSnapshotName: java.lang.String).build()
    }
    def asReadOnly: DeleteRelationalDatabaseSnapshotRequest.ReadOnly = DeleteRelationalDatabaseSnapshotRequest.wrap(buildAwsValue())
  }
  object DeleteRelationalDatabaseSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteRelationalDatabaseSnapshotRequest = DeleteRelationalDatabaseSnapshotRequest(relationalDatabaseSnapshotNameValue)
      def relationalDatabaseSnapshotNameValue: primitives.ResourceName
      def relationalDatabaseSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotRequest) extends DeleteRelationalDatabaseSnapshotRequest.ReadOnly { override def relationalDatabaseSnapshotNameValue: primitives.ResourceName = impl.relationalDatabaseSnapshotName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteRelationalDatabaseSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotResponse = {
      import DeleteRelationalDatabaseSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DeleteRelationalDatabaseSnapshotResponse.ReadOnly = DeleteRelationalDatabaseSnapshotResponse.wrap(buildAwsValue())
  }
  object DeleteRelationalDatabaseSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteRelationalDatabaseSnapshotResponse = DeleteRelationalDatabaseSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotResponse) extends DeleteRelationalDatabaseSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DeleteRelationalDatabaseSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class DestinationInfo(id: scala.Option[primitives.NonEmptyString] = None, service: scala.Option[primitives.NonEmptyString] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DestinationInfo = {
      import DestinationInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DestinationInfo.builder().optionallyWith(id.map(value => value: java.lang.String))(_.id).optionallyWith(service.map(value => value: java.lang.String))(_.service).build()
    }
    def asReadOnly: DestinationInfo.ReadOnly = DestinationInfo.wrap(buildAwsValue())
  }
  object DestinationInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DestinationInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DestinationInfo = DestinationInfo(idValue.map(value => value), serviceValue.map(value => value))
      def idValue: scala.Option[primitives.NonEmptyString]
      def serviceValue: scala.Option[primitives.NonEmptyString]
      def id: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("id", idValue)
      def service: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("service", serviceValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DestinationInfo) extends DestinationInfo.ReadOnly {
      override def idValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.id()).map(value => value: primitives.NonEmptyString)
      override def serviceValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.service()).map(value => value: primitives.NonEmptyString)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DestinationInfo): ReadOnly = new Wrapper(impl)
  }
  case class DetachCertificateFromDistributionRequest(distributionName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionRequest = {
      import DetachCertificateFromDistributionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionRequest.builder().distributionName(distributionName: java.lang.String).build()
    }
    def asReadOnly: DetachCertificateFromDistributionRequest.ReadOnly = DetachCertificateFromDistributionRequest.wrap(buildAwsValue())
  }
  object DetachCertificateFromDistributionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachCertificateFromDistributionRequest = DetachCertificateFromDistributionRequest(distributionNameValue)
      def distributionNameValue: primitives.ResourceName
      def distributionName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(distributionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionRequest) extends DetachCertificateFromDistributionRequest.ReadOnly { override def distributionNameValue: primitives.ResourceName = impl.distributionName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionRequest): ReadOnly = new Wrapper(impl)
  }
  case class DetachCertificateFromDistributionResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionResponse = {
      import DetachCertificateFromDistributionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: DetachCertificateFromDistributionResponse.ReadOnly = DetachCertificateFromDistributionResponse.wrap(buildAwsValue())
  }
  object DetachCertificateFromDistributionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachCertificateFromDistributionResponse = DetachCertificateFromDistributionResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionResponse) extends DetachCertificateFromDistributionResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachCertificateFromDistributionResponse): ReadOnly = new Wrapper(impl)
  }
  case class DetachDiskRequest(diskName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachDiskRequest = {
      import DetachDiskRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachDiskRequest.builder().diskName(diskName: java.lang.String).build()
    }
    def asReadOnly: DetachDiskRequest.ReadOnly = DetachDiskRequest.wrap(buildAwsValue())
  }
  object DetachDiskRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachDiskRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachDiskRequest = DetachDiskRequest(diskNameValue)
      def diskNameValue: primitives.ResourceName
      def diskName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachDiskRequest) extends DetachDiskRequest.ReadOnly { override def diskNameValue: primitives.ResourceName = impl.diskName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachDiskRequest): ReadOnly = new Wrapper(impl)
  }
  case class DetachDiskResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachDiskResponse = {
      import DetachDiskResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachDiskResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DetachDiskResponse.ReadOnly = DetachDiskResponse.wrap(buildAwsValue())
  }
  object DetachDiskResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachDiskResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachDiskResponse = DetachDiskResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachDiskResponse) extends DetachDiskResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachDiskResponse): ReadOnly = new Wrapper(impl)
  }
  case class DetachInstancesFromLoadBalancerRequest(loadBalancerName: primitives.ResourceName, instanceNames: Iterable[primitives.ResourceName]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerRequest = {
      import DetachInstancesFromLoadBalancerRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).instanceNames(instanceNames.map { item => 
        item: java.lang.String
      }.asJavaCollection).build()
    }
    def asReadOnly: DetachInstancesFromLoadBalancerRequest.ReadOnly = DetachInstancesFromLoadBalancerRequest.wrap(buildAwsValue())
  }
  object DetachInstancesFromLoadBalancerRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachInstancesFromLoadBalancerRequest = DetachInstancesFromLoadBalancerRequest(loadBalancerNameValue, instanceNamesValue)
      def loadBalancerNameValue: primitives.ResourceName
      def instanceNamesValue: List[primitives.ResourceName]
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def instanceNames: ZIO[Any, Nothing, List[primitives.ResourceName]] = ZIO.succeed(instanceNamesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerRequest) extends DetachInstancesFromLoadBalancerRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def instanceNamesValue: List[primitives.ResourceName] = impl.instanceNames().asScala.map { item => 
        item: primitives.ResourceName
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerRequest): ReadOnly = new Wrapper(impl)
  }
  case class DetachInstancesFromLoadBalancerResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerResponse = {
      import DetachInstancesFromLoadBalancerResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DetachInstancesFromLoadBalancerResponse.ReadOnly = DetachInstancesFromLoadBalancerResponse.wrap(buildAwsValue())
  }
  object DetachInstancesFromLoadBalancerResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachInstancesFromLoadBalancerResponse = DetachInstancesFromLoadBalancerResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerResponse) extends DetachInstancesFromLoadBalancerResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachInstancesFromLoadBalancerResponse): ReadOnly = new Wrapper(impl)
  }
  case class DetachStaticIpRequest(staticIpName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachStaticIpRequest = {
      import DetachStaticIpRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachStaticIpRequest.builder().staticIpName(staticIpName: java.lang.String).build()
    }
    def asReadOnly: DetachStaticIpRequest.ReadOnly = DetachStaticIpRequest.wrap(buildAwsValue())
  }
  object DetachStaticIpRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachStaticIpRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachStaticIpRequest = DetachStaticIpRequest(staticIpNameValue)
      def staticIpNameValue: primitives.ResourceName
      def staticIpName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(staticIpNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachStaticIpRequest) extends DetachStaticIpRequest.ReadOnly { override def staticIpNameValue: primitives.ResourceName = impl.staticIpName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachStaticIpRequest): ReadOnly = new Wrapper(impl)
  }
  case class DetachStaticIpResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DetachStaticIpResponse = {
      import DetachStaticIpResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DetachStaticIpResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DetachStaticIpResponse.ReadOnly = DetachStaticIpResponse.wrap(buildAwsValue())
  }
  object DetachStaticIpResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DetachStaticIpResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DetachStaticIpResponse = DetachStaticIpResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DetachStaticIpResponse) extends DetachStaticIpResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DetachStaticIpResponse): ReadOnly = new Wrapper(impl)
  }
  case class DisableAddOnRequest(addOnType: AddOnType, resourceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DisableAddOnRequest = {
      import DisableAddOnRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DisableAddOnRequest.builder().addOnType(addOnType.unwrap).resourceName(resourceName: java.lang.String).build()
    }
    def asReadOnly: DisableAddOnRequest.ReadOnly = DisableAddOnRequest.wrap(buildAwsValue())
  }
  object DisableAddOnRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DisableAddOnRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DisableAddOnRequest = DisableAddOnRequest(addOnTypeValue, resourceNameValue)
      def addOnTypeValue: AddOnType
      def resourceNameValue: primitives.ResourceName
      def addOnType: ZIO[Any, Nothing, AddOnType] = ZIO.succeed(addOnTypeValue)
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DisableAddOnRequest) extends DisableAddOnRequest.ReadOnly {
      override def addOnTypeValue: AddOnType = AddOnType.wrap(impl.addOnType())
      override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DisableAddOnRequest): ReadOnly = new Wrapper(impl)
  }
  case class DisableAddOnResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DisableAddOnResponse = {
      import DisableAddOnResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DisableAddOnResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: DisableAddOnResponse.ReadOnly = DisableAddOnResponse.wrap(buildAwsValue())
  }
  object DisableAddOnResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DisableAddOnResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DisableAddOnResponse = DisableAddOnResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DisableAddOnResponse) extends DisableAddOnResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DisableAddOnResponse): ReadOnly = new Wrapper(impl)
  }
  case class Disk(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, addOns: scala.Option[Iterable[AddOn]] = None, sizeInGb: scala.Option[primitives.Integer] = None, isSystemDisk: scala.Option[Boolean] = None, iops: scala.Option[primitives.Integer] = None, path: scala.Option[String] = None, state: scala.Option[DiskState] = None, attachedTo: scala.Option[primitives.ResourceName] = None, isAttached: scala.Option[Boolean] = None, attachmentState: scala.Option[String] = None, gbInUse: scala.Option[primitives.Integer] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Disk = {
      import Disk.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Disk.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(addOns.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.addOns).optionallyWith(sizeInGb.map(value => value: java.lang.Integer))(_.sizeInGb).optionallyWith(isSystemDisk.map(value => value: java.lang.Boolean))(_.isSystemDisk).optionallyWith(iops.map(value => value: java.lang.Integer))(_.iops).optionallyWith(path.map(value => value: java.lang.String))(_.path).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(attachedTo.map(value => value: java.lang.String))(_.attachedTo).optionallyWith(isAttached.map(value => value: java.lang.Boolean))(_.isAttached).optionallyWith(attachmentState.map(value => value: java.lang.String))(_.attachmentState).optionallyWith(gbInUse.map(value => value: java.lang.Integer))(_.gbInUse).build()
    }
    def asReadOnly: Disk.ReadOnly = Disk.wrap(buildAwsValue())
  }
  object Disk {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Disk] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Disk = Disk(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), addOnsValue.map(value => value.map { item => 
        item.editable
      }), sizeInGbValue.map(value => value), isSystemDiskValue.map(value => value), iopsValue.map(value => value), pathValue.map(value => value), stateValue.map(value => value), attachedToValue.map(value => value), isAttachedValue.map(value => value), attachmentStateValue.map(value => value), gbInUseValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def addOnsValue: scala.Option[List[AddOn.ReadOnly]]
      def sizeInGbValue: scala.Option[primitives.Integer]
      def isSystemDiskValue: scala.Option[Boolean]
      def iopsValue: scala.Option[primitives.Integer]
      def pathValue: scala.Option[String]
      def stateValue: scala.Option[DiskState]
      def attachedToValue: scala.Option[primitives.ResourceName]
      def isAttachedValue: scala.Option[Boolean]
      def attachmentStateValue: scala.Option[String]
      def gbInUseValue: scala.Option[primitives.Integer]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def addOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AddOn.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("addOns", addOnsValue)
      def sizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeInGb", sizeInGbValue)
      def isSystemDisk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isSystemDisk", isSystemDiskValue)
      def iops: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("iops", iopsValue)
      def path: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("path", pathValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DiskState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def attachedTo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attachedTo", attachedToValue)
      def isAttached: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isAttached", isAttachedValue)
      def attachmentState: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attachmentState", attachmentStateValue)
      def gbInUse: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("gbInUse", gbInUseValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Disk) extends Disk.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def addOnsValue: scala.Option[List[AddOn.ReadOnly]] = scala.Option(impl.addOns()).map(value => value.asScala.map { item => 
        AddOn.wrap(item)
      }.toList)
      override def sizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.sizeInGb()).map(value => value: primitives.Integer)
      override def isSystemDiskValue: scala.Option[Boolean] = scala.Option(impl.isSystemDisk()).map(value => value: Boolean)
      override def iopsValue: scala.Option[primitives.Integer] = scala.Option(impl.iops()).map(value => value: primitives.Integer)
      override def pathValue: scala.Option[String] = scala.Option(impl.path()).map(value => value: String)
      override def stateValue: scala.Option[DiskState] = scala.Option(impl.state()).map(value => DiskState.wrap(value))
      override def attachedToValue: scala.Option[primitives.ResourceName] = scala.Option(impl.attachedTo()).map(value => value: primitives.ResourceName)
      override def isAttachedValue: scala.Option[Boolean] = scala.Option(impl.isAttached()).map(value => value: Boolean)
      override def attachmentStateValue: scala.Option[String] = scala.Option(impl.attachmentState()).map(value => value: String)
      override def gbInUseValue: scala.Option[primitives.Integer] = scala.Option(impl.gbInUse()).map(value => value: primitives.Integer)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Disk): ReadOnly = new Wrapper(impl)
  }
  case class DiskInfo(name: scala.Option[String] = None, path: scala.Option[primitives.NonEmptyString] = None, sizeInGb: scala.Option[primitives.Integer] = None, isSystemDisk: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DiskInfo = {
      import DiskInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DiskInfo.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(path.map(value => value: java.lang.String))(_.path).optionallyWith(sizeInGb.map(value => value: java.lang.Integer))(_.sizeInGb).optionallyWith(isSystemDisk.map(value => value: java.lang.Boolean))(_.isSystemDisk).build()
    }
    def asReadOnly: DiskInfo.ReadOnly = DiskInfo.wrap(buildAwsValue())
  }
  object DiskInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DiskInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DiskInfo = DiskInfo(nameValue.map(value => value), pathValue.map(value => value), sizeInGbValue.map(value => value), isSystemDiskValue.map(value => value))
      def nameValue: scala.Option[String]
      def pathValue: scala.Option[primitives.NonEmptyString]
      def sizeInGbValue: scala.Option[primitives.Integer]
      def isSystemDiskValue: scala.Option[Boolean]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def path: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("path", pathValue)
      def sizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeInGb", sizeInGbValue)
      def isSystemDisk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isSystemDisk", isSystemDiskValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DiskInfo) extends DiskInfo.ReadOnly {
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
      override def pathValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.path()).map(value => value: primitives.NonEmptyString)
      override def sizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.sizeInGb()).map(value => value: primitives.Integer)
      override def isSystemDiskValue: scala.Option[Boolean] = scala.Option(impl.isSystemDisk()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DiskInfo): ReadOnly = new Wrapper(impl)
  }
  type DiskInfoList = List[DiskInfo]
  type DiskList = List[Disk]
  case class DiskMap(originalDiskPath: scala.Option[primitives.NonEmptyString] = None, newDiskName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DiskMap = {
      import DiskMap.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DiskMap.builder().optionallyWith(originalDiskPath.map(value => value: java.lang.String))(_.originalDiskPath).optionallyWith(newDiskName.map(value => value: java.lang.String))(_.newDiskName).build()
    }
    def asReadOnly: DiskMap.ReadOnly = DiskMap.wrap(buildAwsValue())
  }
  object DiskMap {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DiskMap] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DiskMap = DiskMap(originalDiskPathValue.map(value => value), newDiskNameValue.map(value => value))
      def originalDiskPathValue: scala.Option[primitives.NonEmptyString]
      def newDiskNameValue: scala.Option[primitives.ResourceName]
      def originalDiskPath: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("originalDiskPath", originalDiskPathValue)
      def newDiskName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("newDiskName", newDiskNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DiskMap) extends DiskMap.ReadOnly {
      override def originalDiskPathValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.originalDiskPath()).map(value => value: primitives.NonEmptyString)
      override def newDiskNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.newDiskName()).map(value => value: primitives.ResourceName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DiskMap): ReadOnly = new Wrapper(impl)
  }
  type DiskMapList = List[DiskMap]
  case class DiskSnapshot(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, sizeInGb: scala.Option[primitives.Integer] = None, state: scala.Option[DiskSnapshotState] = None, progress: scala.Option[String] = None, fromDiskName: scala.Option[primitives.ResourceName] = None, fromDiskArn: scala.Option[primitives.NonEmptyString] = None, fromInstanceName: scala.Option[primitives.ResourceName] = None, fromInstanceArn: scala.Option[primitives.NonEmptyString] = None, isFromAutoSnapshot: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DiskSnapshot = {
      import DiskSnapshot.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DiskSnapshot.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(sizeInGb.map(value => value: java.lang.Integer))(_.sizeInGb).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(progress.map(value => value: java.lang.String))(_.progress).optionallyWith(fromDiskName.map(value => value: java.lang.String))(_.fromDiskName).optionallyWith(fromDiskArn.map(value => value: java.lang.String))(_.fromDiskArn).optionallyWith(fromInstanceName.map(value => value: java.lang.String))(_.fromInstanceName).optionallyWith(fromInstanceArn.map(value => value: java.lang.String))(_.fromInstanceArn).optionallyWith(isFromAutoSnapshot.map(value => value: java.lang.Boolean))(_.isFromAutoSnapshot).build()
    }
    def asReadOnly: DiskSnapshot.ReadOnly = DiskSnapshot.wrap(buildAwsValue())
  }
  object DiskSnapshot {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DiskSnapshot] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DiskSnapshot = DiskSnapshot(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), sizeInGbValue.map(value => value), stateValue.map(value => value), progressValue.map(value => value), fromDiskNameValue.map(value => value), fromDiskArnValue.map(value => value), fromInstanceNameValue.map(value => value), fromInstanceArnValue.map(value => value), isFromAutoSnapshotValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def sizeInGbValue: scala.Option[primitives.Integer]
      def stateValue: scala.Option[DiskSnapshotState]
      def progressValue: scala.Option[String]
      def fromDiskNameValue: scala.Option[primitives.ResourceName]
      def fromDiskArnValue: scala.Option[primitives.NonEmptyString]
      def fromInstanceNameValue: scala.Option[primitives.ResourceName]
      def fromInstanceArnValue: scala.Option[primitives.NonEmptyString]
      def isFromAutoSnapshotValue: scala.Option[Boolean]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def sizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeInGb", sizeInGbValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DiskSnapshotState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def progress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("progress", progressValue)
      def fromDiskName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromDiskName", fromDiskNameValue)
      def fromDiskArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromDiskArn", fromDiskArnValue)
      def fromInstanceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromInstanceName", fromInstanceNameValue)
      def fromInstanceArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromInstanceArn", fromInstanceArnValue)
      def isFromAutoSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isFromAutoSnapshot", isFromAutoSnapshotValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DiskSnapshot) extends DiskSnapshot.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def sizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.sizeInGb()).map(value => value: primitives.Integer)
      override def stateValue: scala.Option[DiskSnapshotState] = scala.Option(impl.state()).map(value => DiskSnapshotState.wrap(value))
      override def progressValue: scala.Option[String] = scala.Option(impl.progress()).map(value => value: String)
      override def fromDiskNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.fromDiskName()).map(value => value: primitives.ResourceName)
      override def fromDiskArnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromDiskArn()).map(value => value: primitives.NonEmptyString)
      override def fromInstanceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.fromInstanceName()).map(value => value: primitives.ResourceName)
      override def fromInstanceArnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromInstanceArn()).map(value => value: primitives.NonEmptyString)
      override def isFromAutoSnapshotValue: scala.Option[Boolean] = scala.Option(impl.isFromAutoSnapshot()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DiskSnapshot): ReadOnly = new Wrapper(impl)
  }
  case class DiskSnapshotInfo(sizeInGb: scala.Option[primitives.Integer] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DiskSnapshotInfo = {
      import DiskSnapshotInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DiskSnapshotInfo.builder().optionallyWith(sizeInGb.map(value => value: java.lang.Integer))(_.sizeInGb).build()
    }
    def asReadOnly: DiskSnapshotInfo.ReadOnly = DiskSnapshotInfo.wrap(buildAwsValue())
  }
  object DiskSnapshotInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DiskSnapshotInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DiskSnapshotInfo = DiskSnapshotInfo(sizeInGbValue.map(value => value))
      def sizeInGbValue: scala.Option[primitives.Integer]
      def sizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeInGb", sizeInGbValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DiskSnapshotInfo) extends DiskSnapshotInfo.ReadOnly { override def sizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.sizeInGb()).map(value => value: primitives.Integer) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DiskSnapshotInfo): ReadOnly = new Wrapper(impl)
  }
  type DiskSnapshotList = List[DiskSnapshot]
  sealed trait DiskSnapshotState { def unwrap: software.amazon.awssdk.services.lightsail.model.DiskSnapshotState }
  object DiskSnapshotState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.DiskSnapshotState): DiskSnapshotState = value match {
      case software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.PENDING => pending
      case software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.COMPLETED => completed
      case software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.ERROR => error
      case software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.UNKNOWN => unknown
    }
    final case object unknownToSdkVersion extends DiskSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskSnapshotState = software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.UNKNOWN_TO_SDK_VERSION }
    final case object pending extends DiskSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskSnapshotState = software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.PENDING }
    final case object completed extends DiskSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskSnapshotState = software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.COMPLETED }
    final case object error extends DiskSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskSnapshotState = software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.ERROR }
    final case object unknown extends DiskSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskSnapshotState = software.amazon.awssdk.services.lightsail.model.DiskSnapshotState.UNKNOWN }
  }
  sealed trait DiskState { def unwrap: software.amazon.awssdk.services.lightsail.model.DiskState }
  object DiskState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.DiskState): DiskState = value match {
      case software.amazon.awssdk.services.lightsail.model.DiskState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.DiskState.PENDING => pending
      case software.amazon.awssdk.services.lightsail.model.DiskState.ERROR => error
      case software.amazon.awssdk.services.lightsail.model.DiskState.AVAILABLE => available
      case software.amazon.awssdk.services.lightsail.model.DiskState.IN_USE => `in-use`
      case software.amazon.awssdk.services.lightsail.model.DiskState.UNKNOWN => unknown
    }
    final case object unknownToSdkVersion extends DiskState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskState = software.amazon.awssdk.services.lightsail.model.DiskState.UNKNOWN_TO_SDK_VERSION }
    final case object pending extends DiskState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskState = software.amazon.awssdk.services.lightsail.model.DiskState.PENDING }
    final case object error extends DiskState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskState = software.amazon.awssdk.services.lightsail.model.DiskState.ERROR }
    final case object available extends DiskState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskState = software.amazon.awssdk.services.lightsail.model.DiskState.AVAILABLE }
    final case object `in-use` extends DiskState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskState = software.amazon.awssdk.services.lightsail.model.DiskState.IN_USE }
    final case object unknown extends DiskState { override def unwrap: software.amazon.awssdk.services.lightsail.model.DiskState = software.amazon.awssdk.services.lightsail.model.DiskState.UNKNOWN }
  }
  case class DistributionBundle(bundleId: scala.Option[String] = None, name: scala.Option[String] = None, price: scala.Option[Float] = None, transferPerMonthInGb: scala.Option[primitives.Integer] = None, isActive: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DistributionBundle = {
      import DistributionBundle.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DistributionBundle.builder().optionallyWith(bundleId.map(value => value: java.lang.String))(_.bundleId).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(price.map(value => value: java.lang.Float))(_.price).optionallyWith(transferPerMonthInGb.map(value => value: java.lang.Integer))(_.transferPerMonthInGb).optionallyWith(isActive.map(value => value: java.lang.Boolean))(_.isActive).build()
    }
    def asReadOnly: DistributionBundle.ReadOnly = DistributionBundle.wrap(buildAwsValue())
  }
  object DistributionBundle {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DistributionBundle] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DistributionBundle = DistributionBundle(bundleIdValue.map(value => value), nameValue.map(value => value), priceValue.map(value => value), transferPerMonthInGbValue.map(value => value), isActiveValue.map(value => value))
      def bundleIdValue: scala.Option[String]
      def nameValue: scala.Option[String]
      def priceValue: scala.Option[Float]
      def transferPerMonthInGbValue: scala.Option[primitives.Integer]
      def isActiveValue: scala.Option[Boolean]
      def bundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundleId", bundleIdValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def price: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("price", priceValue)
      def transferPerMonthInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("transferPerMonthInGb", transferPerMonthInGbValue)
      def isActive: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isActive", isActiveValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DistributionBundle) extends DistributionBundle.ReadOnly {
      override def bundleIdValue: scala.Option[String] = scala.Option(impl.bundleId()).map(value => value: String)
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
      override def priceValue: scala.Option[Float] = scala.Option(impl.price()).map(value => value: Float)
      override def transferPerMonthInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.transferPerMonthInGb()).map(value => value: primitives.Integer)
      override def isActiveValue: scala.Option[Boolean] = scala.Option(impl.isActive()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DistributionBundle): ReadOnly = new Wrapper(impl)
  }
  type DistributionBundleList = List[DistributionBundle]
  type DistributionList = List[LightsailDistribution]
  sealed trait DistributionMetricName { def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName }
  object DistributionMetricName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.DistributionMetricName): DistributionMetricName = value match {
      case software.amazon.awssdk.services.lightsail.model.DistributionMetricName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.DistributionMetricName.REQUESTS => Requests
      case software.amazon.awssdk.services.lightsail.model.DistributionMetricName.BYTES_DOWNLOADED => BytesDownloaded
      case software.amazon.awssdk.services.lightsail.model.DistributionMetricName.BYTES_UPLOADED => BytesUploaded
      case software.amazon.awssdk.services.lightsail.model.DistributionMetricName.TOTAL_ERROR_RATE => TotalErrorRate
      case software.amazon.awssdk.services.lightsail.model.DistributionMetricName.HTTP4_XX_ERROR_RATE => Http4xxErrorRate
      case software.amazon.awssdk.services.lightsail.model.DistributionMetricName.HTTP5_XX_ERROR_RATE => Http5xxErrorRate
    }
    final case object unknownToSdkVersion extends DistributionMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName = software.amazon.awssdk.services.lightsail.model.DistributionMetricName.UNKNOWN_TO_SDK_VERSION }
    final case object Requests extends DistributionMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName = software.amazon.awssdk.services.lightsail.model.DistributionMetricName.REQUESTS }
    final case object BytesDownloaded extends DistributionMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName = software.amazon.awssdk.services.lightsail.model.DistributionMetricName.BYTES_DOWNLOADED }
    final case object BytesUploaded extends DistributionMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName = software.amazon.awssdk.services.lightsail.model.DistributionMetricName.BYTES_UPLOADED }
    final case object TotalErrorRate extends DistributionMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName = software.amazon.awssdk.services.lightsail.model.DistributionMetricName.TOTAL_ERROR_RATE }
    final case object Http4xxErrorRate extends DistributionMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName = software.amazon.awssdk.services.lightsail.model.DistributionMetricName.HTTP4_XX_ERROR_RATE }
    final case object Http5xxErrorRate extends DistributionMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.DistributionMetricName = software.amazon.awssdk.services.lightsail.model.DistributionMetricName.HTTP5_XX_ERROR_RATE }
  }
  case class Domain(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, domainEntries: scala.Option[Iterable[DomainEntry]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Domain = {
      import Domain.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Domain.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(domainEntries.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.domainEntries).build()
    }
    def asReadOnly: Domain.ReadOnly = Domain.wrap(buildAwsValue())
  }
  object Domain {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Domain] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Domain = Domain(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), domainEntriesValue.map(value => value.map { item => 
        item.editable
      }))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def domainEntriesValue: scala.Option[List[DomainEntry.ReadOnly]]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def domainEntries: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[DomainEntry.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainEntries", domainEntriesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Domain) extends Domain.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def domainEntriesValue: scala.Option[List[DomainEntry.ReadOnly]] = scala.Option(impl.domainEntries()).map(value => value.asScala.map { item => 
        DomainEntry.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Domain): ReadOnly = new Wrapper(impl)
  }
  case class DomainEntry(id: scala.Option[primitives.NonEmptyString] = None, name: scala.Option[primitives.DomainName] = None, target: scala.Option[String] = None, isAlias: scala.Option[Boolean] = None, `type`: scala.Option[primitives.DomainEntryType] = None, options: scala.Option[Map[primitives.DomainEntryOptionsKeys, String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DomainEntry = {
      import DomainEntry.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DomainEntry.builder().optionallyWith(id.map(value => value: java.lang.String))(_.id).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(target.map(value => value: java.lang.String))(_.target).optionallyWith(isAlias.map(value => value: java.lang.Boolean))(_.isAlias).optionallyWith(`type`.map(value => value: java.lang.String))(_.`type`).optionallyWith(options.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.options).build()
    }
    def asReadOnly: DomainEntry.ReadOnly = DomainEntry.wrap(buildAwsValue())
  }
  object DomainEntry {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DomainEntry] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DomainEntry = DomainEntry(idValue.map(value => value), nameValue.map(value => value), targetValue.map(value => value), isAliasValue.map(value => value), typeValue.map(value => value), optionsValue.map(value => value))
      def idValue: scala.Option[primitives.NonEmptyString]
      def nameValue: scala.Option[primitives.DomainName]
      def targetValue: scala.Option[String]
      def isAliasValue: scala.Option[Boolean]
      def typeValue: scala.Option[primitives.DomainEntryType]
      def optionsValue: scala.Option[Map[primitives.DomainEntryOptionsKeys, String]]
      def id: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("id", idValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def target: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("target", targetValue)
      def isAlias: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isAlias", isAliasValue)
      def `type`: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainEntryType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("type", typeValue)
      def options: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.DomainEntryOptionsKeys, String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("options", optionsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DomainEntry) extends DomainEntry.ReadOnly {
      override def idValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.id()).map(value => value: primitives.NonEmptyString)
      override def nameValue: scala.Option[primitives.DomainName] = scala.Option(impl.name()).map(value => value: primitives.DomainName)
      override def targetValue: scala.Option[String] = scala.Option(impl.target()).map(value => value: String)
      override def isAliasValue: scala.Option[Boolean] = scala.Option(impl.isAlias()).map(value => value: Boolean)
      override def typeValue: scala.Option[primitives.DomainEntryType] = scala.Option(impl.`type`()).map(value => value: primitives.DomainEntryType)
      override def optionsValue: scala.Option[Map[primitives.DomainEntryOptionsKeys, String]] = scala.Option(impl.options()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.DomainEntryOptionsKeys) -> (value: String)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DomainEntry): ReadOnly = new Wrapper(impl)
  }
  type DomainEntryList = List[DomainEntry]
  type DomainEntryOptions = Map[primitives.DomainEntryOptionsKeys, String]
  type DomainList = List[Domain]
  type DomainNameList = List[primitives.DomainName]
  case class DomainValidationRecord(domainName: scala.Option[primitives.DomainName] = None, resourceRecord: scala.Option[ResourceRecord] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DomainValidationRecord = {
      import DomainValidationRecord.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DomainValidationRecord.builder().optionallyWith(domainName.map(value => value: java.lang.String))(_.domainName).optionallyWith(resourceRecord.map(value => value.buildAwsValue()))(_.resourceRecord).build()
    }
    def asReadOnly: DomainValidationRecord.ReadOnly = DomainValidationRecord.wrap(buildAwsValue())
  }
  object DomainValidationRecord {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DomainValidationRecord] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DomainValidationRecord = DomainValidationRecord(domainNameValue.map(value => value), resourceRecordValue.map(value => value.editable))
      def domainNameValue: scala.Option[primitives.DomainName]
      def resourceRecordValue: scala.Option[ResourceRecord.ReadOnly]
      def domainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainName", domainNameValue)
      def resourceRecord: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceRecord.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceRecord", resourceRecordValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DomainValidationRecord) extends DomainValidationRecord.ReadOnly {
      override def domainNameValue: scala.Option[primitives.DomainName] = scala.Option(impl.domainName()).map(value => value: primitives.DomainName)
      override def resourceRecordValue: scala.Option[ResourceRecord.ReadOnly] = scala.Option(impl.resourceRecord()).map(value => ResourceRecord.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DomainValidationRecord): ReadOnly = new Wrapper(impl)
  }
  type DomainValidationRecordList = List[DomainValidationRecord]
  case class DownloadDefaultKeyPairRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairRequest = {
      import DownloadDefaultKeyPairRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairRequest.builder().build()
    }
    def asReadOnly: DownloadDefaultKeyPairRequest.ReadOnly = DownloadDefaultKeyPairRequest.wrap(buildAwsValue())
  }
  object DownloadDefaultKeyPairRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DownloadDefaultKeyPairRequest = DownloadDefaultKeyPairRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairRequest) extends DownloadDefaultKeyPairRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairRequest): ReadOnly = new Wrapper(impl)
  }
  case class DownloadDefaultKeyPairResponse(publicKeyBase64: scala.Option[primitives.Base64] = None, privateKeyBase64: scala.Option[primitives.Base64] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairResponse = {
      import DownloadDefaultKeyPairResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairResponse.builder().optionallyWith(publicKeyBase64.map(value => value: java.lang.String))(_.publicKeyBase64).optionallyWith(privateKeyBase64.map(value => value: java.lang.String))(_.privateKeyBase64).build()
    }
    def asReadOnly: DownloadDefaultKeyPairResponse.ReadOnly = DownloadDefaultKeyPairResponse.wrap(buildAwsValue())
  }
  object DownloadDefaultKeyPairResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DownloadDefaultKeyPairResponse = DownloadDefaultKeyPairResponse(publicKeyBase64Value.map(value => value), privateKeyBase64Value.map(value => value))
      def publicKeyBase64Value: scala.Option[primitives.Base64]
      def privateKeyBase64Value: scala.Option[primitives.Base64]
      def publicKeyBase64: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Base64] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicKeyBase64", publicKeyBase64Value)
      def privateKeyBase64: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Base64] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("privateKeyBase64", privateKeyBase64Value)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairResponse) extends DownloadDefaultKeyPairResponse.ReadOnly {
      override def publicKeyBase64Value: scala.Option[primitives.Base64] = scala.Option(impl.publicKeyBase64()).map(value => value: primitives.Base64)
      override def privateKeyBase64Value: scala.Option[primitives.Base64] = scala.Option(impl.privateKeyBase64()).map(value => value: primitives.Base64)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.DownloadDefaultKeyPairResponse): ReadOnly = new Wrapper(impl)
  }
  case class EnableAddOnRequest(resourceName: primitives.ResourceName, addOnRequest: AddOnRequest) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.EnableAddOnRequest = {
      import EnableAddOnRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.EnableAddOnRequest.builder().resourceName(resourceName: java.lang.String).addOnRequest(addOnRequest.buildAwsValue()).build()
    }
    def asReadOnly: EnableAddOnRequest.ReadOnly = EnableAddOnRequest.wrap(buildAwsValue())
  }
  object EnableAddOnRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.EnableAddOnRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: EnableAddOnRequest = EnableAddOnRequest(resourceNameValue, addOnRequestValue.editable)
      def resourceNameValue: primitives.ResourceName
      def addOnRequestValue: AddOnRequest.ReadOnly
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
      def addOnRequest: ZIO[Any, Nothing, AddOnRequest.ReadOnly] = ZIO.succeed(addOnRequestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.EnableAddOnRequest) extends EnableAddOnRequest.ReadOnly {
      override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName
      override def addOnRequestValue: AddOnRequest.ReadOnly = AddOnRequest.wrap(impl.addOnRequest())
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.EnableAddOnRequest): ReadOnly = new Wrapper(impl)
  }
  case class EnableAddOnResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.EnableAddOnResponse = {
      import EnableAddOnResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.EnableAddOnResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: EnableAddOnResponse.ReadOnly = EnableAddOnResponse.wrap(buildAwsValue())
  }
  object EnableAddOnResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.EnableAddOnResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: EnableAddOnResponse = EnableAddOnResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.EnableAddOnResponse) extends EnableAddOnResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.EnableAddOnResponse): ReadOnly = new Wrapper(impl)
  }
  case class EndpointRequest(containerName: String, containerPort: primitives.Integer, healthCheck: scala.Option[ContainerServiceHealthCheckConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.EndpointRequest = {
      import EndpointRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.EndpointRequest.builder().containerName(containerName: java.lang.String).containerPort(containerPort: java.lang.Integer).optionallyWith(healthCheck.map(value => value.buildAwsValue()))(_.healthCheck).build()
    }
    def asReadOnly: EndpointRequest.ReadOnly = EndpointRequest.wrap(buildAwsValue())
  }
  object EndpointRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.EndpointRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: EndpointRequest = EndpointRequest(containerNameValue, containerPortValue, healthCheckValue.map(value => value.editable))
      def containerNameValue: String
      def containerPortValue: primitives.Integer
      def healthCheckValue: scala.Option[ContainerServiceHealthCheckConfig.ReadOnly]
      def containerName: ZIO[Any, Nothing, String] = ZIO.succeed(containerNameValue)
      def containerPort: ZIO[Any, Nothing, primitives.Integer] = ZIO.succeed(containerPortValue)
      def healthCheck: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceHealthCheckConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("healthCheck", healthCheckValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.EndpointRequest) extends EndpointRequest.ReadOnly {
      override def containerNameValue: String = impl.containerName(): String
      override def containerPortValue: primitives.Integer = impl.containerPort(): primitives.Integer
      override def healthCheckValue: scala.Option[ContainerServiceHealthCheckConfig.ReadOnly] = scala.Option(impl.healthCheck()).map(value => ContainerServiceHealthCheckConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.EndpointRequest): ReadOnly = new Wrapper(impl)
  }
  type Environment = Map[String, String]
  case class ExportSnapshotRecord(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, state: scala.Option[RecordState] = None, sourceInfo: scala.Option[ExportSnapshotRecordSourceInfo] = None, destinationInfo: scala.Option[DestinationInfo] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecord = {
      import ExportSnapshotRecord.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecord.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(sourceInfo.map(value => value.buildAwsValue()))(_.sourceInfo).optionallyWith(destinationInfo.map(value => value.buildAwsValue()))(_.destinationInfo).build()
    }
    def asReadOnly: ExportSnapshotRecord.ReadOnly = ExportSnapshotRecord.wrap(buildAwsValue())
  }
  object ExportSnapshotRecord {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecord] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportSnapshotRecord = ExportSnapshotRecord(nameValue.map(value => value), arnValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), stateValue.map(value => value), sourceInfoValue.map(value => value.editable), destinationInfoValue.map(value => value.editable))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def stateValue: scala.Option[RecordState]
      def sourceInfoValue: scala.Option[ExportSnapshotRecordSourceInfo.ReadOnly]
      def destinationInfoValue: scala.Option[DestinationInfo.ReadOnly]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RecordState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def sourceInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportSnapshotRecordSourceInfo.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceInfo", sourceInfoValue)
      def destinationInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DestinationInfo.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationInfo", destinationInfoValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecord) extends ExportSnapshotRecord.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def stateValue: scala.Option[RecordState] = scala.Option(impl.state()).map(value => RecordState.wrap(value))
      override def sourceInfoValue: scala.Option[ExportSnapshotRecordSourceInfo.ReadOnly] = scala.Option(impl.sourceInfo()).map(value => ExportSnapshotRecordSourceInfo.wrap(value))
      override def destinationInfoValue: scala.Option[DestinationInfo.ReadOnly] = scala.Option(impl.destinationInfo()).map(value => DestinationInfo.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecord): ReadOnly = new Wrapper(impl)
  }
  type ExportSnapshotRecordList = List[ExportSnapshotRecord]
  case class ExportSnapshotRecordSourceInfo(resourceType: scala.Option[ExportSnapshotRecordSourceType] = None, createdAt: scala.Option[primitives.IsoDate] = None, name: scala.Option[primitives.NonEmptyString] = None, arn: scala.Option[primitives.NonEmptyString] = None, fromResourceName: scala.Option[primitives.NonEmptyString] = None, fromResourceArn: scala.Option[primitives.NonEmptyString] = None, instanceSnapshotInfo: scala.Option[InstanceSnapshotInfo] = None, diskSnapshotInfo: scala.Option[DiskSnapshotInfo] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceInfo = {
      import ExportSnapshotRecordSourceInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceInfo.builder().optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(fromResourceName.map(value => value: java.lang.String))(_.fromResourceName).optionallyWith(fromResourceArn.map(value => value: java.lang.String))(_.fromResourceArn).optionallyWith(instanceSnapshotInfo.map(value => value.buildAwsValue()))(_.instanceSnapshotInfo).optionallyWith(diskSnapshotInfo.map(value => value.buildAwsValue()))(_.diskSnapshotInfo).build()
    }
    def asReadOnly: ExportSnapshotRecordSourceInfo.ReadOnly = ExportSnapshotRecordSourceInfo.wrap(buildAwsValue())
  }
  object ExportSnapshotRecordSourceInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportSnapshotRecordSourceInfo = ExportSnapshotRecordSourceInfo(resourceTypeValue.map(value => value), createdAtValue.map(value => value), nameValue.map(value => value), arnValue.map(value => value), fromResourceNameValue.map(value => value), fromResourceArnValue.map(value => value), instanceSnapshotInfoValue.map(value => value.editable), diskSnapshotInfoValue.map(value => value.editable))
      def resourceTypeValue: scala.Option[ExportSnapshotRecordSourceType]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def nameValue: scala.Option[primitives.NonEmptyString]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def fromResourceNameValue: scala.Option[primitives.NonEmptyString]
      def fromResourceArnValue: scala.Option[primitives.NonEmptyString]
      def instanceSnapshotInfoValue: scala.Option[InstanceSnapshotInfo.ReadOnly]
      def diskSnapshotInfoValue: scala.Option[DiskSnapshotInfo.ReadOnly]
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExportSnapshotRecordSourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def fromResourceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromResourceName", fromResourceNameValue)
      def fromResourceArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromResourceArn", fromResourceArnValue)
      def instanceSnapshotInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceSnapshotInfo.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceSnapshotInfo", instanceSnapshotInfoValue)
      def diskSnapshotInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DiskSnapshotInfo.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskSnapshotInfo", diskSnapshotInfoValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceInfo) extends ExportSnapshotRecordSourceInfo.ReadOnly {
      override def resourceTypeValue: scala.Option[ExportSnapshotRecordSourceType] = scala.Option(impl.resourceType()).map(value => ExportSnapshotRecordSourceType.wrap(value))
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def nameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.name()).map(value => value: primitives.NonEmptyString)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def fromResourceNameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromResourceName()).map(value => value: primitives.NonEmptyString)
      override def fromResourceArnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromResourceArn()).map(value => value: primitives.NonEmptyString)
      override def instanceSnapshotInfoValue: scala.Option[InstanceSnapshotInfo.ReadOnly] = scala.Option(impl.instanceSnapshotInfo()).map(value => InstanceSnapshotInfo.wrap(value))
      override def diskSnapshotInfoValue: scala.Option[DiskSnapshotInfo.ReadOnly] = scala.Option(impl.diskSnapshotInfo()).map(value => DiskSnapshotInfo.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceInfo): ReadOnly = new Wrapper(impl)
  }
  sealed trait ExportSnapshotRecordSourceType { def unwrap: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType }
  object ExportSnapshotRecordSourceType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType): ExportSnapshotRecordSourceType = value match {
      case software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType.INSTANCE_SNAPSHOT => InstanceSnapshot
      case software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType.DISK_SNAPSHOT => DiskSnapshot
    }
    final case object unknownToSdkVersion extends ExportSnapshotRecordSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType = software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType.UNKNOWN_TO_SDK_VERSION }
    final case object InstanceSnapshot extends ExportSnapshotRecordSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType = software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType.INSTANCE_SNAPSHOT }
    final case object DiskSnapshot extends ExportSnapshotRecordSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType = software.amazon.awssdk.services.lightsail.model.ExportSnapshotRecordSourceType.DISK_SNAPSHOT }
  }
  case class ExportSnapshotRequest(sourceSnapshotName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ExportSnapshotRequest = {
      import ExportSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ExportSnapshotRequest.builder().sourceSnapshotName(sourceSnapshotName: java.lang.String).build()
    }
    def asReadOnly: ExportSnapshotRequest.ReadOnly = ExportSnapshotRequest.wrap(buildAwsValue())
  }
  object ExportSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ExportSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportSnapshotRequest = ExportSnapshotRequest(sourceSnapshotNameValue)
      def sourceSnapshotNameValue: primitives.ResourceName
      def sourceSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(sourceSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRequest) extends ExportSnapshotRequest.ReadOnly { override def sourceSnapshotNameValue: primitives.ResourceName = impl.sourceSnapshotName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class ExportSnapshotResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ExportSnapshotResponse = {
      import ExportSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ExportSnapshotResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: ExportSnapshotResponse.ReadOnly = ExportSnapshotResponse.wrap(buildAwsValue())
  }
  object ExportSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ExportSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExportSnapshotResponse = ExportSnapshotResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotResponse) extends ExportSnapshotResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ExportSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait ForwardValues { def unwrap: software.amazon.awssdk.services.lightsail.model.ForwardValues }
  object ForwardValues {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ForwardValues): ForwardValues = value match {
      case software.amazon.awssdk.services.lightsail.model.ForwardValues.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ForwardValues.NONE => none
      case software.amazon.awssdk.services.lightsail.model.ForwardValues.ALLOW_LIST => `allow-list`
      case software.amazon.awssdk.services.lightsail.model.ForwardValues.ALL => all
    }
    final case object unknownToSdkVersion extends ForwardValues { override def unwrap: software.amazon.awssdk.services.lightsail.model.ForwardValues = software.amazon.awssdk.services.lightsail.model.ForwardValues.UNKNOWN_TO_SDK_VERSION }
    final case object none extends ForwardValues { override def unwrap: software.amazon.awssdk.services.lightsail.model.ForwardValues = software.amazon.awssdk.services.lightsail.model.ForwardValues.NONE }
    final case object `allow-list` extends ForwardValues { override def unwrap: software.amazon.awssdk.services.lightsail.model.ForwardValues = software.amazon.awssdk.services.lightsail.model.ForwardValues.ALLOW_LIST }
    final case object all extends ForwardValues { override def unwrap: software.amazon.awssdk.services.lightsail.model.ForwardValues = software.amazon.awssdk.services.lightsail.model.ForwardValues.ALL }
  }
  case class GetActiveNamesRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetActiveNamesRequest = {
      import GetActiveNamesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetActiveNamesRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetActiveNamesRequest.ReadOnly = GetActiveNamesRequest.wrap(buildAwsValue())
  }
  object GetActiveNamesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetActiveNamesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetActiveNamesRequest = GetActiveNamesRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetActiveNamesRequest) extends GetActiveNamesRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetActiveNamesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetActiveNamesResponse(activeNames: scala.Option[Iterable[String]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetActiveNamesResponse = {
      import GetActiveNamesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetActiveNamesResponse.builder().optionallyWith(activeNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.activeNames).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetActiveNamesResponse.ReadOnly = GetActiveNamesResponse.wrap(buildAwsValue())
  }
  object GetActiveNamesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetActiveNamesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetActiveNamesResponse = GetActiveNamesResponse(activeNamesValue.map(value => value), nextPageTokenValue.map(value => value))
      def activeNamesValue: scala.Option[List[String]]
      def nextPageTokenValue: scala.Option[String]
      def activeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activeNames", activeNamesValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetActiveNamesResponse) extends GetActiveNamesResponse.ReadOnly {
      override def activeNamesValue: scala.Option[List[String]] = scala.Option(impl.activeNames()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetActiveNamesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetAlarmsRequest(alarmName: scala.Option[primitives.ResourceName] = None, pageToken: scala.Option[String] = None, monitoredResourceName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetAlarmsRequest = {
      import GetAlarmsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetAlarmsRequest.builder().optionallyWith(alarmName.map(value => value: java.lang.String))(_.alarmName).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).optionallyWith(monitoredResourceName.map(value => value: java.lang.String))(_.monitoredResourceName).build()
    }
    def asReadOnly: GetAlarmsRequest.ReadOnly = GetAlarmsRequest.wrap(buildAwsValue())
  }
  object GetAlarmsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetAlarmsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetAlarmsRequest = GetAlarmsRequest(alarmNameValue.map(value => value), pageTokenValue.map(value => value), monitoredResourceNameValue.map(value => value))
      def alarmNameValue: scala.Option[primitives.ResourceName]
      def pageTokenValue: scala.Option[String]
      def monitoredResourceNameValue: scala.Option[primitives.ResourceName]
      def alarmName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("alarmName", alarmNameValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
      def monitoredResourceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("monitoredResourceName", monitoredResourceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetAlarmsRequest) extends GetAlarmsRequest.ReadOnly {
      override def alarmNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.alarmName()).map(value => value: primitives.ResourceName)
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
      override def monitoredResourceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.monitoredResourceName()).map(value => value: primitives.ResourceName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetAlarmsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetAlarmsResponse(alarms: scala.Option[Iterable[Alarm]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetAlarmsResponse = {
      import GetAlarmsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetAlarmsResponse.builder().optionallyWith(alarms.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.alarms).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetAlarmsResponse.ReadOnly = GetAlarmsResponse.wrap(buildAwsValue())
  }
  object GetAlarmsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetAlarmsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetAlarmsResponse = GetAlarmsResponse(alarmsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def alarmsValue: scala.Option[List[Alarm.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def alarms: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Alarm.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("alarms", alarmsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetAlarmsResponse) extends GetAlarmsResponse.ReadOnly {
      override def alarmsValue: scala.Option[List[Alarm.ReadOnly]] = scala.Option(impl.alarms()).map(value => value.asScala.map { item => 
        Alarm.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetAlarmsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetAutoSnapshotsRequest(resourceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsRequest = {
      import GetAutoSnapshotsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsRequest.builder().resourceName(resourceName: java.lang.String).build()
    }
    def asReadOnly: GetAutoSnapshotsRequest.ReadOnly = GetAutoSnapshotsRequest.wrap(buildAwsValue())
  }
  object GetAutoSnapshotsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetAutoSnapshotsRequest = GetAutoSnapshotsRequest(resourceNameValue)
      def resourceNameValue: primitives.ResourceName
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsRequest) extends GetAutoSnapshotsRequest.ReadOnly { override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetAutoSnapshotsResponse(resourceName: scala.Option[primitives.ResourceName] = None, resourceType: scala.Option[ResourceType] = None, autoSnapshots: scala.Option[Iterable[AutoSnapshotDetails]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsResponse = {
      import GetAutoSnapshotsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsResponse.builder().optionallyWith(resourceName.map(value => value: java.lang.String))(_.resourceName).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(autoSnapshots.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.autoSnapshots).build()
    }
    def asReadOnly: GetAutoSnapshotsResponse.ReadOnly = GetAutoSnapshotsResponse.wrap(buildAwsValue())
  }
  object GetAutoSnapshotsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetAutoSnapshotsResponse = GetAutoSnapshotsResponse(resourceNameValue.map(value => value), resourceTypeValue.map(value => value), autoSnapshotsValue.map(value => value.map { item => 
        item.editable
      }))
      def resourceNameValue: scala.Option[primitives.ResourceName]
      def resourceTypeValue: scala.Option[ResourceType]
      def autoSnapshotsValue: scala.Option[List[AutoSnapshotDetails.ReadOnly]]
      def resourceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceName", resourceNameValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def autoSnapshots: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AutoSnapshotDetails.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("autoSnapshots", autoSnapshotsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsResponse) extends GetAutoSnapshotsResponse.ReadOnly {
      override def resourceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.resourceName()).map(value => value: primitives.ResourceName)
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def autoSnapshotsValue: scala.Option[List[AutoSnapshotDetails.ReadOnly]] = scala.Option(impl.autoSnapshots()).map(value => value.asScala.map { item => 
        AutoSnapshotDetails.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetAutoSnapshotsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetBlueprintsRequest(includeInactive: scala.Option[Boolean] = None, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetBlueprintsRequest = {
      import GetBlueprintsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetBlueprintsRequest.builder().optionallyWith(includeInactive.map(value => value: java.lang.Boolean))(_.includeInactive).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetBlueprintsRequest.ReadOnly = GetBlueprintsRequest.wrap(buildAwsValue())
  }
  object GetBlueprintsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetBlueprintsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetBlueprintsRequest = GetBlueprintsRequest(includeInactiveValue.map(value => value), pageTokenValue.map(value => value))
      def includeInactiveValue: scala.Option[Boolean]
      def pageTokenValue: scala.Option[String]
      def includeInactive: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("includeInactive", includeInactiveValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetBlueprintsRequest) extends GetBlueprintsRequest.ReadOnly {
      override def includeInactiveValue: scala.Option[Boolean] = scala.Option(impl.includeInactive()).map(value => value: Boolean)
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetBlueprintsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetBlueprintsResponse(blueprints: scala.Option[Iterable[Blueprint]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetBlueprintsResponse = {
      import GetBlueprintsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetBlueprintsResponse.builder().optionallyWith(blueprints.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.blueprints).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetBlueprintsResponse.ReadOnly = GetBlueprintsResponse.wrap(buildAwsValue())
  }
  object GetBlueprintsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetBlueprintsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetBlueprintsResponse = GetBlueprintsResponse(blueprintsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def blueprintsValue: scala.Option[List[Blueprint.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def blueprints: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Blueprint.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("blueprints", blueprintsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetBlueprintsResponse) extends GetBlueprintsResponse.ReadOnly {
      override def blueprintsValue: scala.Option[List[Blueprint.ReadOnly]] = scala.Option(impl.blueprints()).map(value => value.asScala.map { item => 
        Blueprint.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetBlueprintsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetBundlesRequest(includeInactive: scala.Option[Boolean] = None, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetBundlesRequest = {
      import GetBundlesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetBundlesRequest.builder().optionallyWith(includeInactive.map(value => value: java.lang.Boolean))(_.includeInactive).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetBundlesRequest.ReadOnly = GetBundlesRequest.wrap(buildAwsValue())
  }
  object GetBundlesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetBundlesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetBundlesRequest = GetBundlesRequest(includeInactiveValue.map(value => value), pageTokenValue.map(value => value))
      def includeInactiveValue: scala.Option[Boolean]
      def pageTokenValue: scala.Option[String]
      def includeInactive: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("includeInactive", includeInactiveValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetBundlesRequest) extends GetBundlesRequest.ReadOnly {
      override def includeInactiveValue: scala.Option[Boolean] = scala.Option(impl.includeInactive()).map(value => value: Boolean)
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetBundlesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetBundlesResponse(bundles: scala.Option[Iterable[Bundle]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetBundlesResponse = {
      import GetBundlesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetBundlesResponse.builder().optionallyWith(bundles.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.bundles).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetBundlesResponse.ReadOnly = GetBundlesResponse.wrap(buildAwsValue())
  }
  object GetBundlesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetBundlesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetBundlesResponse = GetBundlesResponse(bundlesValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def bundlesValue: scala.Option[List[Bundle.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def bundles: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Bundle.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundles", bundlesValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetBundlesResponse) extends GetBundlesResponse.ReadOnly {
      override def bundlesValue: scala.Option[List[Bundle.ReadOnly]] = scala.Option(impl.bundles()).map(value => value.asScala.map { item => 
        Bundle.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetBundlesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetCertificatesRequest(certificateStatuses: scala.Option[Iterable[CertificateStatus]] = None, includeCertificateDetails: scala.Option[primitives.IncludeCertificateDetails] = None, certificateName: scala.Option[primitives.CertificateName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetCertificatesRequest = {
      import GetCertificatesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetCertificatesRequest.builder().optionallyWith(certificateStatuses.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.certificateStatusesWithStrings).optionallyWith(includeCertificateDetails.map(value => value: java.lang.Boolean))(_.includeCertificateDetails).optionallyWith(certificateName.map(value => value: java.lang.String))(_.certificateName).build()
    }
    def asReadOnly: GetCertificatesRequest.ReadOnly = GetCertificatesRequest.wrap(buildAwsValue())
  }
  object GetCertificatesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetCertificatesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetCertificatesRequest = GetCertificatesRequest(certificateStatusesValue.map(value => value), includeCertificateDetailsValue.map(value => value), certificateNameValue.map(value => value))
      def certificateStatusesValue: scala.Option[List[CertificateStatus]]
      def includeCertificateDetailsValue: scala.Option[primitives.IncludeCertificateDetails]
      def certificateNameValue: scala.Option[primitives.CertificateName]
      def certificateStatuses: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[CertificateStatus]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateStatuses", certificateStatusesValue)
      def includeCertificateDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IncludeCertificateDetails] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("includeCertificateDetails", includeCertificateDetailsValue)
      def certificateName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.CertificateName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateName", certificateNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetCertificatesRequest) extends GetCertificatesRequest.ReadOnly {
      override def certificateStatusesValue: scala.Option[List[CertificateStatus]] = scala.Option(impl.certificateStatuses()).map(value => value.asScala.map { item => 
        CertificateStatus.wrap(item)
      }.toList)
      override def includeCertificateDetailsValue: scala.Option[primitives.IncludeCertificateDetails] = scala.Option(impl.includeCertificateDetails()).map(value => value: primitives.IncludeCertificateDetails)
      override def certificateNameValue: scala.Option[primitives.CertificateName] = scala.Option(impl.certificateName()).map(value => value: primitives.CertificateName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetCertificatesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetCertificatesResponse(certificates: scala.Option[Iterable[CertificateSummary]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetCertificatesResponse = {
      import GetCertificatesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetCertificatesResponse.builder().optionallyWith(certificates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.certificates).build()
    }
    def asReadOnly: GetCertificatesResponse.ReadOnly = GetCertificatesResponse.wrap(buildAwsValue())
  }
  object GetCertificatesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetCertificatesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetCertificatesResponse = GetCertificatesResponse(certificatesValue.map(value => value.map { item => 
        item.editable
      }))
      def certificatesValue: scala.Option[List[CertificateSummary.ReadOnly]]
      def certificates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[CertificateSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificates", certificatesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetCertificatesResponse) extends GetCertificatesResponse.ReadOnly {
      override def certificatesValue: scala.Option[List[CertificateSummary.ReadOnly]] = scala.Option(impl.certificates()).map(value => value.asScala.map { item => 
        CertificateSummary.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetCertificatesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetCloudFormationStackRecordsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsRequest = {
      import GetCloudFormationStackRecordsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetCloudFormationStackRecordsRequest.ReadOnly = GetCloudFormationStackRecordsRequest.wrap(buildAwsValue())
  }
  object GetCloudFormationStackRecordsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetCloudFormationStackRecordsRequest = GetCloudFormationStackRecordsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsRequest) extends GetCloudFormationStackRecordsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetCloudFormationStackRecordsResponse(cloudFormationStackRecords: scala.Option[Iterable[CloudFormationStackRecord]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsResponse = {
      import GetCloudFormationStackRecordsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsResponse.builder().optionallyWith(cloudFormationStackRecords.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.cloudFormationStackRecords).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetCloudFormationStackRecordsResponse.ReadOnly = GetCloudFormationStackRecordsResponse.wrap(buildAwsValue())
  }
  object GetCloudFormationStackRecordsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetCloudFormationStackRecordsResponse = GetCloudFormationStackRecordsResponse(cloudFormationStackRecordsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def cloudFormationStackRecordsValue: scala.Option[List[CloudFormationStackRecord.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def cloudFormationStackRecords: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[CloudFormationStackRecord.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cloudFormationStackRecords", cloudFormationStackRecordsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsResponse) extends GetCloudFormationStackRecordsResponse.ReadOnly {
      override def cloudFormationStackRecordsValue: scala.Option[List[CloudFormationStackRecord.ReadOnly]] = scala.Option(impl.cloudFormationStackRecords()).map(value => value.asScala.map { item => 
        CloudFormationStackRecord.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetCloudFormationStackRecordsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContactMethodsRequest(protocols: scala.Option[Iterable[ContactProtocol]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContactMethodsRequest = {
      import GetContactMethodsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContactMethodsRequest.builder().optionallyWith(protocols.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.protocolsWithStrings).build()
    }
    def asReadOnly: GetContactMethodsRequest.ReadOnly = GetContactMethodsRequest.wrap(buildAwsValue())
  }
  object GetContactMethodsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContactMethodsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContactMethodsRequest = GetContactMethodsRequest(protocolsValue.map(value => value))
      def protocolsValue: scala.Option[List[ContactProtocol]]
      def protocols: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContactProtocol]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocols", protocolsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContactMethodsRequest) extends GetContactMethodsRequest.ReadOnly {
      override def protocolsValue: scala.Option[List[ContactProtocol]] = scala.Option(impl.protocols()).map(value => value.asScala.map { item => 
        ContactProtocol.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContactMethodsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContactMethodsResponse(contactMethods: scala.Option[Iterable[ContactMethod]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContactMethodsResponse = {
      import GetContactMethodsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContactMethodsResponse.builder().optionallyWith(contactMethods.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.contactMethods).build()
    }
    def asReadOnly: GetContactMethodsResponse.ReadOnly = GetContactMethodsResponse.wrap(buildAwsValue())
  }
  object GetContactMethodsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContactMethodsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContactMethodsResponse = GetContactMethodsResponse(contactMethodsValue.map(value => value.map { item => 
        item.editable
      }))
      def contactMethodsValue: scala.Option[List[ContactMethod.ReadOnly]]
      def contactMethods: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContactMethod.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contactMethods", contactMethodsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContactMethodsResponse) extends GetContactMethodsResponse.ReadOnly {
      override def contactMethodsValue: scala.Option[List[ContactMethod.ReadOnly]] = scala.Option(impl.contactMethods()).map(value => value.asScala.map { item => 
        ContactMethod.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContactMethodsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerApiMetadataRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataRequest = {
      import GetContainerApiMetadataRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataRequest.builder().build()
    }
    def asReadOnly: GetContainerApiMetadataRequest.ReadOnly = GetContainerApiMetadataRequest.wrap(buildAwsValue())
  }
  object GetContainerApiMetadataRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: GetContainerApiMetadataRequest = GetContainerApiMetadataRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataRequest) extends GetContainerApiMetadataRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerApiMetadataResponse(metadata: scala.Option[Iterable[Map[String, String]]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataResponse = {
      import GetContainerApiMetadataResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataResponse.builder().optionallyWith(metadata.map(value => value.map { item => 
        item.map({
          case (key, value) =>
            (key: java.lang.String) -> (value: java.lang.String)
        }).asJava
      }.asJavaCollection))(_.metadata).build()
    }
    def asReadOnly: GetContainerApiMetadataResponse.ReadOnly = GetContainerApiMetadataResponse.wrap(buildAwsValue())
  }
  object GetContainerApiMetadataResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerApiMetadataResponse = GetContainerApiMetadataResponse(metadataValue.map(value => value))
      def metadataValue: scala.Option[List[Map[String, String]]]
      def metadata: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Map[String, String]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metadata", metadataValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataResponse) extends GetContainerApiMetadataResponse.ReadOnly {
      override def metadataValue: scala.Option[List[Map[String, String]]] = scala.Option(impl.metadata()).map(value => value.asScala.map { item => 
        item.asScala.map({
          case (key, value) =>
            (key: String) -> (value: String)
        }).toMap
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerApiMetadataResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerImagesRequest(serviceName: primitives.ContainerServiceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerImagesRequest = {
      import GetContainerImagesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerImagesRequest.builder().serviceName(serviceName: java.lang.String).build()
    }
    def asReadOnly: GetContainerImagesRequest.ReadOnly = GetContainerImagesRequest.wrap(buildAwsValue())
  }
  object GetContainerImagesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerImagesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerImagesRequest = GetContainerImagesRequest(serviceNameValue)
      def serviceNameValue: primitives.ContainerServiceName
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerImagesRequest) extends GetContainerImagesRequest.ReadOnly { override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerImagesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerImagesResponse(containerImages: scala.Option[Iterable[ContainerImage]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerImagesResponse = {
      import GetContainerImagesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerImagesResponse.builder().optionallyWith(containerImages.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.containerImages).build()
    }
    def asReadOnly: GetContainerImagesResponse.ReadOnly = GetContainerImagesResponse.wrap(buildAwsValue())
  }
  object GetContainerImagesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerImagesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerImagesResponse = GetContainerImagesResponse(containerImagesValue.map(value => value.map { item => 
        item.editable
      }))
      def containerImagesValue: scala.Option[List[ContainerImage.ReadOnly]]
      def containerImages: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContainerImage.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerImages", containerImagesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerImagesResponse) extends GetContainerImagesResponse.ReadOnly {
      override def containerImagesValue: scala.Option[List[ContainerImage.ReadOnly]] = scala.Option(impl.containerImages()).map(value => value.asScala.map { item => 
        ContainerImage.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerImagesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerLogRequest(serviceName: primitives.ContainerServiceName, containerName: String, startTime: scala.Option[primitives.IsoDate] = None, endTime: scala.Option[primitives.IsoDate] = None, filterPattern: scala.Option[String] = None, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerLogRequest = {
      import GetContainerLogRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerLogRequest.builder().serviceName(serviceName: java.lang.String).containerName(containerName: java.lang.String).optionallyWith(startTime.map(value => value: java.time.Instant))(_.startTime).optionallyWith(endTime.map(value => value: java.time.Instant))(_.endTime).optionallyWith(filterPattern.map(value => value: java.lang.String))(_.filterPattern).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetContainerLogRequest.ReadOnly = GetContainerLogRequest.wrap(buildAwsValue())
  }
  object GetContainerLogRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerLogRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerLogRequest = GetContainerLogRequest(serviceNameValue, containerNameValue, startTimeValue.map(value => value), endTimeValue.map(value => value), filterPatternValue.map(value => value), pageTokenValue.map(value => value))
      def serviceNameValue: primitives.ContainerServiceName
      def containerNameValue: String
      def startTimeValue: scala.Option[primitives.IsoDate]
      def endTimeValue: scala.Option[primitives.IsoDate]
      def filterPatternValue: scala.Option[String]
      def pageTokenValue: scala.Option[String]
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
      def containerName: ZIO[Any, Nothing, String] = ZIO.succeed(containerNameValue)
      def startTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startTime", startTimeValue)
      def endTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("endTime", endTimeValue)
      def filterPattern: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("filterPattern", filterPatternValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerLogRequest) extends GetContainerLogRequest.ReadOnly {
      override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName
      override def containerNameValue: String = impl.containerName(): String
      override def startTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.startTime()).map(value => value: primitives.IsoDate)
      override def endTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.endTime()).map(value => value: primitives.IsoDate)
      override def filterPatternValue: scala.Option[String] = scala.Option(impl.filterPattern()).map(value => value: String)
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerLogRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerLogResponse(logEvents: scala.Option[Iterable[ContainerServiceLogEvent]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerLogResponse = {
      import GetContainerLogResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerLogResponse.builder().optionallyWith(logEvents.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.logEvents).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetContainerLogResponse.ReadOnly = GetContainerLogResponse.wrap(buildAwsValue())
  }
  object GetContainerLogResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerLogResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerLogResponse = GetContainerLogResponse(logEventsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def logEventsValue: scala.Option[List[ContainerServiceLogEvent.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def logEvents: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContainerServiceLogEvent.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("logEvents", logEventsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerLogResponse) extends GetContainerLogResponse.ReadOnly {
      override def logEventsValue: scala.Option[List[ContainerServiceLogEvent.ReadOnly]] = scala.Option(impl.logEvents()).map(value => value.asScala.map { item => 
        ContainerServiceLogEvent.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerLogResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServiceDeploymentsRequest(serviceName: primitives.ContainerServiceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsRequest = {
      import GetContainerServiceDeploymentsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsRequest.builder().serviceName(serviceName: java.lang.String).build()
    }
    def asReadOnly: GetContainerServiceDeploymentsRequest.ReadOnly = GetContainerServiceDeploymentsRequest.wrap(buildAwsValue())
  }
  object GetContainerServiceDeploymentsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerServiceDeploymentsRequest = GetContainerServiceDeploymentsRequest(serviceNameValue)
      def serviceNameValue: primitives.ContainerServiceName
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsRequest) extends GetContainerServiceDeploymentsRequest.ReadOnly { override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServiceDeploymentsResponse(deployments: scala.Option[Iterable[ContainerServiceDeployment]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsResponse = {
      import GetContainerServiceDeploymentsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsResponse.builder().optionallyWith(deployments.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.deployments).build()
    }
    def asReadOnly: GetContainerServiceDeploymentsResponse.ReadOnly = GetContainerServiceDeploymentsResponse.wrap(buildAwsValue())
  }
  object GetContainerServiceDeploymentsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerServiceDeploymentsResponse = GetContainerServiceDeploymentsResponse(deploymentsValue.map(value => value.map { item => 
        item.editable
      }))
      def deploymentsValue: scala.Option[List[ContainerServiceDeployment.ReadOnly]]
      def deployments: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContainerServiceDeployment.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("deployments", deploymentsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsResponse) extends GetContainerServiceDeploymentsResponse.ReadOnly {
      override def deploymentsValue: scala.Option[List[ContainerServiceDeployment.ReadOnly]] = scala.Option(impl.deployments()).map(value => value.asScala.map { item => 
        ContainerServiceDeployment.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceDeploymentsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServiceMetricDataRequest(serviceName: primitives.ContainerServiceName, metricName: ContainerServiceMetricName, startTime: primitives.IsoDate, endTime: primitives.IsoDate, period: primitives.MetricPeriod, statistics: Iterable[MetricStatistic]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataRequest = {
      import GetContainerServiceMetricDataRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataRequest.builder().serviceName(serviceName: java.lang.String).metricName(metricName.unwrap).startTime(startTime: java.time.Instant).endTime(endTime: java.time.Instant).period(period: java.lang.Integer).statisticsWithStrings(statistics.map { item => 
        item.unwrap.toString
      }.asJavaCollection).build()
    }
    def asReadOnly: GetContainerServiceMetricDataRequest.ReadOnly = GetContainerServiceMetricDataRequest.wrap(buildAwsValue())
  }
  object GetContainerServiceMetricDataRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerServiceMetricDataRequest = GetContainerServiceMetricDataRequest(serviceNameValue, metricNameValue, startTimeValue, endTimeValue, periodValue, statisticsValue)
      def serviceNameValue: primitives.ContainerServiceName
      def metricNameValue: ContainerServiceMetricName
      def startTimeValue: primitives.IsoDate
      def endTimeValue: primitives.IsoDate
      def periodValue: primitives.MetricPeriod
      def statisticsValue: List[MetricStatistic]
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
      def metricName: ZIO[Any, Nothing, ContainerServiceMetricName] = ZIO.succeed(metricNameValue)
      def startTime: ZIO[Any, Nothing, primitives.IsoDate] = ZIO.succeed(startTimeValue)
      def endTime: ZIO[Any, Nothing, primitives.IsoDate] = ZIO.succeed(endTimeValue)
      def period: ZIO[Any, Nothing, primitives.MetricPeriod] = ZIO.succeed(periodValue)
      def statistics: ZIO[Any, Nothing, List[MetricStatistic]] = ZIO.succeed(statisticsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataRequest) extends GetContainerServiceMetricDataRequest.ReadOnly {
      override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName
      override def metricNameValue: ContainerServiceMetricName = ContainerServiceMetricName.wrap(impl.metricName())
      override def startTimeValue: primitives.IsoDate = impl.startTime(): primitives.IsoDate
      override def endTimeValue: primitives.IsoDate = impl.endTime(): primitives.IsoDate
      override def periodValue: primitives.MetricPeriod = impl.period(): primitives.MetricPeriod
      override def statisticsValue: List[MetricStatistic] = impl.statistics().asScala.map { item => 
        MetricStatistic.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServiceMetricDataResponse(metricName: scala.Option[ContainerServiceMetricName] = None, metricData: scala.Option[Iterable[MetricDatapoint]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataResponse = {
      import GetContainerServiceMetricDataResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataResponse.builder().optionallyWith(metricName.map(value => value.unwrap))(_.metricName).optionallyWith(metricData.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.metricData).build()
    }
    def asReadOnly: GetContainerServiceMetricDataResponse.ReadOnly = GetContainerServiceMetricDataResponse.wrap(buildAwsValue())
  }
  object GetContainerServiceMetricDataResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerServiceMetricDataResponse = GetContainerServiceMetricDataResponse(metricNameValue.map(value => value), metricDataValue.map(value => value.map { item => 
        item.editable
      }))
      def metricNameValue: scala.Option[ContainerServiceMetricName]
      def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]]
      def metricName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServiceMetricName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricName", metricNameValue)
      def metricData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[MetricDatapoint.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricData", metricDataValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataResponse) extends GetContainerServiceMetricDataResponse.ReadOnly {
      override def metricNameValue: scala.Option[ContainerServiceMetricName] = scala.Option(impl.metricName()).map(value => ContainerServiceMetricName.wrap(value))
      override def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]] = scala.Option(impl.metricData()).map(value => value.asScala.map { item => 
        MetricDatapoint.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServiceMetricDataResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServicePowersRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersRequest = {
      import GetContainerServicePowersRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersRequest.builder().build()
    }
    def asReadOnly: GetContainerServicePowersRequest.ReadOnly = GetContainerServicePowersRequest.wrap(buildAwsValue())
  }
  object GetContainerServicePowersRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: GetContainerServicePowersRequest = GetContainerServicePowersRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersRequest) extends GetContainerServicePowersRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServicePowersResponse(powers: scala.Option[Iterable[ContainerServicePower]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersResponse = {
      import GetContainerServicePowersResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersResponse.builder().optionallyWith(powers.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.powers).build()
    }
    def asReadOnly: GetContainerServicePowersResponse.ReadOnly = GetContainerServicePowersResponse.wrap(buildAwsValue())
  }
  object GetContainerServicePowersResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerServicePowersResponse = GetContainerServicePowersResponse(powersValue.map(value => value.map { item => 
        item.editable
      }))
      def powersValue: scala.Option[List[ContainerServicePower.ReadOnly]]
      def powers: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContainerServicePower.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("powers", powersValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersResponse) extends GetContainerServicePowersResponse.ReadOnly {
      override def powersValue: scala.Option[List[ContainerServicePower.ReadOnly]] = scala.Option(impl.powers()).map(value => value.asScala.map { item => 
        ContainerServicePower.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicePowersResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServicesRequest(serviceName: scala.Option[primitives.ContainerServiceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServicesRequest = {
      import GetContainerServicesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServicesRequest.builder().optionallyWith(serviceName.map(value => value: java.lang.String))(_.serviceName).build()
    }
    def asReadOnly: GetContainerServicesRequest.ReadOnly = GetContainerServicesRequest.wrap(buildAwsValue())
  }
  object GetContainerServicesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServicesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerServicesRequest = GetContainerServicesRequest(serviceNameValue.map(value => value))
      def serviceNameValue: scala.Option[primitives.ContainerServiceName]
      def serviceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ContainerServiceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serviceName", serviceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicesRequest) extends GetContainerServicesRequest.ReadOnly { override def serviceNameValue: scala.Option[primitives.ContainerServiceName] = scala.Option(impl.serviceName()).map(value => value: primitives.ContainerServiceName) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetContainerServicesResponse(containerServices: scala.Option[Iterable[ContainerService]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetContainerServicesResponse = {
      import GetContainerServicesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetContainerServicesResponse.builder().optionallyWith(containerServices.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.containerServices).build()
    }
    def asReadOnly: GetContainerServicesResponse.ReadOnly = GetContainerServicesResponse.wrap(buildAwsValue())
  }
  object GetContainerServicesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetContainerServicesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetContainerServicesResponse = GetContainerServicesResponse(containerServicesValue.map(value => value.map { item => 
        item.editable
      }))
      def containerServicesValue: scala.Option[List[ContainerService.ReadOnly]]
      def containerServices: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContainerService.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerServices", containerServicesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicesResponse) extends GetContainerServicesResponse.ReadOnly {
      override def containerServicesValue: scala.Option[List[ContainerService.ReadOnly]] = scala.Option(impl.containerServices()).map(value => value.asScala.map { item => 
        ContainerService.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetContainerServicesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDiskRequest(diskName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDiskRequest = {
      import GetDiskRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDiskRequest.builder().diskName(diskName: java.lang.String).build()
    }
    def asReadOnly: GetDiskRequest.ReadOnly = GetDiskRequest.wrap(buildAwsValue())
  }
  object GetDiskRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDiskRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDiskRequest = GetDiskRequest(diskNameValue)
      def diskNameValue: primitives.ResourceName
      def diskName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDiskRequest) extends GetDiskRequest.ReadOnly { override def diskNameValue: primitives.ResourceName = impl.diskName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDiskRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDiskResponse(disk: scala.Option[Disk] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDiskResponse = {
      import GetDiskResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDiskResponse.builder().optionallyWith(disk.map(value => value.buildAwsValue()))(_.disk).build()
    }
    def asReadOnly: GetDiskResponse.ReadOnly = GetDiskResponse.wrap(buildAwsValue())
  }
  object GetDiskResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDiskResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDiskResponse = GetDiskResponse(diskValue.map(value => value.editable))
      def diskValue: scala.Option[Disk.ReadOnly]
      def disk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Disk.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("disk", diskValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDiskResponse) extends GetDiskResponse.ReadOnly { override def diskValue: scala.Option[Disk.ReadOnly] = scala.Option(impl.disk()).map(value => Disk.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDiskResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDiskSnapshotRequest(diskSnapshotName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotRequest = {
      import GetDiskSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotRequest.builder().diskSnapshotName(diskSnapshotName: java.lang.String).build()
    }
    def asReadOnly: GetDiskSnapshotRequest.ReadOnly = GetDiskSnapshotRequest.wrap(buildAwsValue())
  }
  object GetDiskSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDiskSnapshotRequest = GetDiskSnapshotRequest(diskSnapshotNameValue)
      def diskSnapshotNameValue: primitives.ResourceName
      def diskSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(diskSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotRequest) extends GetDiskSnapshotRequest.ReadOnly { override def diskSnapshotNameValue: primitives.ResourceName = impl.diskSnapshotName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDiskSnapshotResponse(diskSnapshot: scala.Option[DiskSnapshot] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotResponse = {
      import GetDiskSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotResponse.builder().optionallyWith(diskSnapshot.map(value => value.buildAwsValue()))(_.diskSnapshot).build()
    }
    def asReadOnly: GetDiskSnapshotResponse.ReadOnly = GetDiskSnapshotResponse.wrap(buildAwsValue())
  }
  object GetDiskSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDiskSnapshotResponse = GetDiskSnapshotResponse(diskSnapshotValue.map(value => value.editable))
      def diskSnapshotValue: scala.Option[DiskSnapshot.ReadOnly]
      def diskSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DiskSnapshot.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskSnapshot", diskSnapshotValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotResponse) extends GetDiskSnapshotResponse.ReadOnly { override def diskSnapshotValue: scala.Option[DiskSnapshot.ReadOnly] = scala.Option(impl.diskSnapshot()).map(value => DiskSnapshot.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDiskSnapshotsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsRequest = {
      import GetDiskSnapshotsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetDiskSnapshotsRequest.ReadOnly = GetDiskSnapshotsRequest.wrap(buildAwsValue())
  }
  object GetDiskSnapshotsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDiskSnapshotsRequest = GetDiskSnapshotsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsRequest) extends GetDiskSnapshotsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDiskSnapshotsResponse(diskSnapshots: scala.Option[Iterable[DiskSnapshot]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsResponse = {
      import GetDiskSnapshotsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsResponse.builder().optionallyWith(diskSnapshots.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.diskSnapshots).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetDiskSnapshotsResponse.ReadOnly = GetDiskSnapshotsResponse.wrap(buildAwsValue())
  }
  object GetDiskSnapshotsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDiskSnapshotsResponse = GetDiskSnapshotsResponse(diskSnapshotsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def diskSnapshotsValue: scala.Option[List[DiskSnapshot.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def diskSnapshots: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[DiskSnapshot.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskSnapshots", diskSnapshotsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsResponse) extends GetDiskSnapshotsResponse.ReadOnly {
      override def diskSnapshotsValue: scala.Option[List[DiskSnapshot.ReadOnly]] = scala.Option(impl.diskSnapshots()).map(value => value.asScala.map { item => 
        DiskSnapshot.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDiskSnapshotsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDisksRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDisksRequest = {
      import GetDisksRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDisksRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetDisksRequest.ReadOnly = GetDisksRequest.wrap(buildAwsValue())
  }
  object GetDisksRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDisksRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDisksRequest = GetDisksRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDisksRequest) extends GetDisksRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDisksRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDisksResponse(disks: scala.Option[Iterable[Disk]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDisksResponse = {
      import GetDisksResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDisksResponse.builder().optionallyWith(disks.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.disks).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetDisksResponse.ReadOnly = GetDisksResponse.wrap(buildAwsValue())
  }
  object GetDisksResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDisksResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDisksResponse = GetDisksResponse(disksValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def disksValue: scala.Option[List[Disk.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def disks: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Disk.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("disks", disksValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDisksResponse) extends GetDisksResponse.ReadOnly {
      override def disksValue: scala.Option[List[Disk.ReadOnly]] = scala.Option(impl.disks()).map(value => value.asScala.map { item => 
        Disk.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDisksResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionBundlesRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesRequest = {
      import GetDistributionBundlesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesRequest.builder().build()
    }
    def asReadOnly: GetDistributionBundlesRequest.ReadOnly = GetDistributionBundlesRequest.wrap(buildAwsValue())
  }
  object GetDistributionBundlesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: GetDistributionBundlesRequest = GetDistributionBundlesRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesRequest) extends GetDistributionBundlesRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionBundlesResponse(bundles: scala.Option[Iterable[DistributionBundle]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesResponse = {
      import GetDistributionBundlesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesResponse.builder().optionallyWith(bundles.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.bundles).build()
    }
    def asReadOnly: GetDistributionBundlesResponse.ReadOnly = GetDistributionBundlesResponse.wrap(buildAwsValue())
  }
  object GetDistributionBundlesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDistributionBundlesResponse = GetDistributionBundlesResponse(bundlesValue.map(value => value.map { item => 
        item.editable
      }))
      def bundlesValue: scala.Option[List[DistributionBundle.ReadOnly]]
      def bundles: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[DistributionBundle.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundles", bundlesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesResponse) extends GetDistributionBundlesResponse.ReadOnly {
      override def bundlesValue: scala.Option[List[DistributionBundle.ReadOnly]] = scala.Option(impl.bundles()).map(value => value.asScala.map { item => 
        DistributionBundle.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionBundlesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionLatestCacheResetRequest(distributionName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetRequest = {
      import GetDistributionLatestCacheResetRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetRequest.builder().optionallyWith(distributionName.map(value => value: java.lang.String))(_.distributionName).build()
    }
    def asReadOnly: GetDistributionLatestCacheResetRequest.ReadOnly = GetDistributionLatestCacheResetRequest.wrap(buildAwsValue())
  }
  object GetDistributionLatestCacheResetRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDistributionLatestCacheResetRequest = GetDistributionLatestCacheResetRequest(distributionNameValue.map(value => value))
      def distributionNameValue: scala.Option[primitives.ResourceName]
      def distributionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("distributionName", distributionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetRequest) extends GetDistributionLatestCacheResetRequest.ReadOnly { override def distributionNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.distributionName()).map(value => value: primitives.ResourceName) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionLatestCacheResetResponse(status: scala.Option[String] = None, createTime: scala.Option[primitives.IsoDate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetResponse = {
      import GetDistributionLatestCacheResetResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetResponse.builder().optionallyWith(status.map(value => value: java.lang.String))(_.status).optionallyWith(createTime.map(value => value: java.time.Instant))(_.createTime).build()
    }
    def asReadOnly: GetDistributionLatestCacheResetResponse.ReadOnly = GetDistributionLatestCacheResetResponse.wrap(buildAwsValue())
  }
  object GetDistributionLatestCacheResetResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDistributionLatestCacheResetResponse = GetDistributionLatestCacheResetResponse(statusValue.map(value => value), createTimeValue.map(value => value))
      def statusValue: scala.Option[String]
      def createTimeValue: scala.Option[primitives.IsoDate]
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def createTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createTime", createTimeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetResponse) extends GetDistributionLatestCacheResetResponse.ReadOnly {
      override def statusValue: scala.Option[String] = scala.Option(impl.status()).map(value => value: String)
      override def createTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createTime()).map(value => value: primitives.IsoDate)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionLatestCacheResetResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionMetricDataRequest(distributionName: primitives.ResourceName, metricName: DistributionMetricName, startTime: primitives.Timestamp, endTime: primitives.Timestamp, period: primitives.MetricPeriod, unit: MetricUnit, statistics: Iterable[MetricStatistic]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataRequest = {
      import GetDistributionMetricDataRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataRequest.builder().distributionName(distributionName: java.lang.String).metricName(metricName.unwrap).startTime(startTime: java.time.Instant).endTime(endTime: java.time.Instant).period(period: java.lang.Integer).unit(unit.unwrap).statisticsWithStrings(statistics.map { item => 
        item.unwrap.toString
      }.asJavaCollection).build()
    }
    def asReadOnly: GetDistributionMetricDataRequest.ReadOnly = GetDistributionMetricDataRequest.wrap(buildAwsValue())
  }
  object GetDistributionMetricDataRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDistributionMetricDataRequest = GetDistributionMetricDataRequest(distributionNameValue, metricNameValue, startTimeValue, endTimeValue, periodValue, unitValue, statisticsValue)
      def distributionNameValue: primitives.ResourceName
      def metricNameValue: DistributionMetricName
      def startTimeValue: primitives.Timestamp
      def endTimeValue: primitives.Timestamp
      def periodValue: primitives.MetricPeriod
      def unitValue: MetricUnit
      def statisticsValue: List[MetricStatistic]
      def distributionName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(distributionNameValue)
      def metricName: ZIO[Any, Nothing, DistributionMetricName] = ZIO.succeed(metricNameValue)
      def startTime: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(startTimeValue)
      def endTime: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(endTimeValue)
      def period: ZIO[Any, Nothing, primitives.MetricPeriod] = ZIO.succeed(periodValue)
      def unit: ZIO[Any, Nothing, MetricUnit] = ZIO.succeed(unitValue)
      def statistics: ZIO[Any, Nothing, List[MetricStatistic]] = ZIO.succeed(statisticsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataRequest) extends GetDistributionMetricDataRequest.ReadOnly {
      override def distributionNameValue: primitives.ResourceName = impl.distributionName(): primitives.ResourceName
      override def metricNameValue: DistributionMetricName = DistributionMetricName.wrap(impl.metricName())
      override def startTimeValue: primitives.Timestamp = impl.startTime(): primitives.Timestamp
      override def endTimeValue: primitives.Timestamp = impl.endTime(): primitives.Timestamp
      override def periodValue: primitives.MetricPeriod = impl.period(): primitives.MetricPeriod
      override def unitValue: MetricUnit = MetricUnit.wrap(impl.unit())
      override def statisticsValue: List[MetricStatistic] = impl.statistics().asScala.map { item => 
        MetricStatistic.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionMetricDataResponse(metricName: scala.Option[DistributionMetricName] = None, metricData: scala.Option[Iterable[MetricDatapoint]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataResponse = {
      import GetDistributionMetricDataResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataResponse.builder().optionallyWith(metricName.map(value => value.unwrap))(_.metricName).optionallyWith(metricData.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.metricData).build()
    }
    def asReadOnly: GetDistributionMetricDataResponse.ReadOnly = GetDistributionMetricDataResponse.wrap(buildAwsValue())
  }
  object GetDistributionMetricDataResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDistributionMetricDataResponse = GetDistributionMetricDataResponse(metricNameValue.map(value => value), metricDataValue.map(value => value.map { item => 
        item.editable
      }))
      def metricNameValue: scala.Option[DistributionMetricName]
      def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]]
      def metricName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DistributionMetricName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricName", metricNameValue)
      def metricData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[MetricDatapoint.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricData", metricDataValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataResponse) extends GetDistributionMetricDataResponse.ReadOnly {
      override def metricNameValue: scala.Option[DistributionMetricName] = scala.Option(impl.metricName()).map(value => DistributionMetricName.wrap(value))
      override def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]] = scala.Option(impl.metricData()).map(value => value.asScala.map { item => 
        MetricDatapoint.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionMetricDataResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionsRequest(distributionName: scala.Option[primitives.ResourceName] = None, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionsRequest = {
      import GetDistributionsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionsRequest.builder().optionallyWith(distributionName.map(value => value: java.lang.String))(_.distributionName).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetDistributionsRequest.ReadOnly = GetDistributionsRequest.wrap(buildAwsValue())
  }
  object GetDistributionsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDistributionsRequest = GetDistributionsRequest(distributionNameValue.map(value => value), pageTokenValue.map(value => value))
      def distributionNameValue: scala.Option[primitives.ResourceName]
      def pageTokenValue: scala.Option[String]
      def distributionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("distributionName", distributionNameValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionsRequest) extends GetDistributionsRequest.ReadOnly {
      override def distributionNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.distributionName()).map(value => value: primitives.ResourceName)
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDistributionsResponse(distributions: scala.Option[Iterable[LightsailDistribution]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDistributionsResponse = {
      import GetDistributionsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDistributionsResponse.builder().optionallyWith(distributions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.distributions).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetDistributionsResponse.ReadOnly = GetDistributionsResponse.wrap(buildAwsValue())
  }
  object GetDistributionsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDistributionsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDistributionsResponse = GetDistributionsResponse(distributionsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def distributionsValue: scala.Option[List[LightsailDistribution.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def distributions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LightsailDistribution.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("distributions", distributionsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionsResponse) extends GetDistributionsResponse.ReadOnly {
      override def distributionsValue: scala.Option[List[LightsailDistribution.ReadOnly]] = scala.Option(impl.distributions()).map(value => value.asScala.map { item => 
        LightsailDistribution.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDistributionsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDomainRequest(domainName: primitives.DomainName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDomainRequest = {
      import GetDomainRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDomainRequest.builder().domainName(domainName: java.lang.String).build()
    }
    def asReadOnly: GetDomainRequest.ReadOnly = GetDomainRequest.wrap(buildAwsValue())
  }
  object GetDomainRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDomainRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDomainRequest = GetDomainRequest(domainNameValue)
      def domainNameValue: primitives.DomainName
      def domainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDomainRequest) extends GetDomainRequest.ReadOnly { override def domainNameValue: primitives.DomainName = impl.domainName(): primitives.DomainName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDomainRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDomainResponse(domain: scala.Option[Domain] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDomainResponse = {
      import GetDomainResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDomainResponse.builder().optionallyWith(domain.map(value => value.buildAwsValue()))(_.domain).build()
    }
    def asReadOnly: GetDomainResponse.ReadOnly = GetDomainResponse.wrap(buildAwsValue())
  }
  object GetDomainResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDomainResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDomainResponse = GetDomainResponse(domainValue.map(value => value.editable))
      def domainValue: scala.Option[Domain.ReadOnly]
      def domain: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Domain.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domain", domainValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDomainResponse) extends GetDomainResponse.ReadOnly { override def domainValue: scala.Option[Domain.ReadOnly] = scala.Option(impl.domain()).map(value => Domain.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDomainResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetDomainsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDomainsRequest = {
      import GetDomainsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDomainsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetDomainsRequest.ReadOnly = GetDomainsRequest.wrap(buildAwsValue())
  }
  object GetDomainsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDomainsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDomainsRequest = GetDomainsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDomainsRequest) extends GetDomainsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDomainsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetDomainsResponse(domains: scala.Option[Iterable[Domain]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetDomainsResponse = {
      import GetDomainsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetDomainsResponse.builder().optionallyWith(domains.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.domains).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetDomainsResponse.ReadOnly = GetDomainsResponse.wrap(buildAwsValue())
  }
  object GetDomainsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetDomainsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetDomainsResponse = GetDomainsResponse(domainsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def domainsValue: scala.Option[List[Domain.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def domains: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Domain.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domains", domainsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetDomainsResponse) extends GetDomainsResponse.ReadOnly {
      override def domainsValue: scala.Option[List[Domain.ReadOnly]] = scala.Option(impl.domains()).map(value => value.asScala.map { item => 
        Domain.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetDomainsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetExportSnapshotRecordsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsRequest = {
      import GetExportSnapshotRecordsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetExportSnapshotRecordsRequest.ReadOnly = GetExportSnapshotRecordsRequest.wrap(buildAwsValue())
  }
  object GetExportSnapshotRecordsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetExportSnapshotRecordsRequest = GetExportSnapshotRecordsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsRequest) extends GetExportSnapshotRecordsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetExportSnapshotRecordsResponse(exportSnapshotRecords: scala.Option[Iterable[ExportSnapshotRecord]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsResponse = {
      import GetExportSnapshotRecordsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsResponse.builder().optionallyWith(exportSnapshotRecords.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.exportSnapshotRecords).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetExportSnapshotRecordsResponse.ReadOnly = GetExportSnapshotRecordsResponse.wrap(buildAwsValue())
  }
  object GetExportSnapshotRecordsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetExportSnapshotRecordsResponse = GetExportSnapshotRecordsResponse(exportSnapshotRecordsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def exportSnapshotRecordsValue: scala.Option[List[ExportSnapshotRecord.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def exportSnapshotRecords: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ExportSnapshotRecord.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exportSnapshotRecords", exportSnapshotRecordsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsResponse) extends GetExportSnapshotRecordsResponse.ReadOnly {
      override def exportSnapshotRecordsValue: scala.Option[List[ExportSnapshotRecord.ReadOnly]] = scala.Option(impl.exportSnapshotRecords()).map(value => value.asScala.map { item => 
        ExportSnapshotRecord.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetExportSnapshotRecordsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceAccessDetailsRequest(instanceName: primitives.ResourceName, protocol: scala.Option[InstanceAccessProtocol] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsRequest = {
      import GetInstanceAccessDetailsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsRequest.builder().instanceName(instanceName: java.lang.String).optionallyWith(protocol.map(value => value.unwrap))(_.protocol).build()
    }
    def asReadOnly: GetInstanceAccessDetailsRequest.ReadOnly = GetInstanceAccessDetailsRequest.wrap(buildAwsValue())
  }
  object GetInstanceAccessDetailsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceAccessDetailsRequest = GetInstanceAccessDetailsRequest(instanceNameValue, protocolValue.map(value => value))
      def instanceNameValue: primitives.ResourceName
      def protocolValue: scala.Option[InstanceAccessProtocol]
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
      def protocol: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceAccessProtocol] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocol", protocolValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsRequest) extends GetInstanceAccessDetailsRequest.ReadOnly {
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
      override def protocolValue: scala.Option[InstanceAccessProtocol] = scala.Option(impl.protocol()).map(value => InstanceAccessProtocol.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceAccessDetailsResponse(accessDetails: scala.Option[InstanceAccessDetails] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsResponse = {
      import GetInstanceAccessDetailsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsResponse.builder().optionallyWith(accessDetails.map(value => value.buildAwsValue()))(_.accessDetails).build()
    }
    def asReadOnly: GetInstanceAccessDetailsResponse.ReadOnly = GetInstanceAccessDetailsResponse.wrap(buildAwsValue())
  }
  object GetInstanceAccessDetailsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceAccessDetailsResponse = GetInstanceAccessDetailsResponse(accessDetailsValue.map(value => value.editable))
      def accessDetailsValue: scala.Option[InstanceAccessDetails.ReadOnly]
      def accessDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceAccessDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessDetails", accessDetailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsResponse) extends GetInstanceAccessDetailsResponse.ReadOnly { override def accessDetailsValue: scala.Option[InstanceAccessDetails.ReadOnly] = scala.Option(impl.accessDetails()).map(value => InstanceAccessDetails.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceAccessDetailsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceMetricDataRequest(instanceName: primitives.ResourceName, metricName: InstanceMetricName, period: primitives.MetricPeriod, startTime: primitives.Timestamp, endTime: primitives.Timestamp, unit: MetricUnit, statistics: Iterable[MetricStatistic]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataRequest = {
      import GetInstanceMetricDataRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataRequest.builder().instanceName(instanceName: java.lang.String).metricName(metricName.unwrap).period(period: java.lang.Integer).startTime(startTime: java.time.Instant).endTime(endTime: java.time.Instant).unit(unit.unwrap).statisticsWithStrings(statistics.map { item => 
        item.unwrap.toString
      }.asJavaCollection).build()
    }
    def asReadOnly: GetInstanceMetricDataRequest.ReadOnly = GetInstanceMetricDataRequest.wrap(buildAwsValue())
  }
  object GetInstanceMetricDataRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceMetricDataRequest = GetInstanceMetricDataRequest(instanceNameValue, metricNameValue, periodValue, startTimeValue, endTimeValue, unitValue, statisticsValue)
      def instanceNameValue: primitives.ResourceName
      def metricNameValue: InstanceMetricName
      def periodValue: primitives.MetricPeriod
      def startTimeValue: primitives.Timestamp
      def endTimeValue: primitives.Timestamp
      def unitValue: MetricUnit
      def statisticsValue: List[MetricStatistic]
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
      def metricName: ZIO[Any, Nothing, InstanceMetricName] = ZIO.succeed(metricNameValue)
      def period: ZIO[Any, Nothing, primitives.MetricPeriod] = ZIO.succeed(periodValue)
      def startTime: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(startTimeValue)
      def endTime: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(endTimeValue)
      def unit: ZIO[Any, Nothing, MetricUnit] = ZIO.succeed(unitValue)
      def statistics: ZIO[Any, Nothing, List[MetricStatistic]] = ZIO.succeed(statisticsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataRequest) extends GetInstanceMetricDataRequest.ReadOnly {
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
      override def metricNameValue: InstanceMetricName = InstanceMetricName.wrap(impl.metricName())
      override def periodValue: primitives.MetricPeriod = impl.period(): primitives.MetricPeriod
      override def startTimeValue: primitives.Timestamp = impl.startTime(): primitives.Timestamp
      override def endTimeValue: primitives.Timestamp = impl.endTime(): primitives.Timestamp
      override def unitValue: MetricUnit = MetricUnit.wrap(impl.unit())
      override def statisticsValue: List[MetricStatistic] = impl.statistics().asScala.map { item => 
        MetricStatistic.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceMetricDataResponse(metricName: scala.Option[InstanceMetricName] = None, metricData: scala.Option[Iterable[MetricDatapoint]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataResponse = {
      import GetInstanceMetricDataResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataResponse.builder().optionallyWith(metricName.map(value => value.unwrap))(_.metricName).optionallyWith(metricData.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.metricData).build()
    }
    def asReadOnly: GetInstanceMetricDataResponse.ReadOnly = GetInstanceMetricDataResponse.wrap(buildAwsValue())
  }
  object GetInstanceMetricDataResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceMetricDataResponse = GetInstanceMetricDataResponse(metricNameValue.map(value => value), metricDataValue.map(value => value.map { item => 
        item.editable
      }))
      def metricNameValue: scala.Option[InstanceMetricName]
      def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]]
      def metricName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceMetricName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricName", metricNameValue)
      def metricData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[MetricDatapoint.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricData", metricDataValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataResponse) extends GetInstanceMetricDataResponse.ReadOnly {
      override def metricNameValue: scala.Option[InstanceMetricName] = scala.Option(impl.metricName()).map(value => InstanceMetricName.wrap(value))
      override def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]] = scala.Option(impl.metricData()).map(value => value.asScala.map { item => 
        MetricDatapoint.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceMetricDataResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstancePortStatesRequest(instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesRequest = {
      import GetInstancePortStatesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesRequest.builder().instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: GetInstancePortStatesRequest.ReadOnly = GetInstancePortStatesRequest.wrap(buildAwsValue())
  }
  object GetInstancePortStatesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstancePortStatesRequest = GetInstancePortStatesRequest(instanceNameValue)
      def instanceNameValue: primitives.ResourceName
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesRequest) extends GetInstancePortStatesRequest.ReadOnly { override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstancePortStatesResponse(portStates: scala.Option[Iterable[InstancePortState]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesResponse = {
      import GetInstancePortStatesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesResponse.builder().optionallyWith(portStates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.portStates).build()
    }
    def asReadOnly: GetInstancePortStatesResponse.ReadOnly = GetInstancePortStatesResponse.wrap(buildAwsValue())
  }
  object GetInstancePortStatesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstancePortStatesResponse = GetInstancePortStatesResponse(portStatesValue.map(value => value.map { item => 
        item.editable
      }))
      def portStatesValue: scala.Option[List[InstancePortState.ReadOnly]]
      def portStates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[InstancePortState.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("portStates", portStatesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesResponse) extends GetInstancePortStatesResponse.ReadOnly {
      override def portStatesValue: scala.Option[List[InstancePortState.ReadOnly]] = scala.Option(impl.portStates()).map(value => value.asScala.map { item => 
        InstancePortState.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstancePortStatesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceRequest(instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceRequest = {
      import GetInstanceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceRequest.builder().instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: GetInstanceRequest.ReadOnly = GetInstanceRequest.wrap(buildAwsValue())
  }
  object GetInstanceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceRequest = GetInstanceRequest(instanceNameValue)
      def instanceNameValue: primitives.ResourceName
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceRequest) extends GetInstanceRequest.ReadOnly { override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceResponse(instance: scala.Option[Instance] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceResponse = {
      import GetInstanceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceResponse.builder().optionallyWith(instance.map(value => value.buildAwsValue()))(_.instance).build()
    }
    def asReadOnly: GetInstanceResponse.ReadOnly = GetInstanceResponse.wrap(buildAwsValue())
  }
  object GetInstanceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceResponse = GetInstanceResponse(instanceValue.map(value => value.editable))
      def instanceValue: scala.Option[Instance.ReadOnly]
      def instance: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Instance.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instance", instanceValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceResponse) extends GetInstanceResponse.ReadOnly { override def instanceValue: scala.Option[Instance.ReadOnly] = scala.Option(impl.instance()).map(value => Instance.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceSnapshotRequest(instanceSnapshotName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotRequest = {
      import GetInstanceSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotRequest.builder().instanceSnapshotName(instanceSnapshotName: java.lang.String).build()
    }
    def asReadOnly: GetInstanceSnapshotRequest.ReadOnly = GetInstanceSnapshotRequest.wrap(buildAwsValue())
  }
  object GetInstanceSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceSnapshotRequest = GetInstanceSnapshotRequest(instanceSnapshotNameValue)
      def instanceSnapshotNameValue: primitives.ResourceName
      def instanceSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotRequest) extends GetInstanceSnapshotRequest.ReadOnly { override def instanceSnapshotNameValue: primitives.ResourceName = impl.instanceSnapshotName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceSnapshotResponse(instanceSnapshot: scala.Option[InstanceSnapshot] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotResponse = {
      import GetInstanceSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotResponse.builder().optionallyWith(instanceSnapshot.map(value => value.buildAwsValue()))(_.instanceSnapshot).build()
    }
    def asReadOnly: GetInstanceSnapshotResponse.ReadOnly = GetInstanceSnapshotResponse.wrap(buildAwsValue())
  }
  object GetInstanceSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceSnapshotResponse = GetInstanceSnapshotResponse(instanceSnapshotValue.map(value => value.editable))
      def instanceSnapshotValue: scala.Option[InstanceSnapshot.ReadOnly]
      def instanceSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceSnapshot.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceSnapshot", instanceSnapshotValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotResponse) extends GetInstanceSnapshotResponse.ReadOnly { override def instanceSnapshotValue: scala.Option[InstanceSnapshot.ReadOnly] = scala.Option(impl.instanceSnapshot()).map(value => InstanceSnapshot.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceSnapshotsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsRequest = {
      import GetInstanceSnapshotsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetInstanceSnapshotsRequest.ReadOnly = GetInstanceSnapshotsRequest.wrap(buildAwsValue())
  }
  object GetInstanceSnapshotsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceSnapshotsRequest = GetInstanceSnapshotsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsRequest) extends GetInstanceSnapshotsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceSnapshotsResponse(instanceSnapshots: scala.Option[Iterable[InstanceSnapshot]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsResponse = {
      import GetInstanceSnapshotsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsResponse.builder().optionallyWith(instanceSnapshots.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.instanceSnapshots).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetInstanceSnapshotsResponse.ReadOnly = GetInstanceSnapshotsResponse.wrap(buildAwsValue())
  }
  object GetInstanceSnapshotsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceSnapshotsResponse = GetInstanceSnapshotsResponse(instanceSnapshotsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def instanceSnapshotsValue: scala.Option[List[InstanceSnapshot.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def instanceSnapshots: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[InstanceSnapshot.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceSnapshots", instanceSnapshotsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsResponse) extends GetInstanceSnapshotsResponse.ReadOnly {
      override def instanceSnapshotsValue: scala.Option[List[InstanceSnapshot.ReadOnly]] = scala.Option(impl.instanceSnapshots()).map(value => value.asScala.map { item => 
        InstanceSnapshot.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceSnapshotsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceStateRequest(instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceStateRequest = {
      import GetInstanceStateRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceStateRequest.builder().instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: GetInstanceStateRequest.ReadOnly = GetInstanceStateRequest.wrap(buildAwsValue())
  }
  object GetInstanceStateRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceStateRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceStateRequest = GetInstanceStateRequest(instanceNameValue)
      def instanceNameValue: primitives.ResourceName
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceStateRequest) extends GetInstanceStateRequest.ReadOnly { override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceStateRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstanceStateResponse(state: scala.Option[InstanceState] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstanceStateResponse = {
      import GetInstanceStateResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstanceStateResponse.builder().optionallyWith(state.map(value => value.buildAwsValue()))(_.state).build()
    }
    def asReadOnly: GetInstanceStateResponse.ReadOnly = GetInstanceStateResponse.wrap(buildAwsValue())
  }
  object GetInstanceStateResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstanceStateResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstanceStateResponse = GetInstanceStateResponse(stateValue.map(value => value.editable))
      def stateValue: scala.Option[InstanceState.ReadOnly]
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceState.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceStateResponse) extends GetInstanceStateResponse.ReadOnly { override def stateValue: scala.Option[InstanceState.ReadOnly] = scala.Option(impl.state()).map(value => InstanceState.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstanceStateResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetInstancesRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstancesRequest = {
      import GetInstancesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstancesRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetInstancesRequest.ReadOnly = GetInstancesRequest.wrap(buildAwsValue())
  }
  object GetInstancesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstancesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstancesRequest = GetInstancesRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstancesRequest) extends GetInstancesRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstancesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetInstancesResponse(instances: scala.Option[Iterable[Instance]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetInstancesResponse = {
      import GetInstancesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetInstancesResponse.builder().optionallyWith(instances.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.instances).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetInstancesResponse.ReadOnly = GetInstancesResponse.wrap(buildAwsValue())
  }
  object GetInstancesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetInstancesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetInstancesResponse = GetInstancesResponse(instancesValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def instancesValue: scala.Option[List[Instance.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def instances: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Instance.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instances", instancesValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetInstancesResponse) extends GetInstancesResponse.ReadOnly {
      override def instancesValue: scala.Option[List[Instance.ReadOnly]] = scala.Option(impl.instances()).map(value => value.asScala.map { item => 
        Instance.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetInstancesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetKeyPairRequest(keyPairName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetKeyPairRequest = {
      import GetKeyPairRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetKeyPairRequest.builder().keyPairName(keyPairName: java.lang.String).build()
    }
    def asReadOnly: GetKeyPairRequest.ReadOnly = GetKeyPairRequest.wrap(buildAwsValue())
  }
  object GetKeyPairRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetKeyPairRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetKeyPairRequest = GetKeyPairRequest(keyPairNameValue)
      def keyPairNameValue: primitives.ResourceName
      def keyPairName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(keyPairNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairRequest) extends GetKeyPairRequest.ReadOnly { override def keyPairNameValue: primitives.ResourceName = impl.keyPairName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetKeyPairResponse(keyPair: scala.Option[KeyPair] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetKeyPairResponse = {
      import GetKeyPairResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetKeyPairResponse.builder().optionallyWith(keyPair.map(value => value.buildAwsValue()))(_.keyPair).build()
    }
    def asReadOnly: GetKeyPairResponse.ReadOnly = GetKeyPairResponse.wrap(buildAwsValue())
  }
  object GetKeyPairResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetKeyPairResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetKeyPairResponse = GetKeyPairResponse(keyPairValue.map(value => value.editable))
      def keyPairValue: scala.Option[KeyPair.ReadOnly]
      def keyPair: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, KeyPair.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyPair", keyPairValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairResponse) extends GetKeyPairResponse.ReadOnly { override def keyPairValue: scala.Option[KeyPair.ReadOnly] = scala.Option(impl.keyPair()).map(value => KeyPair.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetKeyPairsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetKeyPairsRequest = {
      import GetKeyPairsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetKeyPairsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetKeyPairsRequest.ReadOnly = GetKeyPairsRequest.wrap(buildAwsValue())
  }
  object GetKeyPairsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetKeyPairsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetKeyPairsRequest = GetKeyPairsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairsRequest) extends GetKeyPairsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetKeyPairsResponse(keyPairs: scala.Option[Iterable[KeyPair]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetKeyPairsResponse = {
      import GetKeyPairsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetKeyPairsResponse.builder().optionallyWith(keyPairs.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.keyPairs).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetKeyPairsResponse.ReadOnly = GetKeyPairsResponse.wrap(buildAwsValue())
  }
  object GetKeyPairsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetKeyPairsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetKeyPairsResponse = GetKeyPairsResponse(keyPairsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def keyPairsValue: scala.Option[List[KeyPair.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def keyPairs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KeyPair.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyPairs", keyPairsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairsResponse) extends GetKeyPairsResponse.ReadOnly {
      override def keyPairsValue: scala.Option[List[KeyPair.ReadOnly]] = scala.Option(impl.keyPairs()).map(value => value.asScala.map { item => 
        KeyPair.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetKeyPairsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancerMetricDataRequest(loadBalancerName: primitives.ResourceName, metricName: LoadBalancerMetricName, period: primitives.MetricPeriod, startTime: primitives.Timestamp, endTime: primitives.Timestamp, unit: MetricUnit, statistics: Iterable[MetricStatistic]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataRequest = {
      import GetLoadBalancerMetricDataRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).metricName(metricName.unwrap).period(period: java.lang.Integer).startTime(startTime: java.time.Instant).endTime(endTime: java.time.Instant).unit(unit.unwrap).statisticsWithStrings(statistics.map { item => 
        item.unwrap.toString
      }.asJavaCollection).build()
    }
    def asReadOnly: GetLoadBalancerMetricDataRequest.ReadOnly = GetLoadBalancerMetricDataRequest.wrap(buildAwsValue())
  }
  object GetLoadBalancerMetricDataRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancerMetricDataRequest = GetLoadBalancerMetricDataRequest(loadBalancerNameValue, metricNameValue, periodValue, startTimeValue, endTimeValue, unitValue, statisticsValue)
      def loadBalancerNameValue: primitives.ResourceName
      def metricNameValue: LoadBalancerMetricName
      def periodValue: primitives.MetricPeriod
      def startTimeValue: primitives.Timestamp
      def endTimeValue: primitives.Timestamp
      def unitValue: MetricUnit
      def statisticsValue: List[MetricStatistic]
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def metricName: ZIO[Any, Nothing, LoadBalancerMetricName] = ZIO.succeed(metricNameValue)
      def period: ZIO[Any, Nothing, primitives.MetricPeriod] = ZIO.succeed(periodValue)
      def startTime: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(startTimeValue)
      def endTime: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(endTimeValue)
      def unit: ZIO[Any, Nothing, MetricUnit] = ZIO.succeed(unitValue)
      def statistics: ZIO[Any, Nothing, List[MetricStatistic]] = ZIO.succeed(statisticsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataRequest) extends GetLoadBalancerMetricDataRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def metricNameValue: LoadBalancerMetricName = LoadBalancerMetricName.wrap(impl.metricName())
      override def periodValue: primitives.MetricPeriod = impl.period(): primitives.MetricPeriod
      override def startTimeValue: primitives.Timestamp = impl.startTime(): primitives.Timestamp
      override def endTimeValue: primitives.Timestamp = impl.endTime(): primitives.Timestamp
      override def unitValue: MetricUnit = MetricUnit.wrap(impl.unit())
      override def statisticsValue: List[MetricStatistic] = impl.statistics().asScala.map { item => 
        MetricStatistic.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancerMetricDataResponse(metricName: scala.Option[LoadBalancerMetricName] = None, metricData: scala.Option[Iterable[MetricDatapoint]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataResponse = {
      import GetLoadBalancerMetricDataResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataResponse.builder().optionallyWith(metricName.map(value => value.unwrap))(_.metricName).optionallyWith(metricData.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.metricData).build()
    }
    def asReadOnly: GetLoadBalancerMetricDataResponse.ReadOnly = GetLoadBalancerMetricDataResponse.wrap(buildAwsValue())
  }
  object GetLoadBalancerMetricDataResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancerMetricDataResponse = GetLoadBalancerMetricDataResponse(metricNameValue.map(value => value), metricDataValue.map(value => value.map { item => 
        item.editable
      }))
      def metricNameValue: scala.Option[LoadBalancerMetricName]
      def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]]
      def metricName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerMetricName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricName", metricNameValue)
      def metricData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[MetricDatapoint.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricData", metricDataValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataResponse) extends GetLoadBalancerMetricDataResponse.ReadOnly {
      override def metricNameValue: scala.Option[LoadBalancerMetricName] = scala.Option(impl.metricName()).map(value => LoadBalancerMetricName.wrap(value))
      override def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]] = scala.Option(impl.metricData()).map(value => value.asScala.map { item => 
        MetricDatapoint.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerMetricDataResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancerRequest(loadBalancerName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancerRequest = {
      import GetLoadBalancerRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancerRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).build()
    }
    def asReadOnly: GetLoadBalancerRequest.ReadOnly = GetLoadBalancerRequest.wrap(buildAwsValue())
  }
  object GetLoadBalancerRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancerRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancerRequest = GetLoadBalancerRequest(loadBalancerNameValue)
      def loadBalancerNameValue: primitives.ResourceName
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerRequest) extends GetLoadBalancerRequest.ReadOnly { override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancerResponse(loadBalancer: scala.Option[LoadBalancer] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancerResponse = {
      import GetLoadBalancerResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancerResponse.builder().optionallyWith(loadBalancer.map(value => value.buildAwsValue()))(_.loadBalancer).build()
    }
    def asReadOnly: GetLoadBalancerResponse.ReadOnly = GetLoadBalancerResponse.wrap(buildAwsValue())
  }
  object GetLoadBalancerResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancerResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancerResponse = GetLoadBalancerResponse(loadBalancerValue.map(value => value.editable))
      def loadBalancerValue: scala.Option[LoadBalancer.ReadOnly]
      def loadBalancer: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancer.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("loadBalancer", loadBalancerValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerResponse) extends GetLoadBalancerResponse.ReadOnly { override def loadBalancerValue: scala.Option[LoadBalancer.ReadOnly] = scala.Option(impl.loadBalancer()).map(value => LoadBalancer.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancerTlsCertificatesRequest(loadBalancerName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesRequest = {
      import GetLoadBalancerTlsCertificatesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).build()
    }
    def asReadOnly: GetLoadBalancerTlsCertificatesRequest.ReadOnly = GetLoadBalancerTlsCertificatesRequest.wrap(buildAwsValue())
  }
  object GetLoadBalancerTlsCertificatesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancerTlsCertificatesRequest = GetLoadBalancerTlsCertificatesRequest(loadBalancerNameValue)
      def loadBalancerNameValue: primitives.ResourceName
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesRequest) extends GetLoadBalancerTlsCertificatesRequest.ReadOnly { override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancerTlsCertificatesResponse(tlsCertificates: scala.Option[Iterable[LoadBalancerTlsCertificate]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesResponse = {
      import GetLoadBalancerTlsCertificatesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesResponse.builder().optionallyWith(tlsCertificates.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tlsCertificates).build()
    }
    def asReadOnly: GetLoadBalancerTlsCertificatesResponse.ReadOnly = GetLoadBalancerTlsCertificatesResponse.wrap(buildAwsValue())
  }
  object GetLoadBalancerTlsCertificatesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancerTlsCertificatesResponse = GetLoadBalancerTlsCertificatesResponse(tlsCertificatesValue.map(value => value.map { item => 
        item.editable
      }))
      def tlsCertificatesValue: scala.Option[List[LoadBalancerTlsCertificate.ReadOnly]]
      def tlsCertificates: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LoadBalancerTlsCertificate.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tlsCertificates", tlsCertificatesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesResponse) extends GetLoadBalancerTlsCertificatesResponse.ReadOnly {
      override def tlsCertificatesValue: scala.Option[List[LoadBalancerTlsCertificate.ReadOnly]] = scala.Option(impl.tlsCertificates()).map(value => value.asScala.map { item => 
        LoadBalancerTlsCertificate.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancerTlsCertificatesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancersRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancersRequest = {
      import GetLoadBalancersRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancersRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetLoadBalancersRequest.ReadOnly = GetLoadBalancersRequest.wrap(buildAwsValue())
  }
  object GetLoadBalancersRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancersRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancersRequest = GetLoadBalancersRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancersRequest) extends GetLoadBalancersRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancersRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetLoadBalancersResponse(loadBalancers: scala.Option[Iterable[LoadBalancer]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetLoadBalancersResponse = {
      import GetLoadBalancersResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetLoadBalancersResponse.builder().optionallyWith(loadBalancers.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.loadBalancers).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetLoadBalancersResponse.ReadOnly = GetLoadBalancersResponse.wrap(buildAwsValue())
  }
  object GetLoadBalancersResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetLoadBalancersResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetLoadBalancersResponse = GetLoadBalancersResponse(loadBalancersValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def loadBalancersValue: scala.Option[List[LoadBalancer.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def loadBalancers: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LoadBalancer.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("loadBalancers", loadBalancersValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancersResponse) extends GetLoadBalancersResponse.ReadOnly {
      override def loadBalancersValue: scala.Option[List[LoadBalancer.ReadOnly]] = scala.Option(impl.loadBalancers()).map(value => value.asScala.map { item => 
        LoadBalancer.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetLoadBalancersResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetOperationRequest(operationId: primitives.NonEmptyString) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetOperationRequest = {
      import GetOperationRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetOperationRequest.builder().operationId(operationId: java.lang.String).build()
    }
    def asReadOnly: GetOperationRequest.ReadOnly = GetOperationRequest.wrap(buildAwsValue())
  }
  object GetOperationRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetOperationRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetOperationRequest = GetOperationRequest(operationIdValue)
      def operationIdValue: primitives.NonEmptyString
      def operationId: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(operationIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetOperationRequest) extends GetOperationRequest.ReadOnly { override def operationIdValue: primitives.NonEmptyString = impl.operationId(): primitives.NonEmptyString }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetOperationRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetOperationResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetOperationResponse = {
      import GetOperationResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetOperationResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: GetOperationResponse.ReadOnly = GetOperationResponse.wrap(buildAwsValue())
  }
  object GetOperationResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetOperationResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetOperationResponse = GetOperationResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetOperationResponse) extends GetOperationResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetOperationResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetOperationsForResourceRequest(resourceName: primitives.ResourceName, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceRequest = {
      import GetOperationsForResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceRequest.builder().resourceName(resourceName: java.lang.String).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetOperationsForResourceRequest.ReadOnly = GetOperationsForResourceRequest.wrap(buildAwsValue())
  }
  object GetOperationsForResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetOperationsForResourceRequest = GetOperationsForResourceRequest(resourceNameValue, pageTokenValue.map(value => value))
      def resourceNameValue: primitives.ResourceName
      def pageTokenValue: scala.Option[String]
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceRequest) extends GetOperationsForResourceRequest.ReadOnly {
      override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetOperationsForResourceResponse(operations: scala.Option[Iterable[Operation]] = None, nextPageCount: scala.Option[String] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceResponse = {
      import GetOperationsForResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).optionallyWith(nextPageCount.map(value => value: java.lang.String))(_.nextPageCount).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetOperationsForResourceResponse.ReadOnly = GetOperationsForResourceResponse.wrap(buildAwsValue())
  }
  object GetOperationsForResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetOperationsForResourceResponse = GetOperationsForResourceResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }), nextPageCountValue.map(value => value), nextPageTokenValue.map(value => value))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def nextPageCountValue: scala.Option[String]
      def nextPageTokenValue: scala.Option[String]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
      def nextPageCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageCount", nextPageCountValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceResponse) extends GetOperationsForResourceResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
      override def nextPageCountValue: scala.Option[String] = scala.Option(impl.nextPageCount()).map(value => value: String)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsForResourceResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetOperationsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetOperationsRequest = {
      import GetOperationsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetOperationsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetOperationsRequest.ReadOnly = GetOperationsRequest.wrap(buildAwsValue())
  }
  object GetOperationsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetOperationsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetOperationsRequest = GetOperationsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsRequest) extends GetOperationsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetOperationsResponse(operations: scala.Option[Iterable[Operation]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetOperationsResponse = {
      import GetOperationsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetOperationsResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetOperationsResponse.ReadOnly = GetOperationsResponse.wrap(buildAwsValue())
  }
  object GetOperationsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetOperationsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetOperationsResponse = GetOperationsResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsResponse) extends GetOperationsResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetOperationsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRegionsRequest(includeAvailabilityZones: scala.Option[Boolean] = None, includeRelationalDatabaseAvailabilityZones: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRegionsRequest = {
      import GetRegionsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRegionsRequest.builder().optionallyWith(includeAvailabilityZones.map(value => value: java.lang.Boolean))(_.includeAvailabilityZones).optionallyWith(includeRelationalDatabaseAvailabilityZones.map(value => value: java.lang.Boolean))(_.includeRelationalDatabaseAvailabilityZones).build()
    }
    def asReadOnly: GetRegionsRequest.ReadOnly = GetRegionsRequest.wrap(buildAwsValue())
  }
  object GetRegionsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRegionsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRegionsRequest = GetRegionsRequest(includeAvailabilityZonesValue.map(value => value), includeRelationalDatabaseAvailabilityZonesValue.map(value => value))
      def includeAvailabilityZonesValue: scala.Option[Boolean]
      def includeRelationalDatabaseAvailabilityZonesValue: scala.Option[Boolean]
      def includeAvailabilityZones: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("includeAvailabilityZones", includeAvailabilityZonesValue)
      def includeRelationalDatabaseAvailabilityZones: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("includeRelationalDatabaseAvailabilityZones", includeRelationalDatabaseAvailabilityZonesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRegionsRequest) extends GetRegionsRequest.ReadOnly {
      override def includeAvailabilityZonesValue: scala.Option[Boolean] = scala.Option(impl.includeAvailabilityZones()).map(value => value: Boolean)
      override def includeRelationalDatabaseAvailabilityZonesValue: scala.Option[Boolean] = scala.Option(impl.includeRelationalDatabaseAvailabilityZones()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRegionsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRegionsResponse(regions: scala.Option[Iterable[Region]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRegionsResponse = {
      import GetRegionsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRegionsResponse.builder().optionallyWith(regions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.regions).build()
    }
    def asReadOnly: GetRegionsResponse.ReadOnly = GetRegionsResponse.wrap(buildAwsValue())
  }
  object GetRegionsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRegionsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRegionsResponse = GetRegionsResponse(regionsValue.map(value => value.map { item => 
        item.editable
      }))
      def regionsValue: scala.Option[List[Region.ReadOnly]]
      def regions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Region.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regions", regionsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRegionsResponse) extends GetRegionsResponse.ReadOnly {
      override def regionsValue: scala.Option[List[Region.ReadOnly]] = scala.Option(impl.regions()).map(value => value.asScala.map { item => 
        Region.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRegionsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseBlueprintsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsRequest = {
      import GetRelationalDatabaseBlueprintsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseBlueprintsRequest.ReadOnly = GetRelationalDatabaseBlueprintsRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseBlueprintsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseBlueprintsRequest = GetRelationalDatabaseBlueprintsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsRequest) extends GetRelationalDatabaseBlueprintsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseBlueprintsResponse(blueprints: scala.Option[Iterable[RelationalDatabaseBlueprint]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsResponse = {
      import GetRelationalDatabaseBlueprintsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsResponse.builder().optionallyWith(blueprints.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.blueprints).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseBlueprintsResponse.ReadOnly = GetRelationalDatabaseBlueprintsResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseBlueprintsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseBlueprintsResponse = GetRelationalDatabaseBlueprintsResponse(blueprintsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def blueprintsValue: scala.Option[List[RelationalDatabaseBlueprint.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def blueprints: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[RelationalDatabaseBlueprint.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("blueprints", blueprintsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsResponse) extends GetRelationalDatabaseBlueprintsResponse.ReadOnly {
      override def blueprintsValue: scala.Option[List[RelationalDatabaseBlueprint.ReadOnly]] = scala.Option(impl.blueprints()).map(value => value.asScala.map { item => 
        RelationalDatabaseBlueprint.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBlueprintsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseBundlesRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesRequest = {
      import GetRelationalDatabaseBundlesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseBundlesRequest.ReadOnly = GetRelationalDatabaseBundlesRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseBundlesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseBundlesRequest = GetRelationalDatabaseBundlesRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesRequest) extends GetRelationalDatabaseBundlesRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseBundlesResponse(bundles: scala.Option[Iterable[RelationalDatabaseBundle]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesResponse = {
      import GetRelationalDatabaseBundlesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesResponse.builder().optionallyWith(bundles.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.bundles).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseBundlesResponse.ReadOnly = GetRelationalDatabaseBundlesResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseBundlesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseBundlesResponse = GetRelationalDatabaseBundlesResponse(bundlesValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def bundlesValue: scala.Option[List[RelationalDatabaseBundle.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def bundles: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[RelationalDatabaseBundle.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundles", bundlesValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesResponse) extends GetRelationalDatabaseBundlesResponse.ReadOnly {
      override def bundlesValue: scala.Option[List[RelationalDatabaseBundle.ReadOnly]] = scala.Option(impl.bundles()).map(value => value.asScala.map { item => 
        RelationalDatabaseBundle.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseBundlesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseEventsRequest(relationalDatabaseName: primitives.ResourceName, durationInMinutes: scala.Option[primitives.Integer] = None, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsRequest = {
      import GetRelationalDatabaseEventsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(durationInMinutes.map(value => value: java.lang.Integer))(_.durationInMinutes).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseEventsRequest.ReadOnly = GetRelationalDatabaseEventsRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseEventsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseEventsRequest = GetRelationalDatabaseEventsRequest(relationalDatabaseNameValue, durationInMinutesValue.map(value => value), pageTokenValue.map(value => value))
      def relationalDatabaseNameValue: primitives.ResourceName
      def durationInMinutesValue: scala.Option[primitives.Integer]
      def pageTokenValue: scala.Option[String]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def durationInMinutes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("durationInMinutes", durationInMinutesValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsRequest) extends GetRelationalDatabaseEventsRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def durationInMinutesValue: scala.Option[primitives.Integer] = scala.Option(impl.durationInMinutes()).map(value => value: primitives.Integer)
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseEventsResponse(relationalDatabaseEvents: scala.Option[Iterable[RelationalDatabaseEvent]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsResponse = {
      import GetRelationalDatabaseEventsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsResponse.builder().optionallyWith(relationalDatabaseEvents.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.relationalDatabaseEvents).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseEventsResponse.ReadOnly = GetRelationalDatabaseEventsResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseEventsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseEventsResponse = GetRelationalDatabaseEventsResponse(relationalDatabaseEventsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def relationalDatabaseEventsValue: scala.Option[List[RelationalDatabaseEvent.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def relationalDatabaseEvents: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[RelationalDatabaseEvent.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseEvents", relationalDatabaseEventsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsResponse) extends GetRelationalDatabaseEventsResponse.ReadOnly {
      override def relationalDatabaseEventsValue: scala.Option[List[RelationalDatabaseEvent.ReadOnly]] = scala.Option(impl.relationalDatabaseEvents()).map(value => value.asScala.map { item => 
        RelationalDatabaseEvent.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseEventsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseLogEventsRequest(relationalDatabaseName: primitives.ResourceName, logStreamName: String, startTime: scala.Option[primitives.IsoDate] = None, endTime: scala.Option[primitives.IsoDate] = None, startFromHead: scala.Option[Boolean] = None, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsRequest = {
      import GetRelationalDatabaseLogEventsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).logStreamName(logStreamName: java.lang.String).optionallyWith(startTime.map(value => value: java.time.Instant))(_.startTime).optionallyWith(endTime.map(value => value: java.time.Instant))(_.endTime).optionallyWith(startFromHead.map(value => value: java.lang.Boolean))(_.startFromHead).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseLogEventsRequest.ReadOnly = GetRelationalDatabaseLogEventsRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseLogEventsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseLogEventsRequest = GetRelationalDatabaseLogEventsRequest(relationalDatabaseNameValue, logStreamNameValue, startTimeValue.map(value => value), endTimeValue.map(value => value), startFromHeadValue.map(value => value), pageTokenValue.map(value => value))
      def relationalDatabaseNameValue: primitives.ResourceName
      def logStreamNameValue: String
      def startTimeValue: scala.Option[primitives.IsoDate]
      def endTimeValue: scala.Option[primitives.IsoDate]
      def startFromHeadValue: scala.Option[Boolean]
      def pageTokenValue: scala.Option[String]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def logStreamName: ZIO[Any, Nothing, String] = ZIO.succeed(logStreamNameValue)
      def startTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startTime", startTimeValue)
      def endTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("endTime", endTimeValue)
      def startFromHead: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startFromHead", startFromHeadValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsRequest) extends GetRelationalDatabaseLogEventsRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def logStreamNameValue: String = impl.logStreamName(): String
      override def startTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.startTime()).map(value => value: primitives.IsoDate)
      override def endTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.endTime()).map(value => value: primitives.IsoDate)
      override def startFromHeadValue: scala.Option[Boolean] = scala.Option(impl.startFromHead()).map(value => value: Boolean)
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseLogEventsResponse(resourceLogEvents: scala.Option[Iterable[LogEvent]] = None, nextBackwardToken: scala.Option[String] = None, nextForwardToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsResponse = {
      import GetRelationalDatabaseLogEventsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsResponse.builder().optionallyWith(resourceLogEvents.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.resourceLogEvents).optionallyWith(nextBackwardToken.map(value => value: java.lang.String))(_.nextBackwardToken).optionallyWith(nextForwardToken.map(value => value: java.lang.String))(_.nextForwardToken).build()
    }
    def asReadOnly: GetRelationalDatabaseLogEventsResponse.ReadOnly = GetRelationalDatabaseLogEventsResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseLogEventsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseLogEventsResponse = GetRelationalDatabaseLogEventsResponse(resourceLogEventsValue.map(value => value.map { item => 
        item.editable
      }), nextBackwardTokenValue.map(value => value), nextForwardTokenValue.map(value => value))
      def resourceLogEventsValue: scala.Option[List[LogEvent.ReadOnly]]
      def nextBackwardTokenValue: scala.Option[String]
      def nextForwardTokenValue: scala.Option[String]
      def resourceLogEvents: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LogEvent.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceLogEvents", resourceLogEventsValue)
      def nextBackwardToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextBackwardToken", nextBackwardTokenValue)
      def nextForwardToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextForwardToken", nextForwardTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsResponse) extends GetRelationalDatabaseLogEventsResponse.ReadOnly {
      override def resourceLogEventsValue: scala.Option[List[LogEvent.ReadOnly]] = scala.Option(impl.resourceLogEvents()).map(value => value.asScala.map { item => 
        LogEvent.wrap(item)
      }.toList)
      override def nextBackwardTokenValue: scala.Option[String] = scala.Option(impl.nextBackwardToken()).map(value => value: String)
      override def nextForwardTokenValue: scala.Option[String] = scala.Option(impl.nextForwardToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogEventsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseLogStreamsRequest(relationalDatabaseName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsRequest = {
      import GetRelationalDatabaseLogStreamsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).build()
    }
    def asReadOnly: GetRelationalDatabaseLogStreamsRequest.ReadOnly = GetRelationalDatabaseLogStreamsRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseLogStreamsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseLogStreamsRequest = GetRelationalDatabaseLogStreamsRequest(relationalDatabaseNameValue)
      def relationalDatabaseNameValue: primitives.ResourceName
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsRequest) extends GetRelationalDatabaseLogStreamsRequest.ReadOnly { override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseLogStreamsResponse(logStreams: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsResponse = {
      import GetRelationalDatabaseLogStreamsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsResponse.builder().optionallyWith(logStreams.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.logStreams).build()
    }
    def asReadOnly: GetRelationalDatabaseLogStreamsResponse.ReadOnly = GetRelationalDatabaseLogStreamsResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseLogStreamsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseLogStreamsResponse = GetRelationalDatabaseLogStreamsResponse(logStreamsValue.map(value => value))
      def logStreamsValue: scala.Option[List[String]]
      def logStreams: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("logStreams", logStreamsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsResponse) extends GetRelationalDatabaseLogStreamsResponse.ReadOnly {
      override def logStreamsValue: scala.Option[List[String]] = scala.Option(impl.logStreams()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseLogStreamsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseMasterUserPasswordRequest(relationalDatabaseName: primitives.ResourceName, passwordVersion: scala.Option[RelationalDatabasePasswordVersion] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordRequest = {
      import GetRelationalDatabaseMasterUserPasswordRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(passwordVersion.map(value => value.unwrap))(_.passwordVersion).build()
    }
    def asReadOnly: GetRelationalDatabaseMasterUserPasswordRequest.ReadOnly = GetRelationalDatabaseMasterUserPasswordRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseMasterUserPasswordRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseMasterUserPasswordRequest = GetRelationalDatabaseMasterUserPasswordRequest(relationalDatabaseNameValue, passwordVersionValue.map(value => value))
      def relationalDatabaseNameValue: primitives.ResourceName
      def passwordVersionValue: scala.Option[RelationalDatabasePasswordVersion]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def passwordVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RelationalDatabasePasswordVersion] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("passwordVersion", passwordVersionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordRequest) extends GetRelationalDatabaseMasterUserPasswordRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def passwordVersionValue: scala.Option[RelationalDatabasePasswordVersion] = scala.Option(impl.passwordVersion()).map(value => RelationalDatabasePasswordVersion.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseMasterUserPasswordResponse(masterUserPassword: scala.Option[primitives.SensitiveString] = None, createdAt: scala.Option[primitives.IsoDate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordResponse = {
      import GetRelationalDatabaseMasterUserPasswordResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordResponse.builder().optionallyWith(masterUserPassword.map(value => value: java.lang.String))(_.masterUserPassword).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).build()
    }
    def asReadOnly: GetRelationalDatabaseMasterUserPasswordResponse.ReadOnly = GetRelationalDatabaseMasterUserPasswordResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseMasterUserPasswordResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseMasterUserPasswordResponse = GetRelationalDatabaseMasterUserPasswordResponse(masterUserPasswordValue.map(value => value), createdAtValue.map(value => value))
      def masterUserPasswordValue: scala.Option[primitives.SensitiveString]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def masterUserPassword: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SensitiveString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("masterUserPassword", masterUserPasswordValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordResponse) extends GetRelationalDatabaseMasterUserPasswordResponse.ReadOnly {
      override def masterUserPasswordValue: scala.Option[primitives.SensitiveString] = scala.Option(impl.masterUserPassword()).map(value => value: primitives.SensitiveString)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMasterUserPasswordResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseMetricDataRequest(relationalDatabaseName: primitives.ResourceName, metricName: RelationalDatabaseMetricName, period: primitives.MetricPeriod, startTime: primitives.IsoDate, endTime: primitives.IsoDate, unit: MetricUnit, statistics: Iterable[MetricStatistic]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataRequest = {
      import GetRelationalDatabaseMetricDataRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).metricName(metricName.unwrap).period(period: java.lang.Integer).startTime(startTime: java.time.Instant).endTime(endTime: java.time.Instant).unit(unit.unwrap).statisticsWithStrings(statistics.map { item => 
        item.unwrap.toString
      }.asJavaCollection).build()
    }
    def asReadOnly: GetRelationalDatabaseMetricDataRequest.ReadOnly = GetRelationalDatabaseMetricDataRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseMetricDataRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseMetricDataRequest = GetRelationalDatabaseMetricDataRequest(relationalDatabaseNameValue, metricNameValue, periodValue, startTimeValue, endTimeValue, unitValue, statisticsValue)
      def relationalDatabaseNameValue: primitives.ResourceName
      def metricNameValue: RelationalDatabaseMetricName
      def periodValue: primitives.MetricPeriod
      def startTimeValue: primitives.IsoDate
      def endTimeValue: primitives.IsoDate
      def unitValue: MetricUnit
      def statisticsValue: List[MetricStatistic]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def metricName: ZIO[Any, Nothing, RelationalDatabaseMetricName] = ZIO.succeed(metricNameValue)
      def period: ZIO[Any, Nothing, primitives.MetricPeriod] = ZIO.succeed(periodValue)
      def startTime: ZIO[Any, Nothing, primitives.IsoDate] = ZIO.succeed(startTimeValue)
      def endTime: ZIO[Any, Nothing, primitives.IsoDate] = ZIO.succeed(endTimeValue)
      def unit: ZIO[Any, Nothing, MetricUnit] = ZIO.succeed(unitValue)
      def statistics: ZIO[Any, Nothing, List[MetricStatistic]] = ZIO.succeed(statisticsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataRequest) extends GetRelationalDatabaseMetricDataRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def metricNameValue: RelationalDatabaseMetricName = RelationalDatabaseMetricName.wrap(impl.metricName())
      override def periodValue: primitives.MetricPeriod = impl.period(): primitives.MetricPeriod
      override def startTimeValue: primitives.IsoDate = impl.startTime(): primitives.IsoDate
      override def endTimeValue: primitives.IsoDate = impl.endTime(): primitives.IsoDate
      override def unitValue: MetricUnit = MetricUnit.wrap(impl.unit())
      override def statisticsValue: List[MetricStatistic] = impl.statistics().asScala.map { item => 
        MetricStatistic.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseMetricDataResponse(metricName: scala.Option[RelationalDatabaseMetricName] = None, metricData: scala.Option[Iterable[MetricDatapoint]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataResponse = {
      import GetRelationalDatabaseMetricDataResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataResponse.builder().optionallyWith(metricName.map(value => value.unwrap))(_.metricName).optionallyWith(metricData.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.metricData).build()
    }
    def asReadOnly: GetRelationalDatabaseMetricDataResponse.ReadOnly = GetRelationalDatabaseMetricDataResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseMetricDataResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseMetricDataResponse = GetRelationalDatabaseMetricDataResponse(metricNameValue.map(value => value), metricDataValue.map(value => value.map { item => 
        item.editable
      }))
      def metricNameValue: scala.Option[RelationalDatabaseMetricName]
      def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]]
      def metricName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RelationalDatabaseMetricName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricName", metricNameValue)
      def metricData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[MetricDatapoint.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("metricData", metricDataValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataResponse) extends GetRelationalDatabaseMetricDataResponse.ReadOnly {
      override def metricNameValue: scala.Option[RelationalDatabaseMetricName] = scala.Option(impl.metricName()).map(value => RelationalDatabaseMetricName.wrap(value))
      override def metricDataValue: scala.Option[List[MetricDatapoint.ReadOnly]] = scala.Option(impl.metricData()).map(value => value.asScala.map { item => 
        MetricDatapoint.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseMetricDataResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseParametersRequest(relationalDatabaseName: primitives.ResourceName, pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersRequest = {
      import GetRelationalDatabaseParametersRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseParametersRequest.ReadOnly = GetRelationalDatabaseParametersRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseParametersRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseParametersRequest = GetRelationalDatabaseParametersRequest(relationalDatabaseNameValue, pageTokenValue.map(value => value))
      def relationalDatabaseNameValue: primitives.ResourceName
      def pageTokenValue: scala.Option[String]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersRequest) extends GetRelationalDatabaseParametersRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseParametersResponse(parameters: scala.Option[Iterable[RelationalDatabaseParameter]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersResponse = {
      import GetRelationalDatabaseParametersResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersResponse.builder().optionallyWith(parameters.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.parameters).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseParametersResponse.ReadOnly = GetRelationalDatabaseParametersResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseParametersResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseParametersResponse = GetRelationalDatabaseParametersResponse(parametersValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def parametersValue: scala.Option[List[RelationalDatabaseParameter.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def parameters: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[RelationalDatabaseParameter.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parameters", parametersValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersResponse) extends GetRelationalDatabaseParametersResponse.ReadOnly {
      override def parametersValue: scala.Option[List[RelationalDatabaseParameter.ReadOnly]] = scala.Option(impl.parameters()).map(value => value.asScala.map { item => 
        RelationalDatabaseParameter.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseParametersResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseRequest(relationalDatabaseName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseRequest = {
      import GetRelationalDatabaseRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).build()
    }
    def asReadOnly: GetRelationalDatabaseRequest.ReadOnly = GetRelationalDatabaseRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseRequest = GetRelationalDatabaseRequest(relationalDatabaseNameValue)
      def relationalDatabaseNameValue: primitives.ResourceName
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseRequest) extends GetRelationalDatabaseRequest.ReadOnly { override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseResponse(relationalDatabase: scala.Option[RelationalDatabase] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseResponse = {
      import GetRelationalDatabaseResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseResponse.builder().optionallyWith(relationalDatabase.map(value => value.buildAwsValue()))(_.relationalDatabase).build()
    }
    def asReadOnly: GetRelationalDatabaseResponse.ReadOnly = GetRelationalDatabaseResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseResponse = GetRelationalDatabaseResponse(relationalDatabaseValue.map(value => value.editable))
      def relationalDatabaseValue: scala.Option[RelationalDatabase.ReadOnly]
      def relationalDatabase: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RelationalDatabase.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabase", relationalDatabaseValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseResponse) extends GetRelationalDatabaseResponse.ReadOnly { override def relationalDatabaseValue: scala.Option[RelationalDatabase.ReadOnly] = scala.Option(impl.relationalDatabase()).map(value => RelationalDatabase.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseSnapshotRequest(relationalDatabaseSnapshotName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotRequest = {
      import GetRelationalDatabaseSnapshotRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotRequest.builder().relationalDatabaseSnapshotName(relationalDatabaseSnapshotName: java.lang.String).build()
    }
    def asReadOnly: GetRelationalDatabaseSnapshotRequest.ReadOnly = GetRelationalDatabaseSnapshotRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseSnapshotRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseSnapshotRequest = GetRelationalDatabaseSnapshotRequest(relationalDatabaseSnapshotNameValue)
      def relationalDatabaseSnapshotNameValue: primitives.ResourceName
      def relationalDatabaseSnapshotName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotRequest) extends GetRelationalDatabaseSnapshotRequest.ReadOnly { override def relationalDatabaseSnapshotNameValue: primitives.ResourceName = impl.relationalDatabaseSnapshotName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseSnapshotResponse(relationalDatabaseSnapshot: scala.Option[RelationalDatabaseSnapshot] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotResponse = {
      import GetRelationalDatabaseSnapshotResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotResponse.builder().optionallyWith(relationalDatabaseSnapshot.map(value => value.buildAwsValue()))(_.relationalDatabaseSnapshot).build()
    }
    def asReadOnly: GetRelationalDatabaseSnapshotResponse.ReadOnly = GetRelationalDatabaseSnapshotResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseSnapshotResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseSnapshotResponse = GetRelationalDatabaseSnapshotResponse(relationalDatabaseSnapshotValue.map(value => value.editable))
      def relationalDatabaseSnapshotValue: scala.Option[RelationalDatabaseSnapshot.ReadOnly]
      def relationalDatabaseSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RelationalDatabaseSnapshot.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseSnapshot", relationalDatabaseSnapshotValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotResponse) extends GetRelationalDatabaseSnapshotResponse.ReadOnly { override def relationalDatabaseSnapshotValue: scala.Option[RelationalDatabaseSnapshot.ReadOnly] = scala.Option(impl.relationalDatabaseSnapshot()).map(value => RelationalDatabaseSnapshot.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseSnapshotsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsRequest = {
      import GetRelationalDatabaseSnapshotsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseSnapshotsRequest.ReadOnly = GetRelationalDatabaseSnapshotsRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseSnapshotsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseSnapshotsRequest = GetRelationalDatabaseSnapshotsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsRequest) extends GetRelationalDatabaseSnapshotsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabaseSnapshotsResponse(relationalDatabaseSnapshots: scala.Option[Iterable[RelationalDatabaseSnapshot]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsResponse = {
      import GetRelationalDatabaseSnapshotsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsResponse.builder().optionallyWith(relationalDatabaseSnapshots.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.relationalDatabaseSnapshots).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetRelationalDatabaseSnapshotsResponse.ReadOnly = GetRelationalDatabaseSnapshotsResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabaseSnapshotsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabaseSnapshotsResponse = GetRelationalDatabaseSnapshotsResponse(relationalDatabaseSnapshotsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def relationalDatabaseSnapshotsValue: scala.Option[List[RelationalDatabaseSnapshot.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def relationalDatabaseSnapshots: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[RelationalDatabaseSnapshot.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseSnapshots", relationalDatabaseSnapshotsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsResponse) extends GetRelationalDatabaseSnapshotsResponse.ReadOnly {
      override def relationalDatabaseSnapshotsValue: scala.Option[List[RelationalDatabaseSnapshot.ReadOnly]] = scala.Option(impl.relationalDatabaseSnapshots()).map(value => value.asScala.map { item => 
        RelationalDatabaseSnapshot.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabaseSnapshotsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabasesRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesRequest = {
      import GetRelationalDatabasesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetRelationalDatabasesRequest.ReadOnly = GetRelationalDatabasesRequest.wrap(buildAwsValue())
  }
  object GetRelationalDatabasesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabasesRequest = GetRelationalDatabasesRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesRequest) extends GetRelationalDatabasesRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRelationalDatabasesResponse(relationalDatabases: scala.Option[Iterable[RelationalDatabase]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesResponse = {
      import GetRelationalDatabasesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesResponse.builder().optionallyWith(relationalDatabases.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.relationalDatabases).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetRelationalDatabasesResponse.ReadOnly = GetRelationalDatabasesResponse.wrap(buildAwsValue())
  }
  object GetRelationalDatabasesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRelationalDatabasesResponse = GetRelationalDatabasesResponse(relationalDatabasesValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def relationalDatabasesValue: scala.Option[List[RelationalDatabase.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def relationalDatabases: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[RelationalDatabase.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabases", relationalDatabasesValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesResponse) extends GetRelationalDatabasesResponse.ReadOnly {
      override def relationalDatabasesValue: scala.Option[List[RelationalDatabase.ReadOnly]] = scala.Option(impl.relationalDatabases()).map(value => value.asScala.map { item => 
        RelationalDatabase.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetRelationalDatabasesResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetStaticIpRequest(staticIpName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetStaticIpRequest = {
      import GetStaticIpRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetStaticIpRequest.builder().staticIpName(staticIpName: java.lang.String).build()
    }
    def asReadOnly: GetStaticIpRequest.ReadOnly = GetStaticIpRequest.wrap(buildAwsValue())
  }
  object GetStaticIpRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetStaticIpRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetStaticIpRequest = GetStaticIpRequest(staticIpNameValue)
      def staticIpNameValue: primitives.ResourceName
      def staticIpName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(staticIpNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpRequest) extends GetStaticIpRequest.ReadOnly { override def staticIpNameValue: primitives.ResourceName = impl.staticIpName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetStaticIpResponse(staticIp: scala.Option[StaticIp] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetStaticIpResponse = {
      import GetStaticIpResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetStaticIpResponse.builder().optionallyWith(staticIp.map(value => value.buildAwsValue()))(_.staticIp).build()
    }
    def asReadOnly: GetStaticIpResponse.ReadOnly = GetStaticIpResponse.wrap(buildAwsValue())
  }
  object GetStaticIpResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetStaticIpResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetStaticIpResponse = GetStaticIpResponse(staticIpValue.map(value => value.editable))
      def staticIpValue: scala.Option[StaticIp.ReadOnly]
      def staticIp: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StaticIp.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("staticIp", staticIpValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpResponse) extends GetStaticIpResponse.ReadOnly { override def staticIpValue: scala.Option[StaticIp.ReadOnly] = scala.Option(impl.staticIp()).map(value => StaticIp.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetStaticIpsRequest(pageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetStaticIpsRequest = {
      import GetStaticIpsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetStaticIpsRequest.builder().optionallyWith(pageToken.map(value => value: java.lang.String))(_.pageToken).build()
    }
    def asReadOnly: GetStaticIpsRequest.ReadOnly = GetStaticIpsRequest.wrap(buildAwsValue())
  }
  object GetStaticIpsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetStaticIpsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetStaticIpsRequest = GetStaticIpsRequest(pageTokenValue.map(value => value))
      def pageTokenValue: scala.Option[String]
      def pageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pageToken", pageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpsRequest) extends GetStaticIpsRequest.ReadOnly { override def pageTokenValue: scala.Option[String] = scala.Option(impl.pageToken()).map(value => value: String) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetStaticIpsResponse(staticIps: scala.Option[Iterable[StaticIp]] = None, nextPageToken: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.GetStaticIpsResponse = {
      import GetStaticIpsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.GetStaticIpsResponse.builder().optionallyWith(staticIps.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.staticIps).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetStaticIpsResponse.ReadOnly = GetStaticIpsResponse.wrap(buildAwsValue())
  }
  object GetStaticIpsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.GetStaticIpsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetStaticIpsResponse = GetStaticIpsResponse(staticIpsValue.map(value => value.map { item => 
        item.editable
      }), nextPageTokenValue.map(value => value))
      def staticIpsValue: scala.Option[List[StaticIp.ReadOnly]]
      def nextPageTokenValue: scala.Option[String]
      def staticIps: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[StaticIp.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("staticIps", staticIpsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpsResponse) extends GetStaticIpsResponse.ReadOnly {
      override def staticIpsValue: scala.Option[List[StaticIp.ReadOnly]] = scala.Option(impl.staticIps()).map(value => value.asScala.map { item => 
        StaticIp.wrap(item)
      }.toList)
      override def nextPageTokenValue: scala.Option[String] = scala.Option(impl.nextPageToken()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.GetStaticIpsResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait HeaderEnum { def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum }
  object HeaderEnum {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.HeaderEnum): HeaderEnum = value match {
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT => Accept
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_CHARSET => `Accept-Charset`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_DATETIME => `Accept-Datetime`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_ENCODING => `Accept-Encoding`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_LANGUAGE => `Accept-Language`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.AUTHORIZATION => Authorization
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_FORWARDED_PROTO => `CloudFront-Forwarded-Proto`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_DESKTOP_VIEWER => `CloudFront-Is-Desktop-Viewer`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_MOBILE_VIEWER => `CloudFront-Is-Mobile-Viewer`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_SMART_TV_VIEWER => `CloudFront-Is-SmartTV-Viewer`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_TABLET_VIEWER => `CloudFront-Is-Tablet-Viewer`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_VIEWER_COUNTRY => `CloudFront-Viewer-Country`
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.HOST => Host
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.ORIGIN => Origin
      case software.amazon.awssdk.services.lightsail.model.HeaderEnum.REFERER => Referer
    }
    final case object unknownToSdkVersion extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.UNKNOWN_TO_SDK_VERSION }
    final case object Accept extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT }
    final case object `Accept-Charset` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_CHARSET }
    final case object `Accept-Datetime` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_DATETIME }
    final case object `Accept-Encoding` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_ENCODING }
    final case object `Accept-Language` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.ACCEPT_LANGUAGE }
    final case object Authorization extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.AUTHORIZATION }
    final case object `CloudFront-Forwarded-Proto` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_FORWARDED_PROTO }
    final case object `CloudFront-Is-Desktop-Viewer` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_DESKTOP_VIEWER }
    final case object `CloudFront-Is-Mobile-Viewer` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_MOBILE_VIEWER }
    final case object `CloudFront-Is-SmartTV-Viewer` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_SMART_TV_VIEWER }
    final case object `CloudFront-Is-Tablet-Viewer` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_IS_TABLET_VIEWER }
    final case object `CloudFront-Viewer-Country` extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.CLOUD_FRONT_VIEWER_COUNTRY }
    final case object Host extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.HOST }
    final case object Origin extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.ORIGIN }
    final case object Referer extends HeaderEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.HeaderEnum = software.amazon.awssdk.services.lightsail.model.HeaderEnum.REFERER }
  }
  type HeaderForwardList = List[HeaderEnum]
  case class HeaderObject(option: scala.Option[ForwardValues] = None, headersAllowList: scala.Option[Iterable[HeaderEnum]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.HeaderObject = {
      import HeaderObject.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.HeaderObject.builder().optionallyWith(option.map(value => value.unwrap))(_.option).optionallyWith(headersAllowList.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.headersAllowListWithStrings).build()
    }
    def asReadOnly: HeaderObject.ReadOnly = HeaderObject.wrap(buildAwsValue())
  }
  object HeaderObject {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.HeaderObject] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: HeaderObject = HeaderObject(optionValue.map(value => value), headersAllowListValue.map(value => value))
      def optionValue: scala.Option[ForwardValues]
      def headersAllowListValue: scala.Option[List[HeaderEnum]]
      def option: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ForwardValues] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("option", optionValue)
      def headersAllowList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[HeaderEnum]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("headersAllowList", headersAllowListValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.HeaderObject) extends HeaderObject.ReadOnly {
      override def optionValue: scala.Option[ForwardValues] = scala.Option(impl.option()).map(value => ForwardValues.wrap(value))
      override def headersAllowListValue: scala.Option[List[HeaderEnum]] = scala.Option(impl.headersAllowList()).map(value => value.asScala.map { item => 
        HeaderEnum.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.HeaderObject): ReadOnly = new Wrapper(impl)
  }
  case class HostKeyAttributes(algorithm: scala.Option[String] = None, publicKey: scala.Option[String] = None, witnessedAt: scala.Option[primitives.IsoDate] = None, fingerprintSHA1: scala.Option[String] = None, fingerprintSHA256: scala.Option[String] = None, notValidBefore: scala.Option[primitives.IsoDate] = None, notValidAfter: scala.Option[primitives.IsoDate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.HostKeyAttributes = {
      import HostKeyAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.HostKeyAttributes.builder().optionallyWith(algorithm.map(value => value: java.lang.String))(_.algorithm).optionallyWith(publicKey.map(value => value: java.lang.String))(_.publicKey).optionallyWith(witnessedAt.map(value => value: java.time.Instant))(_.witnessedAt).optionallyWith(fingerprintSHA1.map(value => value: java.lang.String))(_.fingerprintSHA1).optionallyWith(fingerprintSHA256.map(value => value: java.lang.String))(_.fingerprintSHA256).optionallyWith(notValidBefore.map(value => value: java.time.Instant))(_.notValidBefore).optionallyWith(notValidAfter.map(value => value: java.time.Instant))(_.notValidAfter).build()
    }
    def asReadOnly: HostKeyAttributes.ReadOnly = HostKeyAttributes.wrap(buildAwsValue())
  }
  object HostKeyAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.HostKeyAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: HostKeyAttributes = HostKeyAttributes(algorithmValue.map(value => value), publicKeyValue.map(value => value), witnessedAtValue.map(value => value), fingerprintSHA1Value.map(value => value), fingerprintSHA256Value.map(value => value), notValidBeforeValue.map(value => value), notValidAfterValue.map(value => value))
      def algorithmValue: scala.Option[String]
      def publicKeyValue: scala.Option[String]
      def witnessedAtValue: scala.Option[primitives.IsoDate]
      def fingerprintSHA1Value: scala.Option[String]
      def fingerprintSHA256Value: scala.Option[String]
      def notValidBeforeValue: scala.Option[primitives.IsoDate]
      def notValidAfterValue: scala.Option[primitives.IsoDate]
      def algorithm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("algorithm", algorithmValue)
      def publicKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicKey", publicKeyValue)
      def witnessedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("witnessedAt", witnessedAtValue)
      def fingerprintSHA1: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fingerprintSHA1", fingerprintSHA1Value)
      def fingerprintSHA256: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fingerprintSHA256", fingerprintSHA256Value)
      def notValidBefore: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notValidBefore", notValidBeforeValue)
      def notValidAfter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notValidAfter", notValidAfterValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.HostKeyAttributes) extends HostKeyAttributes.ReadOnly {
      override def algorithmValue: scala.Option[String] = scala.Option(impl.algorithm()).map(value => value: String)
      override def publicKeyValue: scala.Option[String] = scala.Option(impl.publicKey()).map(value => value: String)
      override def witnessedAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.witnessedAt()).map(value => value: primitives.IsoDate)
      override def fingerprintSHA1Value: scala.Option[String] = scala.Option(impl.fingerprintSHA1()).map(value => value: String)
      override def fingerprintSHA256Value: scala.Option[String] = scala.Option(impl.fingerprintSHA256()).map(value => value: String)
      override def notValidBeforeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.notValidBefore()).map(value => value: primitives.IsoDate)
      override def notValidAfterValue: scala.Option[primitives.IsoDate] = scala.Option(impl.notValidAfter()).map(value => value: primitives.IsoDate)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.HostKeyAttributes): ReadOnly = new Wrapper(impl)
  }
  type HostKeysList = List[HostKeyAttributes]
  case class ImportKeyPairRequest(keyPairName: primitives.ResourceName, publicKeyBase64: primitives.Base64) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ImportKeyPairRequest = {
      import ImportKeyPairRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ImportKeyPairRequest.builder().keyPairName(keyPairName: java.lang.String).publicKeyBase64(publicKeyBase64: java.lang.String).build()
    }
    def asReadOnly: ImportKeyPairRequest.ReadOnly = ImportKeyPairRequest.wrap(buildAwsValue())
  }
  object ImportKeyPairRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ImportKeyPairRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ImportKeyPairRequest = ImportKeyPairRequest(keyPairNameValue, publicKeyBase64Value)
      def keyPairNameValue: primitives.ResourceName
      def publicKeyBase64Value: primitives.Base64
      def keyPairName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(keyPairNameValue)
      def publicKeyBase64: ZIO[Any, Nothing, primitives.Base64] = ZIO.succeed(publicKeyBase64Value)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ImportKeyPairRequest) extends ImportKeyPairRequest.ReadOnly {
      override def keyPairNameValue: primitives.ResourceName = impl.keyPairName(): primitives.ResourceName
      override def publicKeyBase64Value: primitives.Base64 = impl.publicKeyBase64(): primitives.Base64
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ImportKeyPairRequest): ReadOnly = new Wrapper(impl)
  }
  case class ImportKeyPairResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ImportKeyPairResponse = {
      import ImportKeyPairResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ImportKeyPairResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: ImportKeyPairResponse.ReadOnly = ImportKeyPairResponse.wrap(buildAwsValue())
  }
  object ImportKeyPairResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ImportKeyPairResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ImportKeyPairResponse = ImportKeyPairResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ImportKeyPairResponse) extends ImportKeyPairResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ImportKeyPairResponse): ReadOnly = new Wrapper(impl)
  }
  case class InputOrigin(name: scala.Option[primitives.ResourceName] = None, regionName: scala.Option[RegionName] = None, protocolPolicy: scala.Option[OriginProtocolPolicyEnum] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InputOrigin = {
      import InputOrigin.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InputOrigin.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(regionName.map(value => value.unwrap))(_.regionName).optionallyWith(protocolPolicy.map(value => value.unwrap))(_.protocolPolicy).build()
    }
    def asReadOnly: InputOrigin.ReadOnly = InputOrigin.wrap(buildAwsValue())
  }
  object InputOrigin {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InputOrigin] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InputOrigin = InputOrigin(nameValue.map(value => value), regionNameValue.map(value => value), protocolPolicyValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def regionNameValue: scala.Option[RegionName]
      def protocolPolicyValue: scala.Option[OriginProtocolPolicyEnum]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def regionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regionName", regionNameValue)
      def protocolPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, OriginProtocolPolicyEnum] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocolPolicy", protocolPolicyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InputOrigin) extends InputOrigin.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def regionNameValue: scala.Option[RegionName] = scala.Option(impl.regionName()).map(value => RegionName.wrap(value))
      override def protocolPolicyValue: scala.Option[OriginProtocolPolicyEnum] = scala.Option(impl.protocolPolicy()).map(value => OriginProtocolPolicyEnum.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InputOrigin): ReadOnly = new Wrapper(impl)
  }
  case class Instance(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, blueprintId: scala.Option[primitives.NonEmptyString] = None, blueprintName: scala.Option[primitives.NonEmptyString] = None, bundleId: scala.Option[primitives.NonEmptyString] = None, addOns: scala.Option[Iterable[AddOn]] = None, isStaticIp: scala.Option[Boolean] = None, privateIpAddress: scala.Option[primitives.IpAddress] = None, publicIpAddress: scala.Option[primitives.IpAddress] = None, ipv6Addresses: scala.Option[Iterable[primitives.Ipv6Address]] = None, ipAddressType: scala.Option[IpAddressType] = None, hardware: scala.Option[InstanceHardware] = None, networking: scala.Option[InstanceNetworking] = None, state: scala.Option[InstanceState] = None, username: scala.Option[primitives.NonEmptyString] = None, sshKeyName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Instance = {
      import Instance.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Instance.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(blueprintId.map(value => value: java.lang.String))(_.blueprintId).optionallyWith(blueprintName.map(value => value: java.lang.String))(_.blueprintName).optionallyWith(bundleId.map(value => value: java.lang.String))(_.bundleId).optionallyWith(addOns.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.addOns).optionallyWith(isStaticIp.map(value => value: java.lang.Boolean))(_.isStaticIp).optionallyWith(privateIpAddress.map(value => value: java.lang.String))(_.privateIpAddress).optionallyWith(publicIpAddress.map(value => value: java.lang.String))(_.publicIpAddress).optionallyWith(ipv6Addresses.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ipv6Addresses).optionallyWith(ipAddressType.map(value => value.unwrap))(_.ipAddressType).optionallyWith(hardware.map(value => value.buildAwsValue()))(_.hardware).optionallyWith(networking.map(value => value.buildAwsValue()))(_.networking).optionallyWith(state.map(value => value.buildAwsValue()))(_.state).optionallyWith(username.map(value => value: java.lang.String))(_.username).optionallyWith(sshKeyName.map(value => value: java.lang.String))(_.sshKeyName).build()
    }
    def asReadOnly: Instance.ReadOnly = Instance.wrap(buildAwsValue())
  }
  object Instance {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Instance] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Instance = Instance(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), blueprintIdValue.map(value => value), blueprintNameValue.map(value => value), bundleIdValue.map(value => value), addOnsValue.map(value => value.map { item => 
        item.editable
      }), isStaticIpValue.map(value => value), privateIpAddressValue.map(value => value), publicIpAddressValue.map(value => value), ipv6AddressesValue.map(value => value), ipAddressTypeValue.map(value => value), hardwareValue.map(value => value.editable), networkingValue.map(value => value.editable), stateValue.map(value => value.editable), usernameValue.map(value => value), sshKeyNameValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def blueprintIdValue: scala.Option[primitives.NonEmptyString]
      def blueprintNameValue: scala.Option[primitives.NonEmptyString]
      def bundleIdValue: scala.Option[primitives.NonEmptyString]
      def addOnsValue: scala.Option[List[AddOn.ReadOnly]]
      def isStaticIpValue: scala.Option[Boolean]
      def privateIpAddressValue: scala.Option[primitives.IpAddress]
      def publicIpAddressValue: scala.Option[primitives.IpAddress]
      def ipv6AddressesValue: scala.Option[List[primitives.Ipv6Address]]
      def ipAddressTypeValue: scala.Option[IpAddressType]
      def hardwareValue: scala.Option[InstanceHardware.ReadOnly]
      def networkingValue: scala.Option[InstanceNetworking.ReadOnly]
      def stateValue: scala.Option[InstanceState.ReadOnly]
      def usernameValue: scala.Option[primitives.NonEmptyString]
      def sshKeyNameValue: scala.Option[primitives.ResourceName]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def blueprintId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("blueprintId", blueprintIdValue)
      def blueprintName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("blueprintName", blueprintNameValue)
      def bundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundleId", bundleIdValue)
      def addOns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AddOn.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("addOns", addOnsValue)
      def isStaticIp: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isStaticIp", isStaticIpValue)
      def privateIpAddress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IpAddress] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("privateIpAddress", privateIpAddressValue)
      def publicIpAddress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IpAddress] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicIpAddress", publicIpAddressValue)
      def ipv6Addresses: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Ipv6Address]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipv6Addresses", ipv6AddressesValue)
      def ipAddressType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IpAddressType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddressType", ipAddressTypeValue)
      def hardware: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceHardware.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("hardware", hardwareValue)
      def networking: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceNetworking.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("networking", networkingValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceState.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def username: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("username", usernameValue)
      def sshKeyName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sshKeyName", sshKeyNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Instance) extends Instance.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def blueprintIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.blueprintId()).map(value => value: primitives.NonEmptyString)
      override def blueprintNameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.blueprintName()).map(value => value: primitives.NonEmptyString)
      override def bundleIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.bundleId()).map(value => value: primitives.NonEmptyString)
      override def addOnsValue: scala.Option[List[AddOn.ReadOnly]] = scala.Option(impl.addOns()).map(value => value.asScala.map { item => 
        AddOn.wrap(item)
      }.toList)
      override def isStaticIpValue: scala.Option[Boolean] = scala.Option(impl.isStaticIp()).map(value => value: Boolean)
      override def privateIpAddressValue: scala.Option[primitives.IpAddress] = scala.Option(impl.privateIpAddress()).map(value => value: primitives.IpAddress)
      override def publicIpAddressValue: scala.Option[primitives.IpAddress] = scala.Option(impl.publicIpAddress()).map(value => value: primitives.IpAddress)
      override def ipv6AddressesValue: scala.Option[List[primitives.Ipv6Address]] = scala.Option(impl.ipv6Addresses()).map(value => value.asScala.map { item => 
        item: primitives.Ipv6Address
      }.toList)
      override def ipAddressTypeValue: scala.Option[IpAddressType] = scala.Option(impl.ipAddressType()).map(value => IpAddressType.wrap(value))
      override def hardwareValue: scala.Option[InstanceHardware.ReadOnly] = scala.Option(impl.hardware()).map(value => InstanceHardware.wrap(value))
      override def networkingValue: scala.Option[InstanceNetworking.ReadOnly] = scala.Option(impl.networking()).map(value => InstanceNetworking.wrap(value))
      override def stateValue: scala.Option[InstanceState.ReadOnly] = scala.Option(impl.state()).map(value => InstanceState.wrap(value))
      override def usernameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.username()).map(value => value: primitives.NonEmptyString)
      override def sshKeyNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.sshKeyName()).map(value => value: primitives.ResourceName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Instance): ReadOnly = new Wrapper(impl)
  }
  case class InstanceAccessDetails(certKey: scala.Option[String] = None, expiresAt: scala.Option[primitives.IsoDate] = None, ipAddress: scala.Option[primitives.IpAddress] = None, password: scala.Option[String] = None, passwordData: scala.Option[PasswordData] = None, privateKey: scala.Option[String] = None, protocol: scala.Option[InstanceAccessProtocol] = None, instanceName: scala.Option[primitives.ResourceName] = None, username: scala.Option[String] = None, hostKeys: scala.Option[Iterable[HostKeyAttributes]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceAccessDetails = {
      import InstanceAccessDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceAccessDetails.builder().optionallyWith(certKey.map(value => value: java.lang.String))(_.certKey).optionallyWith(expiresAt.map(value => value: java.time.Instant))(_.expiresAt).optionallyWith(ipAddress.map(value => value: java.lang.String))(_.ipAddress).optionallyWith(password.map(value => value: java.lang.String))(_.password).optionallyWith(passwordData.map(value => value.buildAwsValue()))(_.passwordData).optionallyWith(privateKey.map(value => value: java.lang.String))(_.privateKey).optionallyWith(protocol.map(value => value.unwrap))(_.protocol).optionallyWith(instanceName.map(value => value: java.lang.String))(_.instanceName).optionallyWith(username.map(value => value: java.lang.String))(_.username).optionallyWith(hostKeys.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.hostKeys).build()
    }
    def asReadOnly: InstanceAccessDetails.ReadOnly = InstanceAccessDetails.wrap(buildAwsValue())
  }
  object InstanceAccessDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceAccessDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceAccessDetails = InstanceAccessDetails(certKeyValue.map(value => value), expiresAtValue.map(value => value), ipAddressValue.map(value => value), passwordValue.map(value => value), passwordDataValue.map(value => value.editable), privateKeyValue.map(value => value), protocolValue.map(value => value), instanceNameValue.map(value => value), usernameValue.map(value => value), hostKeysValue.map(value => value.map { item => 
        item.editable
      }))
      def certKeyValue: scala.Option[String]
      def expiresAtValue: scala.Option[primitives.IsoDate]
      def ipAddressValue: scala.Option[primitives.IpAddress]
      def passwordValue: scala.Option[String]
      def passwordDataValue: scala.Option[PasswordData.ReadOnly]
      def privateKeyValue: scala.Option[String]
      def protocolValue: scala.Option[InstanceAccessProtocol]
      def instanceNameValue: scala.Option[primitives.ResourceName]
      def usernameValue: scala.Option[String]
      def hostKeysValue: scala.Option[List[HostKeyAttributes.ReadOnly]]
      def certKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certKey", certKeyValue)
      def expiresAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("expiresAt", expiresAtValue)
      def ipAddress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IpAddress] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddress", ipAddressValue)
      def password: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("password", passwordValue)
      def passwordData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PasswordData.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("passwordData", passwordDataValue)
      def privateKey: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("privateKey", privateKeyValue)
      def protocol: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceAccessProtocol] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocol", protocolValue)
      def instanceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceName", instanceNameValue)
      def username: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("username", usernameValue)
      def hostKeys: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[HostKeyAttributes.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("hostKeys", hostKeysValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceAccessDetails) extends InstanceAccessDetails.ReadOnly {
      override def certKeyValue: scala.Option[String] = scala.Option(impl.certKey()).map(value => value: String)
      override def expiresAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.expiresAt()).map(value => value: primitives.IsoDate)
      override def ipAddressValue: scala.Option[primitives.IpAddress] = scala.Option(impl.ipAddress()).map(value => value: primitives.IpAddress)
      override def passwordValue: scala.Option[String] = scala.Option(impl.password()).map(value => value: String)
      override def passwordDataValue: scala.Option[PasswordData.ReadOnly] = scala.Option(impl.passwordData()).map(value => PasswordData.wrap(value))
      override def privateKeyValue: scala.Option[String] = scala.Option(impl.privateKey()).map(value => value: String)
      override def protocolValue: scala.Option[InstanceAccessProtocol] = scala.Option(impl.protocol()).map(value => InstanceAccessProtocol.wrap(value))
      override def instanceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.instanceName()).map(value => value: primitives.ResourceName)
      override def usernameValue: scala.Option[String] = scala.Option(impl.username()).map(value => value: String)
      override def hostKeysValue: scala.Option[List[HostKeyAttributes.ReadOnly]] = scala.Option(impl.hostKeys()).map(value => value.asScala.map { item => 
        HostKeyAttributes.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceAccessDetails): ReadOnly = new Wrapper(impl)
  }
  sealed trait InstanceAccessProtocol { def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol }
  object InstanceAccessProtocol {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol): InstanceAccessProtocol = value match {
      case software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol.SSH => ssh
      case software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol.RDP => rdp
    }
    final case object unknownToSdkVersion extends InstanceAccessProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol = software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol.UNKNOWN_TO_SDK_VERSION }
    final case object ssh extends InstanceAccessProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol = software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol.SSH }
    final case object rdp extends InstanceAccessProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol = software.amazon.awssdk.services.lightsail.model.InstanceAccessProtocol.RDP }
  }
  case class InstanceEntry(sourceName: primitives.ResourceName, instanceType: primitives.NonEmptyString, portInfoSource: PortInfoSourceType, userData: scala.Option[String] = None, availabilityZone: String) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceEntry = {
      import InstanceEntry.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceEntry.builder().sourceName(sourceName: java.lang.String).instanceType(instanceType: java.lang.String).portInfoSource(portInfoSource.unwrap).optionallyWith(userData.map(value => value: java.lang.String))(_.userData).availabilityZone(availabilityZone: java.lang.String).build()
    }
    def asReadOnly: InstanceEntry.ReadOnly = InstanceEntry.wrap(buildAwsValue())
  }
  object InstanceEntry {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceEntry] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceEntry = InstanceEntry(sourceNameValue, instanceTypeValue, portInfoSourceValue, userDataValue.map(value => value), availabilityZoneValue)
      def sourceNameValue: primitives.ResourceName
      def instanceTypeValue: primitives.NonEmptyString
      def portInfoSourceValue: PortInfoSourceType
      def userDataValue: scala.Option[String]
      def availabilityZoneValue: String
      def sourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(sourceNameValue)
      def instanceType: ZIO[Any, Nothing, primitives.NonEmptyString] = ZIO.succeed(instanceTypeValue)
      def portInfoSource: ZIO[Any, Nothing, PortInfoSourceType] = ZIO.succeed(portInfoSourceValue)
      def userData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("userData", userDataValue)
      def availabilityZone: ZIO[Any, Nothing, String] = ZIO.succeed(availabilityZoneValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceEntry) extends InstanceEntry.ReadOnly {
      override def sourceNameValue: primitives.ResourceName = impl.sourceName(): primitives.ResourceName
      override def instanceTypeValue: primitives.NonEmptyString = impl.instanceType(): primitives.NonEmptyString
      override def portInfoSourceValue: PortInfoSourceType = PortInfoSourceType.wrap(impl.portInfoSource())
      override def userDataValue: scala.Option[String] = scala.Option(impl.userData()).map(value => value: String)
      override def availabilityZoneValue: String = impl.availabilityZone(): String
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceEntry): ReadOnly = new Wrapper(impl)
  }
  type InstanceEntryList = List[InstanceEntry]
  case class InstanceHardware(cpuCount: scala.Option[primitives.Integer] = None, disks: scala.Option[Iterable[Disk]] = None, ramSizeInGb: scala.Option[Float] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceHardware = {
      import InstanceHardware.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceHardware.builder().optionallyWith(cpuCount.map(value => value: java.lang.Integer))(_.cpuCount).optionallyWith(disks.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.disks).optionallyWith(ramSizeInGb.map(value => value: java.lang.Float))(_.ramSizeInGb).build()
    }
    def asReadOnly: InstanceHardware.ReadOnly = InstanceHardware.wrap(buildAwsValue())
  }
  object InstanceHardware {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceHardware] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceHardware = InstanceHardware(cpuCountValue.map(value => value), disksValue.map(value => value.map { item => 
        item.editable
      }), ramSizeInGbValue.map(value => value))
      def cpuCountValue: scala.Option[primitives.Integer]
      def disksValue: scala.Option[List[Disk.ReadOnly]]
      def ramSizeInGbValue: scala.Option[Float]
      def cpuCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cpuCount", cpuCountValue)
      def disks: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Disk.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("disks", disksValue)
      def ramSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ramSizeInGb", ramSizeInGbValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceHardware) extends InstanceHardware.ReadOnly {
      override def cpuCountValue: scala.Option[primitives.Integer] = scala.Option(impl.cpuCount()).map(value => value: primitives.Integer)
      override def disksValue: scala.Option[List[Disk.ReadOnly]] = scala.Option(impl.disks()).map(value => value.asScala.map { item => 
        Disk.wrap(item)
      }.toList)
      override def ramSizeInGbValue: scala.Option[Float] = scala.Option(impl.ramSizeInGb()).map(value => value: Float)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceHardware): ReadOnly = new Wrapper(impl)
  }
  sealed trait InstanceHealthReason { def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason }
  object InstanceHealthReason {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason): InstanceHealthReason = value match {
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.LB_REGISTRATION_IN_PROGRESS => `Lb.RegistrationInProgress`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.LB_INITIAL_HEALTH_CHECKING => `Lb.InitialHealthChecking`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.LB_INTERNAL_ERROR => `Lb.InternalError`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_RESPONSE_CODE_MISMATCH => `Instance.ResponseCodeMismatch`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_TIMEOUT => `Instance.Timeout`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_FAILED_HEALTH_CHECKS => `Instance.FailedHealthChecks`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_NOT_REGISTERED => `Instance.NotRegistered`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_NOT_IN_USE => `Instance.NotInUse`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_DEREGISTRATION_IN_PROGRESS => `Instance.DeregistrationInProgress`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_INVALID_STATE => `Instance.InvalidState`
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_IP_UNUSABLE => `Instance.IpUnusable`
    }
    final case object unknownToSdkVersion extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.UNKNOWN_TO_SDK_VERSION }
    final case object `Lb.RegistrationInProgress` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.LB_REGISTRATION_IN_PROGRESS }
    final case object `Lb.InitialHealthChecking` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.LB_INITIAL_HEALTH_CHECKING }
    final case object `Lb.InternalError` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.LB_INTERNAL_ERROR }
    final case object `Instance.ResponseCodeMismatch` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_RESPONSE_CODE_MISMATCH }
    final case object `Instance.Timeout` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_TIMEOUT }
    final case object `Instance.FailedHealthChecks` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_FAILED_HEALTH_CHECKS }
    final case object `Instance.NotRegistered` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_NOT_REGISTERED }
    final case object `Instance.NotInUse` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_NOT_IN_USE }
    final case object `Instance.DeregistrationInProgress` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_DEREGISTRATION_IN_PROGRESS }
    final case object `Instance.InvalidState` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_INVALID_STATE }
    final case object `Instance.IpUnusable` extends InstanceHealthReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthReason = software.amazon.awssdk.services.lightsail.model.InstanceHealthReason.INSTANCE_IP_UNUSABLE }
  }
  sealed trait InstanceHealthState { def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState }
  object InstanceHealthState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.InstanceHealthState): InstanceHealthState = value match {
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthState.INITIAL => initial
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthState.HEALTHY => healthy
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNHEALTHY => unhealthy
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNUSED => unused
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthState.DRAINING => draining
      case software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNAVAILABLE => unavailable
    }
    final case object unknownToSdkVersion extends InstanceHealthState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState = software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNKNOWN_TO_SDK_VERSION }
    final case object initial extends InstanceHealthState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState = software.amazon.awssdk.services.lightsail.model.InstanceHealthState.INITIAL }
    final case object healthy extends InstanceHealthState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState = software.amazon.awssdk.services.lightsail.model.InstanceHealthState.HEALTHY }
    final case object unhealthy extends InstanceHealthState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState = software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNHEALTHY }
    final case object unused extends InstanceHealthState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState = software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNUSED }
    final case object draining extends InstanceHealthState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState = software.amazon.awssdk.services.lightsail.model.InstanceHealthState.DRAINING }
    final case object unavailable extends InstanceHealthState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceHealthState = software.amazon.awssdk.services.lightsail.model.InstanceHealthState.UNAVAILABLE }
  }
  case class InstanceHealthSummary(instanceName: scala.Option[primitives.ResourceName] = None, instanceHealth: scala.Option[InstanceHealthState] = None, instanceHealthReason: scala.Option[InstanceHealthReason] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceHealthSummary = {
      import InstanceHealthSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceHealthSummary.builder().optionallyWith(instanceName.map(value => value: java.lang.String))(_.instanceName).optionallyWith(instanceHealth.map(value => value.unwrap))(_.instanceHealth).optionallyWith(instanceHealthReason.map(value => value.unwrap))(_.instanceHealthReason).build()
    }
    def asReadOnly: InstanceHealthSummary.ReadOnly = InstanceHealthSummary.wrap(buildAwsValue())
  }
  object InstanceHealthSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceHealthSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceHealthSummary = InstanceHealthSummary(instanceNameValue.map(value => value), instanceHealthValue.map(value => value), instanceHealthReasonValue.map(value => value))
      def instanceNameValue: scala.Option[primitives.ResourceName]
      def instanceHealthValue: scala.Option[InstanceHealthState]
      def instanceHealthReasonValue: scala.Option[InstanceHealthReason]
      def instanceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceName", instanceNameValue)
      def instanceHealth: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceHealthState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceHealth", instanceHealthValue)
      def instanceHealthReason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceHealthReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceHealthReason", instanceHealthReasonValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceHealthSummary) extends InstanceHealthSummary.ReadOnly {
      override def instanceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.instanceName()).map(value => value: primitives.ResourceName)
      override def instanceHealthValue: scala.Option[InstanceHealthState] = scala.Option(impl.instanceHealth()).map(value => InstanceHealthState.wrap(value))
      override def instanceHealthReasonValue: scala.Option[InstanceHealthReason] = scala.Option(impl.instanceHealthReason()).map(value => InstanceHealthReason.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceHealthSummary): ReadOnly = new Wrapper(impl)
  }
  type InstanceHealthSummaryList = List[InstanceHealthSummary]
  type InstanceList = List[Instance]
  sealed trait InstanceMetricName { def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName }
  object InstanceMetricName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.InstanceMetricName): InstanceMetricName = value match {
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.CPU_UTILIZATION => CPUUtilization
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.NETWORK_IN => NetworkIn
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.NETWORK_OUT => NetworkOut
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.STATUS_CHECK_FAILED => StatusCheckFailed
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.STATUS_CHECK_FAILED_INSTANCE => StatusCheckFailed_Instance
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.STATUS_CHECK_FAILED_SYSTEM => StatusCheckFailed_System
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.BURST_CAPACITY_TIME => BurstCapacityTime
      case software.amazon.awssdk.services.lightsail.model.InstanceMetricName.BURST_CAPACITY_PERCENTAGE => BurstCapacityPercentage
    }
    final case object unknownToSdkVersion extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.UNKNOWN_TO_SDK_VERSION }
    final case object CPUUtilization extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.CPU_UTILIZATION }
    final case object NetworkIn extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.NETWORK_IN }
    final case object NetworkOut extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.NETWORK_OUT }
    final case object StatusCheckFailed extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.STATUS_CHECK_FAILED }
    final case object StatusCheckFailed_Instance extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.STATUS_CHECK_FAILED_INSTANCE }
    final case object StatusCheckFailed_System extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.STATUS_CHECK_FAILED_SYSTEM }
    final case object BurstCapacityTime extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.BURST_CAPACITY_TIME }
    final case object BurstCapacityPercentage extends InstanceMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceMetricName = software.amazon.awssdk.services.lightsail.model.InstanceMetricName.BURST_CAPACITY_PERCENTAGE }
  }
  case class InstanceNetworking(monthlyTransfer: scala.Option[MonthlyTransfer] = None, ports: scala.Option[Iterable[InstancePortInfo]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceNetworking = {
      import InstanceNetworking.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceNetworking.builder().optionallyWith(monthlyTransfer.map(value => value.buildAwsValue()))(_.monthlyTransfer).optionallyWith(ports.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.ports).build()
    }
    def asReadOnly: InstanceNetworking.ReadOnly = InstanceNetworking.wrap(buildAwsValue())
  }
  object InstanceNetworking {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceNetworking] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceNetworking = InstanceNetworking(monthlyTransferValue.map(value => value.editable), portsValue.map(value => value.map { item => 
        item.editable
      }))
      def monthlyTransferValue: scala.Option[MonthlyTransfer.ReadOnly]
      def portsValue: scala.Option[List[InstancePortInfo.ReadOnly]]
      def monthlyTransfer: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MonthlyTransfer.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("monthlyTransfer", monthlyTransferValue)
      def ports: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[InstancePortInfo.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ports", portsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceNetworking) extends InstanceNetworking.ReadOnly {
      override def monthlyTransferValue: scala.Option[MonthlyTransfer.ReadOnly] = scala.Option(impl.monthlyTransfer()).map(value => MonthlyTransfer.wrap(value))
      override def portsValue: scala.Option[List[InstancePortInfo.ReadOnly]] = scala.Option(impl.ports()).map(value => value.asScala.map { item => 
        InstancePortInfo.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceNetworking): ReadOnly = new Wrapper(impl)
  }
  sealed trait InstancePlatform { def unwrap: software.amazon.awssdk.services.lightsail.model.InstancePlatform }
  object InstancePlatform {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.InstancePlatform): InstancePlatform = value match {
      case software.amazon.awssdk.services.lightsail.model.InstancePlatform.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.InstancePlatform.LINUX_UNIX => LINUX_UNIX
      case software.amazon.awssdk.services.lightsail.model.InstancePlatform.WINDOWS => WINDOWS
    }
    final case object unknownToSdkVersion extends InstancePlatform { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstancePlatform = software.amazon.awssdk.services.lightsail.model.InstancePlatform.UNKNOWN_TO_SDK_VERSION }
    final case object LINUX_UNIX extends InstancePlatform { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstancePlatform = software.amazon.awssdk.services.lightsail.model.InstancePlatform.LINUX_UNIX }
    final case object WINDOWS extends InstancePlatform { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstancePlatform = software.amazon.awssdk.services.lightsail.model.InstancePlatform.WINDOWS }
  }
  type InstancePlatformList = List[InstancePlatform]
  case class InstancePortInfo(fromPort: scala.Option[primitives.Port] = None, toPort: scala.Option[primitives.Port] = None, protocol: scala.Option[NetworkProtocol] = None, accessFrom: scala.Option[String] = None, accessType: scala.Option[PortAccessType] = None, commonName: scala.Option[String] = None, accessDirection: scala.Option[AccessDirection] = None, cidrs: scala.Option[Iterable[String]] = None, ipv6Cidrs: scala.Option[Iterable[String]] = None, cidrListAliases: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstancePortInfo = {
      import InstancePortInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstancePortInfo.builder().optionallyWith(fromPort.map(value => value: java.lang.Integer))(_.fromPort).optionallyWith(toPort.map(value => value: java.lang.Integer))(_.toPort).optionallyWith(protocol.map(value => value.unwrap))(_.protocol).optionallyWith(accessFrom.map(value => value: java.lang.String))(_.accessFrom).optionallyWith(accessType.map(value => value.unwrap))(_.accessType).optionallyWith(commonName.map(value => value: java.lang.String))(_.commonName).optionallyWith(accessDirection.map(value => value.unwrap))(_.accessDirection).optionallyWith(cidrs.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.cidrs).optionallyWith(ipv6Cidrs.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ipv6Cidrs).optionallyWith(cidrListAliases.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.cidrListAliases).build()
    }
    def asReadOnly: InstancePortInfo.ReadOnly = InstancePortInfo.wrap(buildAwsValue())
  }
  object InstancePortInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstancePortInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstancePortInfo = InstancePortInfo(fromPortValue.map(value => value), toPortValue.map(value => value), protocolValue.map(value => value), accessFromValue.map(value => value), accessTypeValue.map(value => value), commonNameValue.map(value => value), accessDirectionValue.map(value => value), cidrsValue.map(value => value), ipv6CidrsValue.map(value => value), cidrListAliasesValue.map(value => value))
      def fromPortValue: scala.Option[primitives.Port]
      def toPortValue: scala.Option[primitives.Port]
      def protocolValue: scala.Option[NetworkProtocol]
      def accessFromValue: scala.Option[String]
      def accessTypeValue: scala.Option[PortAccessType]
      def commonNameValue: scala.Option[String]
      def accessDirectionValue: scala.Option[AccessDirection]
      def cidrsValue: scala.Option[List[String]]
      def ipv6CidrsValue: scala.Option[List[String]]
      def cidrListAliasesValue: scala.Option[List[String]]
      def fromPort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Port] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromPort", fromPortValue)
      def toPort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Port] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("toPort", toPortValue)
      def protocol: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, NetworkProtocol] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocol", protocolValue)
      def accessFrom: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessFrom", accessFromValue)
      def accessType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PortAccessType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessType", accessTypeValue)
      def commonName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("commonName", commonNameValue)
      def accessDirection: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AccessDirection] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessDirection", accessDirectionValue)
      def cidrs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cidrs", cidrsValue)
      def ipv6Cidrs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipv6Cidrs", ipv6CidrsValue)
      def cidrListAliases: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cidrListAliases", cidrListAliasesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstancePortInfo) extends InstancePortInfo.ReadOnly {
      override def fromPortValue: scala.Option[primitives.Port] = scala.Option(impl.fromPort()).map(value => value: primitives.Port)
      override def toPortValue: scala.Option[primitives.Port] = scala.Option(impl.toPort()).map(value => value: primitives.Port)
      override def protocolValue: scala.Option[NetworkProtocol] = scala.Option(impl.protocol()).map(value => NetworkProtocol.wrap(value))
      override def accessFromValue: scala.Option[String] = scala.Option(impl.accessFrom()).map(value => value: String)
      override def accessTypeValue: scala.Option[PortAccessType] = scala.Option(impl.accessType()).map(value => PortAccessType.wrap(value))
      override def commonNameValue: scala.Option[String] = scala.Option(impl.commonName()).map(value => value: String)
      override def accessDirectionValue: scala.Option[AccessDirection] = scala.Option(impl.accessDirection()).map(value => AccessDirection.wrap(value))
      override def cidrsValue: scala.Option[List[String]] = scala.Option(impl.cidrs()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def ipv6CidrsValue: scala.Option[List[String]] = scala.Option(impl.ipv6Cidrs()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def cidrListAliasesValue: scala.Option[List[String]] = scala.Option(impl.cidrListAliases()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstancePortInfo): ReadOnly = new Wrapper(impl)
  }
  type InstancePortInfoList = List[InstancePortInfo]
  case class InstancePortState(fromPort: scala.Option[primitives.Port] = None, toPort: scala.Option[primitives.Port] = None, protocol: scala.Option[NetworkProtocol] = None, state: scala.Option[PortState] = None, cidrs: scala.Option[Iterable[String]] = None, ipv6Cidrs: scala.Option[Iterable[String]] = None, cidrListAliases: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstancePortState = {
      import InstancePortState.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstancePortState.builder().optionallyWith(fromPort.map(value => value: java.lang.Integer))(_.fromPort).optionallyWith(toPort.map(value => value: java.lang.Integer))(_.toPort).optionallyWith(protocol.map(value => value.unwrap))(_.protocol).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(cidrs.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.cidrs).optionallyWith(ipv6Cidrs.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ipv6Cidrs).optionallyWith(cidrListAliases.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.cidrListAliases).build()
    }
    def asReadOnly: InstancePortState.ReadOnly = InstancePortState.wrap(buildAwsValue())
  }
  object InstancePortState {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstancePortState] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstancePortState = InstancePortState(fromPortValue.map(value => value), toPortValue.map(value => value), protocolValue.map(value => value), stateValue.map(value => value), cidrsValue.map(value => value), ipv6CidrsValue.map(value => value), cidrListAliasesValue.map(value => value))
      def fromPortValue: scala.Option[primitives.Port]
      def toPortValue: scala.Option[primitives.Port]
      def protocolValue: scala.Option[NetworkProtocol]
      def stateValue: scala.Option[PortState]
      def cidrsValue: scala.Option[List[String]]
      def ipv6CidrsValue: scala.Option[List[String]]
      def cidrListAliasesValue: scala.Option[List[String]]
      def fromPort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Port] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromPort", fromPortValue)
      def toPort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Port] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("toPort", toPortValue)
      def protocol: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, NetworkProtocol] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocol", protocolValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PortState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def cidrs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cidrs", cidrsValue)
      def ipv6Cidrs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipv6Cidrs", ipv6CidrsValue)
      def cidrListAliases: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cidrListAliases", cidrListAliasesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstancePortState) extends InstancePortState.ReadOnly {
      override def fromPortValue: scala.Option[primitives.Port] = scala.Option(impl.fromPort()).map(value => value: primitives.Port)
      override def toPortValue: scala.Option[primitives.Port] = scala.Option(impl.toPort()).map(value => value: primitives.Port)
      override def protocolValue: scala.Option[NetworkProtocol] = scala.Option(impl.protocol()).map(value => NetworkProtocol.wrap(value))
      override def stateValue: scala.Option[PortState] = scala.Option(impl.state()).map(value => PortState.wrap(value))
      override def cidrsValue: scala.Option[List[String]] = scala.Option(impl.cidrs()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def ipv6CidrsValue: scala.Option[List[String]] = scala.Option(impl.ipv6Cidrs()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def cidrListAliasesValue: scala.Option[List[String]] = scala.Option(impl.cidrListAliases()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstancePortState): ReadOnly = new Wrapper(impl)
  }
  type InstancePortStateList = List[InstancePortState]
  case class InstanceSnapshot(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, state: scala.Option[InstanceSnapshotState] = None, progress: scala.Option[String] = None, fromAttachedDisks: scala.Option[Iterable[Disk]] = None, fromInstanceName: scala.Option[primitives.ResourceName] = None, fromInstanceArn: scala.Option[primitives.NonEmptyString] = None, fromBlueprintId: scala.Option[String] = None, fromBundleId: scala.Option[String] = None, isFromAutoSnapshot: scala.Option[Boolean] = None, sizeInGb: scala.Option[primitives.Integer] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceSnapshot = {
      import InstanceSnapshot.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceSnapshot.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(progress.map(value => value: java.lang.String))(_.progress).optionallyWith(fromAttachedDisks.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.fromAttachedDisks).optionallyWith(fromInstanceName.map(value => value: java.lang.String))(_.fromInstanceName).optionallyWith(fromInstanceArn.map(value => value: java.lang.String))(_.fromInstanceArn).optionallyWith(fromBlueprintId.map(value => value: java.lang.String))(_.fromBlueprintId).optionallyWith(fromBundleId.map(value => value: java.lang.String))(_.fromBundleId).optionallyWith(isFromAutoSnapshot.map(value => value: java.lang.Boolean))(_.isFromAutoSnapshot).optionallyWith(sizeInGb.map(value => value: java.lang.Integer))(_.sizeInGb).build()
    }
    def asReadOnly: InstanceSnapshot.ReadOnly = InstanceSnapshot.wrap(buildAwsValue())
  }
  object InstanceSnapshot {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceSnapshot] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceSnapshot = InstanceSnapshot(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), stateValue.map(value => value), progressValue.map(value => value), fromAttachedDisksValue.map(value => value.map { item => 
        item.editable
      }), fromInstanceNameValue.map(value => value), fromInstanceArnValue.map(value => value), fromBlueprintIdValue.map(value => value), fromBundleIdValue.map(value => value), isFromAutoSnapshotValue.map(value => value), sizeInGbValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def stateValue: scala.Option[InstanceSnapshotState]
      def progressValue: scala.Option[String]
      def fromAttachedDisksValue: scala.Option[List[Disk.ReadOnly]]
      def fromInstanceNameValue: scala.Option[primitives.ResourceName]
      def fromInstanceArnValue: scala.Option[primitives.NonEmptyString]
      def fromBlueprintIdValue: scala.Option[String]
      def fromBundleIdValue: scala.Option[String]
      def isFromAutoSnapshotValue: scala.Option[Boolean]
      def sizeInGbValue: scala.Option[primitives.Integer]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InstanceSnapshotState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def progress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("progress", progressValue)
      def fromAttachedDisks: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Disk.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromAttachedDisks", fromAttachedDisksValue)
      def fromInstanceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromInstanceName", fromInstanceNameValue)
      def fromInstanceArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromInstanceArn", fromInstanceArnValue)
      def fromBlueprintId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromBlueprintId", fromBlueprintIdValue)
      def fromBundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromBundleId", fromBundleIdValue)
      def isFromAutoSnapshot: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isFromAutoSnapshot", isFromAutoSnapshotValue)
      def sizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeInGb", sizeInGbValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceSnapshot) extends InstanceSnapshot.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def stateValue: scala.Option[InstanceSnapshotState] = scala.Option(impl.state()).map(value => InstanceSnapshotState.wrap(value))
      override def progressValue: scala.Option[String] = scala.Option(impl.progress()).map(value => value: String)
      override def fromAttachedDisksValue: scala.Option[List[Disk.ReadOnly]] = scala.Option(impl.fromAttachedDisks()).map(value => value.asScala.map { item => 
        Disk.wrap(item)
      }.toList)
      override def fromInstanceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.fromInstanceName()).map(value => value: primitives.ResourceName)
      override def fromInstanceArnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromInstanceArn()).map(value => value: primitives.NonEmptyString)
      override def fromBlueprintIdValue: scala.Option[String] = scala.Option(impl.fromBlueprintId()).map(value => value: String)
      override def fromBundleIdValue: scala.Option[String] = scala.Option(impl.fromBundleId()).map(value => value: String)
      override def isFromAutoSnapshotValue: scala.Option[Boolean] = scala.Option(impl.isFromAutoSnapshot()).map(value => value: Boolean)
      override def sizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.sizeInGb()).map(value => value: primitives.Integer)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceSnapshot): ReadOnly = new Wrapper(impl)
  }
  case class InstanceSnapshotInfo(fromBundleId: scala.Option[primitives.NonEmptyString] = None, fromBlueprintId: scala.Option[primitives.NonEmptyString] = None, fromDiskInfo: scala.Option[Iterable[DiskInfo]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceSnapshotInfo = {
      import InstanceSnapshotInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceSnapshotInfo.builder().optionallyWith(fromBundleId.map(value => value: java.lang.String))(_.fromBundleId).optionallyWith(fromBlueprintId.map(value => value: java.lang.String))(_.fromBlueprintId).optionallyWith(fromDiskInfo.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.fromDiskInfo).build()
    }
    def asReadOnly: InstanceSnapshotInfo.ReadOnly = InstanceSnapshotInfo.wrap(buildAwsValue())
  }
  object InstanceSnapshotInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceSnapshotInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceSnapshotInfo = InstanceSnapshotInfo(fromBundleIdValue.map(value => value), fromBlueprintIdValue.map(value => value), fromDiskInfoValue.map(value => value.map { item => 
        item.editable
      }))
      def fromBundleIdValue: scala.Option[primitives.NonEmptyString]
      def fromBlueprintIdValue: scala.Option[primitives.NonEmptyString]
      def fromDiskInfoValue: scala.Option[List[DiskInfo.ReadOnly]]
      def fromBundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromBundleId", fromBundleIdValue)
      def fromBlueprintId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromBlueprintId", fromBlueprintIdValue)
      def fromDiskInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[DiskInfo.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromDiskInfo", fromDiskInfoValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotInfo) extends InstanceSnapshotInfo.ReadOnly {
      override def fromBundleIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromBundleId()).map(value => value: primitives.NonEmptyString)
      override def fromBlueprintIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromBlueprintId()).map(value => value: primitives.NonEmptyString)
      override def fromDiskInfoValue: scala.Option[List[DiskInfo.ReadOnly]] = scala.Option(impl.fromDiskInfo()).map(value => value.asScala.map { item => 
        DiskInfo.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotInfo): ReadOnly = new Wrapper(impl)
  }
  type InstanceSnapshotList = List[InstanceSnapshot]
  sealed trait InstanceSnapshotState { def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState }
  object InstanceSnapshotState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState): InstanceSnapshotState = value match {
      case software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.PENDING => pending
      case software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.ERROR => error
      case software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.AVAILABLE => available
    }
    final case object unknownToSdkVersion extends InstanceSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState = software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.UNKNOWN_TO_SDK_VERSION }
    final case object pending extends InstanceSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState = software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.PENDING }
    final case object error extends InstanceSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState = software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.ERROR }
    final case object available extends InstanceSnapshotState { override def unwrap: software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState = software.amazon.awssdk.services.lightsail.model.InstanceSnapshotState.AVAILABLE }
  }
  case class InstanceState(code: scala.Option[primitives.Integer] = None, name: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.InstanceState = {
      import InstanceState.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.InstanceState.builder().optionallyWith(code.map(value => value: java.lang.Integer))(_.code).optionallyWith(name.map(value => value: java.lang.String))(_.name).build()
    }
    def asReadOnly: InstanceState.ReadOnly = InstanceState.wrap(buildAwsValue())
  }
  object InstanceState {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.InstanceState] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InstanceState = InstanceState(codeValue.map(value => value), nameValue.map(value => value))
      def codeValue: scala.Option[primitives.Integer]
      def nameValue: scala.Option[String]
      def code: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("code", codeValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.InstanceState) extends InstanceState.ReadOnly {
      override def codeValue: scala.Option[primitives.Integer] = scala.Option(impl.code()).map(value => value: primitives.Integer)
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.InstanceState): ReadOnly = new Wrapper(impl)
  }
  sealed trait IpAddressType { def unwrap: software.amazon.awssdk.services.lightsail.model.IpAddressType }
  object IpAddressType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.IpAddressType): IpAddressType = value match {
      case software.amazon.awssdk.services.lightsail.model.IpAddressType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.IpAddressType.DUALSTACK => dualstack
      case software.amazon.awssdk.services.lightsail.model.IpAddressType.IPV4 => ipv4
    }
    final case object unknownToSdkVersion extends IpAddressType { override def unwrap: software.amazon.awssdk.services.lightsail.model.IpAddressType = software.amazon.awssdk.services.lightsail.model.IpAddressType.UNKNOWN_TO_SDK_VERSION }
    final case object dualstack extends IpAddressType { override def unwrap: software.amazon.awssdk.services.lightsail.model.IpAddressType = software.amazon.awssdk.services.lightsail.model.IpAddressType.DUALSTACK }
    final case object ipv4 extends IpAddressType { override def unwrap: software.amazon.awssdk.services.lightsail.model.IpAddressType = software.amazon.awssdk.services.lightsail.model.IpAddressType.IPV4 }
  }
  type Ipv6AddressList = List[primitives.Ipv6Address]
  case class IsVpcPeeredRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.IsVpcPeeredRequest = {
      import IsVpcPeeredRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.IsVpcPeeredRequest.builder().build()
    }
    def asReadOnly: IsVpcPeeredRequest.ReadOnly = IsVpcPeeredRequest.wrap(buildAwsValue())
  }
  object IsVpcPeeredRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.IsVpcPeeredRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: IsVpcPeeredRequest = IsVpcPeeredRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.IsVpcPeeredRequest) extends IsVpcPeeredRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.IsVpcPeeredRequest): ReadOnly = new Wrapper(impl)
  }
  case class IsVpcPeeredResponse(isPeered: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.IsVpcPeeredResponse = {
      import IsVpcPeeredResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.IsVpcPeeredResponse.builder().optionallyWith(isPeered.map(value => value: java.lang.Boolean))(_.isPeered).build()
    }
    def asReadOnly: IsVpcPeeredResponse.ReadOnly = IsVpcPeeredResponse.wrap(buildAwsValue())
  }
  object IsVpcPeeredResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.IsVpcPeeredResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: IsVpcPeeredResponse = IsVpcPeeredResponse(isPeeredValue.map(value => value))
      def isPeeredValue: scala.Option[Boolean]
      def isPeered: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isPeered", isPeeredValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.IsVpcPeeredResponse) extends IsVpcPeeredResponse.ReadOnly { override def isPeeredValue: scala.Option[Boolean] = scala.Option(impl.isPeered()).map(value => value: Boolean) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.IsVpcPeeredResponse): ReadOnly = new Wrapper(impl)
  }
  case class KeyPair(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, fingerprint: scala.Option[primitives.Base64] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.KeyPair = {
      import KeyPair.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.KeyPair.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(fingerprint.map(value => value: java.lang.String))(_.fingerprint).build()
    }
    def asReadOnly: KeyPair.ReadOnly = KeyPair.wrap(buildAwsValue())
  }
  object KeyPair {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.KeyPair] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: KeyPair = KeyPair(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), fingerprintValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def fingerprintValue: scala.Option[primitives.Base64]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def fingerprint: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Base64] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fingerprint", fingerprintValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.KeyPair) extends KeyPair.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def fingerprintValue: scala.Option[primitives.Base64] = scala.Option(impl.fingerprint()).map(value => value: primitives.Base64)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.KeyPair): ReadOnly = new Wrapper(impl)
  }
  type KeyPairList = List[KeyPair]
  case class LightsailDistribution(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, alternativeDomainNames: scala.Option[Iterable[String]] = None, status: scala.Option[String] = None, isEnabled: scala.Option[Boolean] = None, domainName: scala.Option[String] = None, bundleId: scala.Option[String] = None, certificateName: scala.Option[primitives.ResourceName] = None, origin: scala.Option[Origin] = None, originPublicDNS: scala.Option[String] = None, defaultCacheBehavior: scala.Option[CacheBehavior] = None, cacheBehaviorSettings: scala.Option[CacheSettings] = None, cacheBehaviors: scala.Option[Iterable[CacheBehaviorPerPath]] = None, ableToUpdateBundle: scala.Option[Boolean] = None, ipAddressType: scala.Option[IpAddressType] = None, tags: scala.Option[Iterable[Tag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LightsailDistribution = {
      import LightsailDistribution.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LightsailDistribution.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(alternativeDomainNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.alternativeDomainNames).optionallyWith(status.map(value => value: java.lang.String))(_.status).optionallyWith(isEnabled.map(value => value: java.lang.Boolean))(_.isEnabled).optionallyWith(domainName.map(value => value: java.lang.String))(_.domainName).optionallyWith(bundleId.map(value => value: java.lang.String))(_.bundleId).optionallyWith(certificateName.map(value => value: java.lang.String))(_.certificateName).optionallyWith(origin.map(value => value.buildAwsValue()))(_.origin).optionallyWith(originPublicDNS.map(value => value: java.lang.String))(_.originPublicDNS).optionallyWith(defaultCacheBehavior.map(value => value.buildAwsValue()))(_.defaultCacheBehavior).optionallyWith(cacheBehaviorSettings.map(value => value.buildAwsValue()))(_.cacheBehaviorSettings).optionallyWith(cacheBehaviors.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.cacheBehaviors).optionallyWith(ableToUpdateBundle.map(value => value: java.lang.Boolean))(_.ableToUpdateBundle).optionallyWith(ipAddressType.map(value => value.unwrap))(_.ipAddressType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: LightsailDistribution.ReadOnly = LightsailDistribution.wrap(buildAwsValue())
  }
  object LightsailDistribution {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LightsailDistribution] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LightsailDistribution = LightsailDistribution(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), alternativeDomainNamesValue.map(value => value), statusValue.map(value => value), isEnabledValue.map(value => value), domainNameValue.map(value => value), bundleIdValue.map(value => value), certificateNameValue.map(value => value), originValue.map(value => value.editable), originPublicDNSValue.map(value => value), defaultCacheBehaviorValue.map(value => value.editable), cacheBehaviorSettingsValue.map(value => value.editable), cacheBehaviorsValue.map(value => value.map { item => 
        item.editable
      }), ableToUpdateBundleValue.map(value => value), ipAddressTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def alternativeDomainNamesValue: scala.Option[List[String]]
      def statusValue: scala.Option[String]
      def isEnabledValue: scala.Option[Boolean]
      def domainNameValue: scala.Option[String]
      def bundleIdValue: scala.Option[String]
      def certificateNameValue: scala.Option[primitives.ResourceName]
      def originValue: scala.Option[Origin.ReadOnly]
      def originPublicDNSValue: scala.Option[String]
      def defaultCacheBehaviorValue: scala.Option[CacheBehavior.ReadOnly]
      def cacheBehaviorSettingsValue: scala.Option[CacheSettings.ReadOnly]
      def cacheBehaviorsValue: scala.Option[List[CacheBehaviorPerPath.ReadOnly]]
      def ableToUpdateBundleValue: scala.Option[Boolean]
      def ipAddressTypeValue: scala.Option[IpAddressType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def alternativeDomainNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("alternativeDomainNames", alternativeDomainNamesValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def isEnabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isEnabled", isEnabledValue)
      def domainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainName", domainNameValue)
      def bundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundleId", bundleIdValue)
      def certificateName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("certificateName", certificateNameValue)
      def origin: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Origin.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("origin", originValue)
      def originPublicDNS: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("originPublicDNS", originPublicDNSValue)
      def defaultCacheBehavior: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CacheBehavior.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultCacheBehavior", defaultCacheBehaviorValue)
      def cacheBehaviorSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CacheSettings.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cacheBehaviorSettings", cacheBehaviorSettingsValue)
      def cacheBehaviors: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[CacheBehaviorPerPath.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cacheBehaviors", cacheBehaviorsValue)
      def ableToUpdateBundle: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ableToUpdateBundle", ableToUpdateBundleValue)
      def ipAddressType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IpAddressType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddressType", ipAddressTypeValue)
      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.lightsail.model.LightsailDistribution) extends LightsailDistribution.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def alternativeDomainNamesValue: scala.Option[List[String]] = scala.Option(impl.alternativeDomainNames()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def statusValue: scala.Option[String] = scala.Option(impl.status()).map(value => value: String)
      override def isEnabledValue: scala.Option[Boolean] = scala.Option(impl.isEnabled()).map(value => value: Boolean)
      override def domainNameValue: scala.Option[String] = scala.Option(impl.domainName()).map(value => value: String)
      override def bundleIdValue: scala.Option[String] = scala.Option(impl.bundleId()).map(value => value: String)
      override def certificateNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.certificateName()).map(value => value: primitives.ResourceName)
      override def originValue: scala.Option[Origin.ReadOnly] = scala.Option(impl.origin()).map(value => Origin.wrap(value))
      override def originPublicDNSValue: scala.Option[String] = scala.Option(impl.originPublicDNS()).map(value => value: String)
      override def defaultCacheBehaviorValue: scala.Option[CacheBehavior.ReadOnly] = scala.Option(impl.defaultCacheBehavior()).map(value => CacheBehavior.wrap(value))
      override def cacheBehaviorSettingsValue: scala.Option[CacheSettings.ReadOnly] = scala.Option(impl.cacheBehaviorSettings()).map(value => CacheSettings.wrap(value))
      override def cacheBehaviorsValue: scala.Option[List[CacheBehaviorPerPath.ReadOnly]] = scala.Option(impl.cacheBehaviors()).map(value => value.asScala.map { item => 
        CacheBehaviorPerPath.wrap(item)
      }.toList)
      override def ableToUpdateBundleValue: scala.Option[Boolean] = scala.Option(impl.ableToUpdateBundle()).map(value => value: Boolean)
      override def ipAddressTypeValue: scala.Option[IpAddressType] = scala.Option(impl.ipAddressType()).map(value => IpAddressType.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.lightsail.model.LightsailDistribution): ReadOnly = new Wrapper(impl)
  }
  case class LoadBalancer(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, dnsName: scala.Option[primitives.NonEmptyString] = None, state: scala.Option[LoadBalancerState] = None, protocol: scala.Option[LoadBalancerProtocol] = None, publicPorts: scala.Option[Iterable[primitives.Port]] = None, healthCheckPath: scala.Option[primitives.NonEmptyString] = None, instancePort: scala.Option[primitives.Integer] = None, instanceHealthSummary: scala.Option[Iterable[InstanceHealthSummary]] = None, tlsCertificateSummaries: scala.Option[Iterable[LoadBalancerTlsCertificateSummary]] = None, configurationOptions: scala.Option[Map[LoadBalancerAttributeName, String]] = None, ipAddressType: scala.Option[IpAddressType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LoadBalancer = {
      import LoadBalancer.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LoadBalancer.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(dnsName.map(value => value: java.lang.String))(_.dnsName).optionallyWith(state.map(value => value.unwrap))(_.state).optionallyWith(protocol.map(value => value.unwrap))(_.protocol).optionallyWith(publicPorts.map(value => value.map { item => 
        item: java.lang.Integer
      }.asJavaCollection))(_.publicPorts).optionallyWith(healthCheckPath.map(value => value: java.lang.String))(_.healthCheckPath).optionallyWith(instancePort.map(value => value: java.lang.Integer))(_.instancePort).optionallyWith(instanceHealthSummary.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.instanceHealthSummary).optionallyWith(tlsCertificateSummaries.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tlsCertificateSummaries).optionallyWith(configurationOptions.map(value => value.map({
        case (key, value) =>
          key.unwrap.toString -> (value: java.lang.String)
      }).asJava))(_.configurationOptionsWithStrings).optionallyWith(ipAddressType.map(value => value.unwrap))(_.ipAddressType).build()
    }
    def asReadOnly: LoadBalancer.ReadOnly = LoadBalancer.wrap(buildAwsValue())
  }
  object LoadBalancer {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LoadBalancer] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LoadBalancer = LoadBalancer(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), dnsNameValue.map(value => value), stateValue.map(value => value), protocolValue.map(value => value), publicPortsValue.map(value => value), healthCheckPathValue.map(value => value), instancePortValue.map(value => value), instanceHealthSummaryValue.map(value => value.map { item => 
        item.editable
      }), tlsCertificateSummariesValue.map(value => value.map { item => 
        item.editable
      }), configurationOptionsValue.map(value => value), ipAddressTypeValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def dnsNameValue: scala.Option[primitives.NonEmptyString]
      def stateValue: scala.Option[LoadBalancerState]
      def protocolValue: scala.Option[LoadBalancerProtocol]
      def publicPortsValue: scala.Option[List[primitives.Port]]
      def healthCheckPathValue: scala.Option[primitives.NonEmptyString]
      def instancePortValue: scala.Option[primitives.Integer]
      def instanceHealthSummaryValue: scala.Option[List[InstanceHealthSummary.ReadOnly]]
      def tlsCertificateSummariesValue: scala.Option[List[LoadBalancerTlsCertificateSummary.ReadOnly]]
      def configurationOptionsValue: scala.Option[Map[LoadBalancerAttributeName, String]]
      def ipAddressTypeValue: scala.Option[IpAddressType]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def dnsName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dnsName", dnsNameValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerState] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def protocol: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerProtocol] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocol", protocolValue)
      def publicPorts: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Port]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicPorts", publicPortsValue)
      def healthCheckPath: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("healthCheckPath", healthCheckPathValue)
      def instancePort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instancePort", instancePortValue)
      def instanceHealthSummary: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[InstanceHealthSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceHealthSummary", instanceHealthSummaryValue)
      def tlsCertificateSummaries: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LoadBalancerTlsCertificateSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tlsCertificateSummaries", tlsCertificateSummariesValue)
      def configurationOptions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[LoadBalancerAttributeName, String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("configurationOptions", configurationOptionsValue)
      def ipAddressType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IpAddressType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddressType", ipAddressTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancer) extends LoadBalancer.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def dnsNameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.dnsName()).map(value => value: primitives.NonEmptyString)
      override def stateValue: scala.Option[LoadBalancerState] = scala.Option(impl.state()).map(value => LoadBalancerState.wrap(value))
      override def protocolValue: scala.Option[LoadBalancerProtocol] = scala.Option(impl.protocol()).map(value => LoadBalancerProtocol.wrap(value))
      override def publicPortsValue: scala.Option[List[primitives.Port]] = scala.Option(impl.publicPorts()).map(value => value.asScala.map { item => 
        item: primitives.Port
      }.toList)
      override def healthCheckPathValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.healthCheckPath()).map(value => value: primitives.NonEmptyString)
      override def instancePortValue: scala.Option[primitives.Integer] = scala.Option(impl.instancePort()).map(value => value: primitives.Integer)
      override def instanceHealthSummaryValue: scala.Option[List[InstanceHealthSummary.ReadOnly]] = scala.Option(impl.instanceHealthSummary()).map(value => value.asScala.map { item => 
        InstanceHealthSummary.wrap(item)
      }.toList)
      override def tlsCertificateSummariesValue: scala.Option[List[LoadBalancerTlsCertificateSummary.ReadOnly]] = scala.Option(impl.tlsCertificateSummaries()).map(value => value.asScala.map { item => 
        LoadBalancerTlsCertificateSummary.wrap(item)
      }.toList)
      override def configurationOptionsValue: scala.Option[Map[LoadBalancerAttributeName, String]] = scala.Option(impl.configurationOptions()).map(value => value.asScala.map({
        case (key, value) =>
          LoadBalancerAttributeName.wrap(key) -> (value: String)
      }).toMap)
      override def ipAddressTypeValue: scala.Option[IpAddressType] = scala.Option(impl.ipAddressType()).map(value => IpAddressType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancer): ReadOnly = new Wrapper(impl)
  }
  sealed trait LoadBalancerAttributeName { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName }
  object LoadBalancerAttributeName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName): LoadBalancerAttributeName = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.HEALTH_CHECK_PATH => HealthCheckPath
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.SESSION_STICKINESS_ENABLED => SessionStickinessEnabled
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.SESSION_STICKINESS_LB_COOKIE_DURATION_SECONDS => SessionStickiness_LB_CookieDurationSeconds
    }
    final case object unknownToSdkVersion extends LoadBalancerAttributeName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName = software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.UNKNOWN_TO_SDK_VERSION }
    final case object HealthCheckPath extends LoadBalancerAttributeName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName = software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.HEALTH_CHECK_PATH }
    final case object SessionStickinessEnabled extends LoadBalancerAttributeName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName = software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.SESSION_STICKINESS_ENABLED }
    final case object SessionStickiness_LB_CookieDurationSeconds extends LoadBalancerAttributeName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName = software.amazon.awssdk.services.lightsail.model.LoadBalancerAttributeName.SESSION_STICKINESS_LB_COOKIE_DURATION_SECONDS }
  }
  type LoadBalancerConfigurationOptions = Map[LoadBalancerAttributeName, String]
  type LoadBalancerList = List[LoadBalancer]
  sealed trait LoadBalancerMetricName { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName }
  object LoadBalancerMetricName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName): LoadBalancerMetricName = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.CLIENT_TLS_NEGOTIATION_ERROR_COUNT => ClientTLSNegotiationErrorCount
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HEALTHY_HOST_COUNT => HealthyHostCount
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.UNHEALTHY_HOST_COUNT => UnhealthyHostCount
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_LB_4_XX_COUNT => HTTPCode_LB_4XX_Count
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_LB_5_XX_COUNT => HTTPCode_LB_5XX_Count
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_2_XX_COUNT => HTTPCode_Instance_2XX_Count
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_3_XX_COUNT => HTTPCode_Instance_3XX_Count
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_4_XX_COUNT => HTTPCode_Instance_4XX_Count
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_5_XX_COUNT => HTTPCode_Instance_5XX_Count
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.INSTANCE_RESPONSE_TIME => InstanceResponseTime
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.REJECTED_CONNECTION_COUNT => RejectedConnectionCount
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.REQUEST_COUNT => RequestCount
    }
    final case object unknownToSdkVersion extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.UNKNOWN_TO_SDK_VERSION }
    final case object ClientTLSNegotiationErrorCount extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.CLIENT_TLS_NEGOTIATION_ERROR_COUNT }
    final case object HealthyHostCount extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HEALTHY_HOST_COUNT }
    final case object UnhealthyHostCount extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.UNHEALTHY_HOST_COUNT }
    final case object HTTPCode_LB_4XX_Count extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_LB_4_XX_COUNT }
    final case object HTTPCode_LB_5XX_Count extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_LB_5_XX_COUNT }
    final case object HTTPCode_Instance_2XX_Count extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_2_XX_COUNT }
    final case object HTTPCode_Instance_3XX_Count extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_3_XX_COUNT }
    final case object HTTPCode_Instance_4XX_Count extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_4_XX_COUNT }
    final case object HTTPCode_Instance_5XX_Count extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.HTTP_CODE_INSTANCE_5_XX_COUNT }
    final case object InstanceResponseTime extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.INSTANCE_RESPONSE_TIME }
    final case object RejectedConnectionCount extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.REJECTED_CONNECTION_COUNT }
    final case object RequestCount extends LoadBalancerMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName = software.amazon.awssdk.services.lightsail.model.LoadBalancerMetricName.REQUEST_COUNT }
  }
  sealed trait LoadBalancerProtocol { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol }
  object LoadBalancerProtocol {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol): LoadBalancerProtocol = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol.HTTP_HTTPS => HTTP_HTTPS
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol.HTTP => HTTP
    }
    final case object unknownToSdkVersion extends LoadBalancerProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol = software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol.UNKNOWN_TO_SDK_VERSION }
    final case object HTTP_HTTPS extends LoadBalancerProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol = software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol.HTTP_HTTPS }
    final case object HTTP extends LoadBalancerProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol = software.amazon.awssdk.services.lightsail.model.LoadBalancerProtocol.HTTP }
  }
  sealed trait LoadBalancerState { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerState }
  object LoadBalancerState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerState): LoadBalancerState = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerState.ACTIVE => active
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerState.PROVISIONING => provisioning
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerState.ACTIVE_IMPAIRED => active_impaired
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerState.FAILED => failed
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerState.UNKNOWN => unknown
    }
    final case object unknownToSdkVersion extends LoadBalancerState { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerState = software.amazon.awssdk.services.lightsail.model.LoadBalancerState.UNKNOWN_TO_SDK_VERSION }
    final case object active extends LoadBalancerState { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerState = software.amazon.awssdk.services.lightsail.model.LoadBalancerState.ACTIVE }
    final case object provisioning extends LoadBalancerState { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerState = software.amazon.awssdk.services.lightsail.model.LoadBalancerState.PROVISIONING }
    final case object active_impaired extends LoadBalancerState { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerState = software.amazon.awssdk.services.lightsail.model.LoadBalancerState.ACTIVE_IMPAIRED }
    final case object failed extends LoadBalancerState { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerState = software.amazon.awssdk.services.lightsail.model.LoadBalancerState.FAILED }
    final case object unknown extends LoadBalancerState { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerState = software.amazon.awssdk.services.lightsail.model.LoadBalancerState.UNKNOWN }
  }
  case class LoadBalancerTlsCertificate(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, loadBalancerName: scala.Option[primitives.ResourceName] = None, isAttached: scala.Option[Boolean] = None, status: scala.Option[LoadBalancerTlsCertificateStatus] = None, domainName: scala.Option[primitives.DomainName] = None, domainValidationRecords: scala.Option[Iterable[LoadBalancerTlsCertificateDomainValidationRecord]] = None, failureReason: scala.Option[LoadBalancerTlsCertificateFailureReason] = None, issuedAt: scala.Option[primitives.IsoDate] = None, issuer: scala.Option[primitives.NonEmptyString] = None, keyAlgorithm: scala.Option[primitives.NonEmptyString] = None, notAfter: scala.Option[primitives.IsoDate] = None, notBefore: scala.Option[primitives.IsoDate] = None, renewalSummary: scala.Option[LoadBalancerTlsCertificateRenewalSummary] = None, revocationReason: scala.Option[LoadBalancerTlsCertificateRevocationReason] = None, revokedAt: scala.Option[primitives.IsoDate] = None, serial: scala.Option[primitives.NonEmptyString] = None, signatureAlgorithm: scala.Option[primitives.NonEmptyString] = None, subject: scala.Option[primitives.NonEmptyString] = None, subjectAlternativeNames: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificate = {
      import LoadBalancerTlsCertificate.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificate.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(loadBalancerName.map(value => value: java.lang.String))(_.loadBalancerName).optionallyWith(isAttached.map(value => value: java.lang.Boolean))(_.isAttached).optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(domainName.map(value => value: java.lang.String))(_.domainName).optionallyWith(domainValidationRecords.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.domainValidationRecords).optionallyWith(failureReason.map(value => value.unwrap))(_.failureReason).optionallyWith(issuedAt.map(value => value: java.time.Instant))(_.issuedAt).optionallyWith(issuer.map(value => value: java.lang.String))(_.issuer).optionallyWith(keyAlgorithm.map(value => value: java.lang.String))(_.keyAlgorithm).optionallyWith(notAfter.map(value => value: java.time.Instant))(_.notAfter).optionallyWith(notBefore.map(value => value: java.time.Instant))(_.notBefore).optionallyWith(renewalSummary.map(value => value.buildAwsValue()))(_.renewalSummary).optionallyWith(revocationReason.map(value => value.unwrap))(_.revocationReason).optionallyWith(revokedAt.map(value => value: java.time.Instant))(_.revokedAt).optionallyWith(serial.map(value => value: java.lang.String))(_.serial).optionallyWith(signatureAlgorithm.map(value => value: java.lang.String))(_.signatureAlgorithm).optionallyWith(subject.map(value => value: java.lang.String))(_.subject).optionallyWith(subjectAlternativeNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.subjectAlternativeNames).build()
    }
    def asReadOnly: LoadBalancerTlsCertificate.ReadOnly = LoadBalancerTlsCertificate.wrap(buildAwsValue())
  }
  object LoadBalancerTlsCertificate {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificate] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LoadBalancerTlsCertificate = LoadBalancerTlsCertificate(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), loadBalancerNameValue.map(value => value), isAttachedValue.map(value => value), statusValue.map(value => value), domainNameValue.map(value => value), domainValidationRecordsValue.map(value => value.map { item => 
        item.editable
      }), failureReasonValue.map(value => value), issuedAtValue.map(value => value), issuerValue.map(value => value), keyAlgorithmValue.map(value => value), notAfterValue.map(value => value), notBeforeValue.map(value => value), renewalSummaryValue.map(value => value.editable), revocationReasonValue.map(value => value), revokedAtValue.map(value => value), serialValue.map(value => value), signatureAlgorithmValue.map(value => value), subjectValue.map(value => value), subjectAlternativeNamesValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def loadBalancerNameValue: scala.Option[primitives.ResourceName]
      def isAttachedValue: scala.Option[Boolean]
      def statusValue: scala.Option[LoadBalancerTlsCertificateStatus]
      def domainNameValue: scala.Option[primitives.DomainName]
      def domainValidationRecordsValue: scala.Option[List[LoadBalancerTlsCertificateDomainValidationRecord.ReadOnly]]
      def failureReasonValue: scala.Option[LoadBalancerTlsCertificateFailureReason]
      def issuedAtValue: scala.Option[primitives.IsoDate]
      def issuerValue: scala.Option[primitives.NonEmptyString]
      def keyAlgorithmValue: scala.Option[primitives.NonEmptyString]
      def notAfterValue: scala.Option[primitives.IsoDate]
      def notBeforeValue: scala.Option[primitives.IsoDate]
      def renewalSummaryValue: scala.Option[LoadBalancerTlsCertificateRenewalSummary.ReadOnly]
      def revocationReasonValue: scala.Option[LoadBalancerTlsCertificateRevocationReason]
      def revokedAtValue: scala.Option[primitives.IsoDate]
      def serialValue: scala.Option[primitives.NonEmptyString]
      def signatureAlgorithmValue: scala.Option[primitives.NonEmptyString]
      def subjectValue: scala.Option[primitives.NonEmptyString]
      def subjectAlternativeNamesValue: scala.Option[List[String]]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def loadBalancerName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("loadBalancerName", loadBalancerNameValue)
      def isAttached: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isAttached", isAttachedValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerTlsCertificateStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def domainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainName", domainNameValue)
      def domainValidationRecords: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LoadBalancerTlsCertificateDomainValidationRecord.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainValidationRecords", domainValidationRecordsValue)
      def failureReason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerTlsCertificateFailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("failureReason", failureReasonValue)
      def issuedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("issuedAt", issuedAtValue)
      def issuer: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("issuer", issuerValue)
      def keyAlgorithm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyAlgorithm", keyAlgorithmValue)
      def notAfter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notAfter", notAfterValue)
      def notBefore: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notBefore", notBeforeValue)
      def renewalSummary: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerTlsCertificateRenewalSummary.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("renewalSummary", renewalSummaryValue)
      def revocationReason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerTlsCertificateRevocationReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("revocationReason", revocationReasonValue)
      def revokedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("revokedAt", revokedAtValue)
      def serial: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serial", serialValue)
      def signatureAlgorithm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("signatureAlgorithm", signatureAlgorithmValue)
      def subject: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("subject", subjectValue)
      def subjectAlternativeNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("subjectAlternativeNames", subjectAlternativeNamesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificate) extends LoadBalancerTlsCertificate.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def loadBalancerNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.loadBalancerName()).map(value => value: primitives.ResourceName)
      override def isAttachedValue: scala.Option[Boolean] = scala.Option(impl.isAttached()).map(value => value: Boolean)
      override def statusValue: scala.Option[LoadBalancerTlsCertificateStatus] = scala.Option(impl.status()).map(value => LoadBalancerTlsCertificateStatus.wrap(value))
      override def domainNameValue: scala.Option[primitives.DomainName] = scala.Option(impl.domainName()).map(value => value: primitives.DomainName)
      override def domainValidationRecordsValue: scala.Option[List[LoadBalancerTlsCertificateDomainValidationRecord.ReadOnly]] = scala.Option(impl.domainValidationRecords()).map(value => value.asScala.map { item => 
        LoadBalancerTlsCertificateDomainValidationRecord.wrap(item)
      }.toList)
      override def failureReasonValue: scala.Option[LoadBalancerTlsCertificateFailureReason] = scala.Option(impl.failureReason()).map(value => LoadBalancerTlsCertificateFailureReason.wrap(value))
      override def issuedAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.issuedAt()).map(value => value: primitives.IsoDate)
      override def issuerValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.issuer()).map(value => value: primitives.NonEmptyString)
      override def keyAlgorithmValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.keyAlgorithm()).map(value => value: primitives.NonEmptyString)
      override def notAfterValue: scala.Option[primitives.IsoDate] = scala.Option(impl.notAfter()).map(value => value: primitives.IsoDate)
      override def notBeforeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.notBefore()).map(value => value: primitives.IsoDate)
      override def renewalSummaryValue: scala.Option[LoadBalancerTlsCertificateRenewalSummary.ReadOnly] = scala.Option(impl.renewalSummary()).map(value => LoadBalancerTlsCertificateRenewalSummary.wrap(value))
      override def revocationReasonValue: scala.Option[LoadBalancerTlsCertificateRevocationReason] = scala.Option(impl.revocationReason()).map(value => LoadBalancerTlsCertificateRevocationReason.wrap(value))
      override def revokedAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.revokedAt()).map(value => value: primitives.IsoDate)
      override def serialValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.serial()).map(value => value: primitives.NonEmptyString)
      override def signatureAlgorithmValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.signatureAlgorithm()).map(value => value: primitives.NonEmptyString)
      override def subjectValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.subject()).map(value => value: primitives.NonEmptyString)
      override def subjectAlternativeNamesValue: scala.Option[List[String]] = scala.Option(impl.subjectAlternativeNames()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificate): ReadOnly = new Wrapper(impl)
  }
  sealed trait LoadBalancerTlsCertificateDomainStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus }
  object LoadBalancerTlsCertificateDomainStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus): LoadBalancerTlsCertificateDomainStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.PENDING_VALIDATION => PENDING_VALIDATION
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.FAILED => FAILED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.SUCCESS => SUCCESS
    }
    final case object unknownToSdkVersion extends LoadBalancerTlsCertificateDomainStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.UNKNOWN_TO_SDK_VERSION }
    final case object PENDING_VALIDATION extends LoadBalancerTlsCertificateDomainStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.PENDING_VALIDATION }
    final case object FAILED extends LoadBalancerTlsCertificateDomainStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.FAILED }
    final case object SUCCESS extends LoadBalancerTlsCertificateDomainStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainStatus.SUCCESS }
  }
  case class LoadBalancerTlsCertificateDomainValidationOption(domainName: scala.Option[primitives.DomainName] = None, validationStatus: scala.Option[LoadBalancerTlsCertificateDomainStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationOption = {
      import LoadBalancerTlsCertificateDomainValidationOption.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationOption.builder().optionallyWith(domainName.map(value => value: java.lang.String))(_.domainName).optionallyWith(validationStatus.map(value => value.unwrap))(_.validationStatus).build()
    }
    def asReadOnly: LoadBalancerTlsCertificateDomainValidationOption.ReadOnly = LoadBalancerTlsCertificateDomainValidationOption.wrap(buildAwsValue())
  }
  object LoadBalancerTlsCertificateDomainValidationOption {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationOption] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LoadBalancerTlsCertificateDomainValidationOption = LoadBalancerTlsCertificateDomainValidationOption(domainNameValue.map(value => value), validationStatusValue.map(value => value))
      def domainNameValue: scala.Option[primitives.DomainName]
      def validationStatusValue: scala.Option[LoadBalancerTlsCertificateDomainStatus]
      def domainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainName", domainNameValue)
      def validationStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerTlsCertificateDomainStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("validationStatus", validationStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationOption) extends LoadBalancerTlsCertificateDomainValidationOption.ReadOnly {
      override def domainNameValue: scala.Option[primitives.DomainName] = scala.Option(impl.domainName()).map(value => value: primitives.DomainName)
      override def validationStatusValue: scala.Option[LoadBalancerTlsCertificateDomainStatus] = scala.Option(impl.validationStatus()).map(value => LoadBalancerTlsCertificateDomainStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationOption): ReadOnly = new Wrapper(impl)
  }
  type LoadBalancerTlsCertificateDomainValidationOptionList = List[LoadBalancerTlsCertificateDomainValidationOption]
  case class LoadBalancerTlsCertificateDomainValidationRecord(name: scala.Option[primitives.NonEmptyString] = None, `type`: scala.Option[primitives.NonEmptyString] = None, value: scala.Option[primitives.NonEmptyString] = None, validationStatus: scala.Option[LoadBalancerTlsCertificateDomainStatus] = None, domainName: scala.Option[primitives.DomainName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationRecord = {
      import LoadBalancerTlsCertificateDomainValidationRecord.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationRecord.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(`type`.map(value => value: java.lang.String))(_.`type`).optionallyWith(value.map(value => value: java.lang.String))(_.value).optionallyWith(validationStatus.map(value => value.unwrap))(_.validationStatus).optionallyWith(domainName.map(value => value: java.lang.String))(_.domainName).build()
    }
    def asReadOnly: LoadBalancerTlsCertificateDomainValidationRecord.ReadOnly = LoadBalancerTlsCertificateDomainValidationRecord.wrap(buildAwsValue())
  }
  object LoadBalancerTlsCertificateDomainValidationRecord {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationRecord] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LoadBalancerTlsCertificateDomainValidationRecord = LoadBalancerTlsCertificateDomainValidationRecord(nameValue.map(value => value), typeValue.map(value => value), valueValue.map(value => value), validationStatusValue.map(value => value), domainNameValue.map(value => value))
      def nameValue: scala.Option[primitives.NonEmptyString]
      def typeValue: scala.Option[primitives.NonEmptyString]
      def valueValue: scala.Option[primitives.NonEmptyString]
      def validationStatusValue: scala.Option[LoadBalancerTlsCertificateDomainStatus]
      def domainNameValue: scala.Option[primitives.DomainName]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def `type`: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("type", typeValue)
      def value: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("value", valueValue)
      def validationStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerTlsCertificateDomainStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("validationStatus", validationStatusValue)
      def domainName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DomainName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainName", domainNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationRecord) extends LoadBalancerTlsCertificateDomainValidationRecord.ReadOnly {
      override def nameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.name()).map(value => value: primitives.NonEmptyString)
      override def typeValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.`type`()).map(value => value: primitives.NonEmptyString)
      override def valueValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.value()).map(value => value: primitives.NonEmptyString)
      override def validationStatusValue: scala.Option[LoadBalancerTlsCertificateDomainStatus] = scala.Option(impl.validationStatus()).map(value => LoadBalancerTlsCertificateDomainStatus.wrap(value))
      override def domainNameValue: scala.Option[primitives.DomainName] = scala.Option(impl.domainName()).map(value => value: primitives.DomainName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateDomainValidationRecord): ReadOnly = new Wrapper(impl)
  }
  type LoadBalancerTlsCertificateDomainValidationRecordList = List[LoadBalancerTlsCertificateDomainValidationRecord]
  sealed trait LoadBalancerTlsCertificateFailureReason { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason }
  object LoadBalancerTlsCertificateFailureReason {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason): LoadBalancerTlsCertificateFailureReason = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.NO_AVAILABLE_CONTACTS => NO_AVAILABLE_CONTACTS
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.ADDITIONAL_VERIFICATION_REQUIRED => ADDITIONAL_VERIFICATION_REQUIRED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.DOMAIN_NOT_ALLOWED => DOMAIN_NOT_ALLOWED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.INVALID_PUBLIC_DOMAIN => INVALID_PUBLIC_DOMAIN
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.OTHER => OTHER
    }
    final case object unknownToSdkVersion extends LoadBalancerTlsCertificateFailureReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.UNKNOWN_TO_SDK_VERSION }
    final case object NO_AVAILABLE_CONTACTS extends LoadBalancerTlsCertificateFailureReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.NO_AVAILABLE_CONTACTS }
    final case object ADDITIONAL_VERIFICATION_REQUIRED extends LoadBalancerTlsCertificateFailureReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.ADDITIONAL_VERIFICATION_REQUIRED }
    final case object DOMAIN_NOT_ALLOWED extends LoadBalancerTlsCertificateFailureReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.DOMAIN_NOT_ALLOWED }
    final case object INVALID_PUBLIC_DOMAIN extends LoadBalancerTlsCertificateFailureReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.INVALID_PUBLIC_DOMAIN }
    final case object OTHER extends LoadBalancerTlsCertificateFailureReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateFailureReason.OTHER }
  }
  type LoadBalancerTlsCertificateList = List[LoadBalancerTlsCertificate]
  sealed trait LoadBalancerTlsCertificateRenewalStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus }
  object LoadBalancerTlsCertificateRenewalStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus): LoadBalancerTlsCertificateRenewalStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.PENDING_AUTO_RENEWAL => PENDING_AUTO_RENEWAL
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.PENDING_VALIDATION => PENDING_VALIDATION
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.SUCCESS => SUCCESS
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.FAILED => FAILED
    }
    final case object unknownToSdkVersion extends LoadBalancerTlsCertificateRenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.UNKNOWN_TO_SDK_VERSION }
    final case object PENDING_AUTO_RENEWAL extends LoadBalancerTlsCertificateRenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.PENDING_AUTO_RENEWAL }
    final case object PENDING_VALIDATION extends LoadBalancerTlsCertificateRenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.PENDING_VALIDATION }
    final case object SUCCESS extends LoadBalancerTlsCertificateRenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.SUCCESS }
    final case object FAILED extends LoadBalancerTlsCertificateRenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalStatus.FAILED }
  }
  case class LoadBalancerTlsCertificateRenewalSummary(renewalStatus: scala.Option[LoadBalancerTlsCertificateRenewalStatus] = None, domainValidationOptions: scala.Option[Iterable[LoadBalancerTlsCertificateDomainValidationOption]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalSummary = {
      import LoadBalancerTlsCertificateRenewalSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalSummary.builder().optionallyWith(renewalStatus.map(value => value.unwrap))(_.renewalStatus).optionallyWith(domainValidationOptions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.domainValidationOptions).build()
    }
    def asReadOnly: LoadBalancerTlsCertificateRenewalSummary.ReadOnly = LoadBalancerTlsCertificateRenewalSummary.wrap(buildAwsValue())
  }
  object LoadBalancerTlsCertificateRenewalSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LoadBalancerTlsCertificateRenewalSummary = LoadBalancerTlsCertificateRenewalSummary(renewalStatusValue.map(value => value), domainValidationOptionsValue.map(value => value.map { item => 
        item.editable
      }))
      def renewalStatusValue: scala.Option[LoadBalancerTlsCertificateRenewalStatus]
      def domainValidationOptionsValue: scala.Option[List[LoadBalancerTlsCertificateDomainValidationOption.ReadOnly]]
      def renewalStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LoadBalancerTlsCertificateRenewalStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("renewalStatus", renewalStatusValue)
      def domainValidationOptions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[LoadBalancerTlsCertificateDomainValidationOption.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainValidationOptions", domainValidationOptionsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalSummary) extends LoadBalancerTlsCertificateRenewalSummary.ReadOnly {
      override def renewalStatusValue: scala.Option[LoadBalancerTlsCertificateRenewalStatus] = scala.Option(impl.renewalStatus()).map(value => LoadBalancerTlsCertificateRenewalStatus.wrap(value))
      override def domainValidationOptionsValue: scala.Option[List[LoadBalancerTlsCertificateDomainValidationOption.ReadOnly]] = scala.Option(impl.domainValidationOptions()).map(value => value.asScala.map { item => 
        LoadBalancerTlsCertificateDomainValidationOption.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRenewalSummary): ReadOnly = new Wrapper(impl)
  }
  sealed trait LoadBalancerTlsCertificateRevocationReason { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason }
  object LoadBalancerTlsCertificateRevocationReason {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason): LoadBalancerTlsCertificateRevocationReason = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.UNSPECIFIED => UNSPECIFIED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.KEY_COMPROMISE => KEY_COMPROMISE
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.CA_COMPROMISE => CA_COMPROMISE
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.AFFILIATION_CHANGED => AFFILIATION_CHANGED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.SUPERCEDED => SUPERCEDED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.CESSATION_OF_OPERATION => CESSATION_OF_OPERATION
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.CERTIFICATE_HOLD => CERTIFICATE_HOLD
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.REMOVE_FROM_CRL => REMOVE_FROM_CRL
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.PRIVILEGE_WITHDRAWN => PRIVILEGE_WITHDRAWN
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.A_A_COMPROMISE => A_A_COMPROMISE
    }
    final case object unknownToSdkVersion extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.UNKNOWN_TO_SDK_VERSION }
    final case object UNSPECIFIED extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.UNSPECIFIED }
    final case object KEY_COMPROMISE extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.KEY_COMPROMISE }
    final case object CA_COMPROMISE extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.CA_COMPROMISE }
    final case object AFFILIATION_CHANGED extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.AFFILIATION_CHANGED }
    final case object SUPERCEDED extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.SUPERCEDED }
    final case object CESSATION_OF_OPERATION extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.CESSATION_OF_OPERATION }
    final case object CERTIFICATE_HOLD extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.CERTIFICATE_HOLD }
    final case object REMOVE_FROM_CRL extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.REMOVE_FROM_CRL }
    final case object PRIVILEGE_WITHDRAWN extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.PRIVILEGE_WITHDRAWN }
    final case object A_A_COMPROMISE extends LoadBalancerTlsCertificateRevocationReason { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateRevocationReason.A_A_COMPROMISE }
  }
  sealed trait LoadBalancerTlsCertificateStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus }
  object LoadBalancerTlsCertificateStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus): LoadBalancerTlsCertificateStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.PENDING_VALIDATION => PENDING_VALIDATION
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.ISSUED => ISSUED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.INACTIVE => INACTIVE
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.EXPIRED => EXPIRED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.VALIDATION_TIMED_OUT => VALIDATION_TIMED_OUT
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.REVOKED => REVOKED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.FAILED => FAILED
      case software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.UNKNOWN => UNKNOWN
    }
    final case object unknownToSdkVersion extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.UNKNOWN_TO_SDK_VERSION }
    final case object PENDING_VALIDATION extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.PENDING_VALIDATION }
    final case object ISSUED extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.ISSUED }
    final case object INACTIVE extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.INACTIVE }
    final case object EXPIRED extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.EXPIRED }
    final case object VALIDATION_TIMED_OUT extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.VALIDATION_TIMED_OUT }
    final case object REVOKED extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.REVOKED }
    final case object FAILED extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.FAILED }
    final case object UNKNOWN extends LoadBalancerTlsCertificateStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus = software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateStatus.UNKNOWN }
  }
  case class LoadBalancerTlsCertificateSummary(name: scala.Option[primitives.ResourceName] = None, isAttached: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateSummary = {
      import LoadBalancerTlsCertificateSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateSummary.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(isAttached.map(value => value: java.lang.Boolean))(_.isAttached).build()
    }
    def asReadOnly: LoadBalancerTlsCertificateSummary.ReadOnly = LoadBalancerTlsCertificateSummary.wrap(buildAwsValue())
  }
  object LoadBalancerTlsCertificateSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LoadBalancerTlsCertificateSummary = LoadBalancerTlsCertificateSummary(nameValue.map(value => value), isAttachedValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def isAttachedValue: scala.Option[Boolean]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def isAttached: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isAttached", isAttachedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateSummary) extends LoadBalancerTlsCertificateSummary.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def isAttachedValue: scala.Option[Boolean] = scala.Option(impl.isAttached()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.LoadBalancerTlsCertificateSummary): ReadOnly = new Wrapper(impl)
  }
  type LoadBalancerTlsCertificateSummaryList = List[LoadBalancerTlsCertificateSummary]
  case class LogEvent(createdAt: scala.Option[primitives.IsoDate] = None, message: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.LogEvent = {
      import LogEvent.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.LogEvent.builder().optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(message.map(value => value: java.lang.String))(_.message).build()
    }
    def asReadOnly: LogEvent.ReadOnly = LogEvent.wrap(buildAwsValue())
  }
  object LogEvent {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.LogEvent] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LogEvent = LogEvent(createdAtValue.map(value => value), messageValue.map(value => value))
      def createdAtValue: scala.Option[primitives.IsoDate]
      def messageValue: scala.Option[String]
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      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.lightsail.model.LogEvent) extends LogEvent.ReadOnly {
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def messageValue: scala.Option[String] = scala.Option(impl.message()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.LogEvent): ReadOnly = new Wrapper(impl)
  }
  type LogEventList = List[LogEvent]
  case class MetricDatapoint(average: scala.Option[Double] = None, maximum: scala.Option[Double] = None, minimum: scala.Option[Double] = None, sampleCount: scala.Option[Double] = None, sum: scala.Option[Double] = None, timestamp: scala.Option[primitives.Timestamp] = None, unit: scala.Option[MetricUnit] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.MetricDatapoint = {
      import MetricDatapoint.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.MetricDatapoint.builder().optionallyWith(average.map(value => value: java.lang.Double))(_.average).optionallyWith(maximum.map(value => value: java.lang.Double))(_.maximum).optionallyWith(minimum.map(value => value: java.lang.Double))(_.minimum).optionallyWith(sampleCount.map(value => value: java.lang.Double))(_.sampleCount).optionallyWith(sum.map(value => value: java.lang.Double))(_.sum).optionallyWith(timestamp.map(value => value: java.time.Instant))(_.timestamp).optionallyWith(unit.map(value => value.unwrap))(_.unit).build()
    }
    def asReadOnly: MetricDatapoint.ReadOnly = MetricDatapoint.wrap(buildAwsValue())
  }
  object MetricDatapoint {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.MetricDatapoint] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: MetricDatapoint = MetricDatapoint(averageValue.map(value => value), maximumValue.map(value => value), minimumValue.map(value => value), sampleCountValue.map(value => value), sumValue.map(value => value), timestampValue.map(value => value), unitValue.map(value => value))
      def averageValue: scala.Option[Double]
      def maximumValue: scala.Option[Double]
      def minimumValue: scala.Option[Double]
      def sampleCountValue: scala.Option[Double]
      def sumValue: scala.Option[Double]
      def timestampValue: scala.Option[primitives.Timestamp]
      def unitValue: scala.Option[MetricUnit]
      def average: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Double] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("average", averageValue)
      def maximum: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Double] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximum", maximumValue)
      def minimum: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Double] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("minimum", minimumValue)
      def sampleCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Double] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sampleCount", sampleCountValue)
      def sum: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Double] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sum", sumValue)
      def timestamp: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Timestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timestamp", timestampValue)
      def unit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MetricUnit] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("unit", unitValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.MetricDatapoint) extends MetricDatapoint.ReadOnly {
      override def averageValue: scala.Option[Double] = scala.Option(impl.average()).map(value => value: Double)
      override def maximumValue: scala.Option[Double] = scala.Option(impl.maximum()).map(value => value: Double)
      override def minimumValue: scala.Option[Double] = scala.Option(impl.minimum()).map(value => value: Double)
      override def sampleCountValue: scala.Option[Double] = scala.Option(impl.sampleCount()).map(value => value: Double)
      override def sumValue: scala.Option[Double] = scala.Option(impl.sum()).map(value => value: Double)
      override def timestampValue: scala.Option[primitives.Timestamp] = scala.Option(impl.timestamp()).map(value => value: primitives.Timestamp)
      override def unitValue: scala.Option[MetricUnit] = scala.Option(impl.unit()).map(value => MetricUnit.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.MetricDatapoint): ReadOnly = new Wrapper(impl)
  }
  type MetricDatapointList = List[MetricDatapoint]
  sealed trait MetricName { def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName }
  object MetricName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.MetricName): MetricName = value match {
      case software.amazon.awssdk.services.lightsail.model.MetricName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.MetricName.CPU_UTILIZATION => CPUUtilization
      case software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_IN => NetworkIn
      case software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_OUT => NetworkOut
      case software.amazon.awssdk.services.lightsail.model.MetricName.STATUS_CHECK_FAILED => StatusCheckFailed
      case software.amazon.awssdk.services.lightsail.model.MetricName.STATUS_CHECK_FAILED_INSTANCE => StatusCheckFailed_Instance
      case software.amazon.awssdk.services.lightsail.model.MetricName.STATUS_CHECK_FAILED_SYSTEM => StatusCheckFailed_System
      case software.amazon.awssdk.services.lightsail.model.MetricName.CLIENT_TLS_NEGOTIATION_ERROR_COUNT => ClientTLSNegotiationErrorCount
      case software.amazon.awssdk.services.lightsail.model.MetricName.HEALTHY_HOST_COUNT => HealthyHostCount
      case software.amazon.awssdk.services.lightsail.model.MetricName.UNHEALTHY_HOST_COUNT => UnhealthyHostCount
      case software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_LB_4_XX_COUNT => HTTPCode_LB_4XX_Count
      case software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_LB_5_XX_COUNT => HTTPCode_LB_5XX_Count
      case software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_2_XX_COUNT => HTTPCode_Instance_2XX_Count
      case software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_3_XX_COUNT => HTTPCode_Instance_3XX_Count
      case software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_4_XX_COUNT => HTTPCode_Instance_4XX_Count
      case software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_5_XX_COUNT => HTTPCode_Instance_5XX_Count
      case software.amazon.awssdk.services.lightsail.model.MetricName.INSTANCE_RESPONSE_TIME => InstanceResponseTime
      case software.amazon.awssdk.services.lightsail.model.MetricName.REJECTED_CONNECTION_COUNT => RejectedConnectionCount
      case software.amazon.awssdk.services.lightsail.model.MetricName.REQUEST_COUNT => RequestCount
      case software.amazon.awssdk.services.lightsail.model.MetricName.DATABASE_CONNECTIONS => DatabaseConnections
      case software.amazon.awssdk.services.lightsail.model.MetricName.DISK_QUEUE_DEPTH => DiskQueueDepth
      case software.amazon.awssdk.services.lightsail.model.MetricName.FREE_STORAGE_SPACE => FreeStorageSpace
      case software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_RECEIVE_THROUGHPUT => NetworkReceiveThroughput
      case software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_TRANSMIT_THROUGHPUT => NetworkTransmitThroughput
      case software.amazon.awssdk.services.lightsail.model.MetricName.BURST_CAPACITY_TIME => BurstCapacityTime
      case software.amazon.awssdk.services.lightsail.model.MetricName.BURST_CAPACITY_PERCENTAGE => BurstCapacityPercentage
    }
    final case object unknownToSdkVersion extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.UNKNOWN_TO_SDK_VERSION }
    final case object CPUUtilization extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.CPU_UTILIZATION }
    final case object NetworkIn extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_IN }
    final case object NetworkOut extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_OUT }
    final case object StatusCheckFailed extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.STATUS_CHECK_FAILED }
    final case object StatusCheckFailed_Instance extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.STATUS_CHECK_FAILED_INSTANCE }
    final case object StatusCheckFailed_System extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.STATUS_CHECK_FAILED_SYSTEM }
    final case object ClientTLSNegotiationErrorCount extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.CLIENT_TLS_NEGOTIATION_ERROR_COUNT }
    final case object HealthyHostCount extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.HEALTHY_HOST_COUNT }
    final case object UnhealthyHostCount extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.UNHEALTHY_HOST_COUNT }
    final case object HTTPCode_LB_4XX_Count extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_LB_4_XX_COUNT }
    final case object HTTPCode_LB_5XX_Count extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_LB_5_XX_COUNT }
    final case object HTTPCode_Instance_2XX_Count extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_2_XX_COUNT }
    final case object HTTPCode_Instance_3XX_Count extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_3_XX_COUNT }
    final case object HTTPCode_Instance_4XX_Count extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_4_XX_COUNT }
    final case object HTTPCode_Instance_5XX_Count extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.HTTP_CODE_INSTANCE_5_XX_COUNT }
    final case object InstanceResponseTime extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.INSTANCE_RESPONSE_TIME }
    final case object RejectedConnectionCount extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.REJECTED_CONNECTION_COUNT }
    final case object RequestCount extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.REQUEST_COUNT }
    final case object DatabaseConnections extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.DATABASE_CONNECTIONS }
    final case object DiskQueueDepth extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.DISK_QUEUE_DEPTH }
    final case object FreeStorageSpace extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.FREE_STORAGE_SPACE }
    final case object NetworkReceiveThroughput extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_RECEIVE_THROUGHPUT }
    final case object NetworkTransmitThroughput extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.NETWORK_TRANSMIT_THROUGHPUT }
    final case object BurstCapacityTime extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.BURST_CAPACITY_TIME }
    final case object BurstCapacityPercentage extends MetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricName = software.amazon.awssdk.services.lightsail.model.MetricName.BURST_CAPACITY_PERCENTAGE }
  }
  sealed trait MetricStatistic { def unwrap: software.amazon.awssdk.services.lightsail.model.MetricStatistic }
  object MetricStatistic {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.MetricStatistic): MetricStatistic = value match {
      case software.amazon.awssdk.services.lightsail.model.MetricStatistic.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.MetricStatistic.MINIMUM => Minimum
      case software.amazon.awssdk.services.lightsail.model.MetricStatistic.MAXIMUM => Maximum
      case software.amazon.awssdk.services.lightsail.model.MetricStatistic.SUM => Sum
      case software.amazon.awssdk.services.lightsail.model.MetricStatistic.AVERAGE => Average
      case software.amazon.awssdk.services.lightsail.model.MetricStatistic.SAMPLE_COUNT => SampleCount
    }
    final case object unknownToSdkVersion extends MetricStatistic { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricStatistic = software.amazon.awssdk.services.lightsail.model.MetricStatistic.UNKNOWN_TO_SDK_VERSION }
    final case object Minimum extends MetricStatistic { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricStatistic = software.amazon.awssdk.services.lightsail.model.MetricStatistic.MINIMUM }
    final case object Maximum extends MetricStatistic { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricStatistic = software.amazon.awssdk.services.lightsail.model.MetricStatistic.MAXIMUM }
    final case object Sum extends MetricStatistic { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricStatistic = software.amazon.awssdk.services.lightsail.model.MetricStatistic.SUM }
    final case object Average extends MetricStatistic { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricStatistic = software.amazon.awssdk.services.lightsail.model.MetricStatistic.AVERAGE }
    final case object SampleCount extends MetricStatistic { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricStatistic = software.amazon.awssdk.services.lightsail.model.MetricStatistic.SAMPLE_COUNT }
  }
  type MetricStatisticList = List[MetricStatistic]
  sealed trait MetricUnit { def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit }
  object MetricUnit {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.MetricUnit): MetricUnit = value match {
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.SECONDS => Seconds
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.MICROSECONDS => Microseconds
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.MILLISECONDS => Milliseconds
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.BYTES => Bytes
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBYTES => Kilobytes
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABYTES => Megabytes
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABYTES => Gigabytes
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABYTES => Terabytes
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.BITS => Bits
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBITS => Kilobits
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABITS => Megabits
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABITS => Gigabits
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABITS => Terabits
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.PERCENT => Percent
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.COUNT => Count
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.BYTES_SECOND => `Bytes/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBYTES_SECOND => `Kilobytes/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABYTES_SECOND => `Megabytes/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABYTES_SECOND => `Gigabytes/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABYTES_SECOND => `Terabytes/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.BITS_SECOND => `Bits/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBITS_SECOND => `Kilobits/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABITS_SECOND => `Megabits/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABITS_SECOND => `Gigabits/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABITS_SECOND => `Terabits/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.COUNT_SECOND => `Count/Second`
      case software.amazon.awssdk.services.lightsail.model.MetricUnit.NONE => None
    }
    final case object unknownToSdkVersion extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.UNKNOWN_TO_SDK_VERSION }
    final case object Seconds extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.SECONDS }
    final case object Microseconds extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.MICROSECONDS }
    final case object Milliseconds extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.MILLISECONDS }
    final case object Bytes extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.BYTES }
    final case object Kilobytes extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBYTES }
    final case object Megabytes extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABYTES }
    final case object Gigabytes extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABYTES }
    final case object Terabytes extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABYTES }
    final case object Bits extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.BITS }
    final case object Kilobits extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBITS }
    final case object Megabits extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABITS }
    final case object Gigabits extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABITS }
    final case object Terabits extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABITS }
    final case object Percent extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.PERCENT }
    final case object Count extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.COUNT }
    final case object `Bytes/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.BYTES_SECOND }
    final case object `Kilobytes/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBYTES_SECOND }
    final case object `Megabytes/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABYTES_SECOND }
    final case object `Gigabytes/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABYTES_SECOND }
    final case object `Terabytes/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABYTES_SECOND }
    final case object `Bits/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.BITS_SECOND }
    final case object `Kilobits/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.KILOBITS_SECOND }
    final case object `Megabits/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.MEGABITS_SECOND }
    final case object `Gigabits/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.GIGABITS_SECOND }
    final case object `Terabits/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.TERABITS_SECOND }
    final case object `Count/Second` extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.COUNT_SECOND }
    final case object None extends MetricUnit { override def unwrap: software.amazon.awssdk.services.lightsail.model.MetricUnit = software.amazon.awssdk.services.lightsail.model.MetricUnit.NONE }
  }
  case class MonitoredResourceInfo(arn: scala.Option[primitives.ResourceArn] = None, name: scala.Option[primitives.ResourceName] = None, resourceType: scala.Option[ResourceType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.MonitoredResourceInfo = {
      import MonitoredResourceInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.MonitoredResourceInfo.builder().optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).build()
    }
    def asReadOnly: MonitoredResourceInfo.ReadOnly = MonitoredResourceInfo.wrap(buildAwsValue())
  }
  object MonitoredResourceInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.MonitoredResourceInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: MonitoredResourceInfo = MonitoredResourceInfo(arnValue.map(value => value), nameValue.map(value => value), resourceTypeValue.map(value => value))
      def arnValue: scala.Option[primitives.ResourceArn]
      def nameValue: scala.Option[primitives.ResourceName]
      def resourceTypeValue: scala.Option[ResourceType]
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.MonitoredResourceInfo) extends MonitoredResourceInfo.ReadOnly {
      override def arnValue: scala.Option[primitives.ResourceArn] = scala.Option(impl.arn()).map(value => value: primitives.ResourceArn)
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.MonitoredResourceInfo): ReadOnly = new Wrapper(impl)
  }
  case class MonthlyTransfer(gbPerMonthAllocated: scala.Option[primitives.Integer] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.MonthlyTransfer = {
      import MonthlyTransfer.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.MonthlyTransfer.builder().optionallyWith(gbPerMonthAllocated.map(value => value: java.lang.Integer))(_.gbPerMonthAllocated).build()
    }
    def asReadOnly: MonthlyTransfer.ReadOnly = MonthlyTransfer.wrap(buildAwsValue())
  }
  object MonthlyTransfer {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.MonthlyTransfer] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: MonthlyTransfer = MonthlyTransfer(gbPerMonthAllocatedValue.map(value => value))
      def gbPerMonthAllocatedValue: scala.Option[primitives.Integer]
      def gbPerMonthAllocated: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("gbPerMonthAllocated", gbPerMonthAllocatedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.MonthlyTransfer) extends MonthlyTransfer.ReadOnly { override def gbPerMonthAllocatedValue: scala.Option[primitives.Integer] = scala.Option(impl.gbPerMonthAllocated()).map(value => value: primitives.Integer) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.MonthlyTransfer): ReadOnly = new Wrapper(impl)
  }
  sealed trait NetworkProtocol { def unwrap: software.amazon.awssdk.services.lightsail.model.NetworkProtocol }
  object NetworkProtocol {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.NetworkProtocol): NetworkProtocol = value match {
      case software.amazon.awssdk.services.lightsail.model.NetworkProtocol.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.NetworkProtocol.TCP => tcp
      case software.amazon.awssdk.services.lightsail.model.NetworkProtocol.ALL => all
      case software.amazon.awssdk.services.lightsail.model.NetworkProtocol.UDP => udp
      case software.amazon.awssdk.services.lightsail.model.NetworkProtocol.ICMP => icmp
    }
    final case object unknownToSdkVersion extends NetworkProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.NetworkProtocol = software.amazon.awssdk.services.lightsail.model.NetworkProtocol.UNKNOWN_TO_SDK_VERSION }
    final case object tcp extends NetworkProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.NetworkProtocol = software.amazon.awssdk.services.lightsail.model.NetworkProtocol.TCP }
    final case object all extends NetworkProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.NetworkProtocol = software.amazon.awssdk.services.lightsail.model.NetworkProtocol.ALL }
    final case object udp extends NetworkProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.NetworkProtocol = software.amazon.awssdk.services.lightsail.model.NetworkProtocol.UDP }
    final case object icmp extends NetworkProtocol { override def unwrap: software.amazon.awssdk.services.lightsail.model.NetworkProtocol = software.amazon.awssdk.services.lightsail.model.NetworkProtocol.ICMP }
  }
  type NotificationTriggerList = List[AlarmState]
  case class OpenInstancePublicPortsRequest(portInfo: PortInfo, instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsRequest = {
      import OpenInstancePublicPortsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsRequest.builder().portInfo(portInfo.buildAwsValue()).instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: OpenInstancePublicPortsRequest.ReadOnly = OpenInstancePublicPortsRequest.wrap(buildAwsValue())
  }
  object OpenInstancePublicPortsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: OpenInstancePublicPortsRequest = OpenInstancePublicPortsRequest(portInfoValue.editable, instanceNameValue)
      def portInfoValue: PortInfo.ReadOnly
      def instanceNameValue: primitives.ResourceName
      def portInfo: ZIO[Any, Nothing, PortInfo.ReadOnly] = ZIO.succeed(portInfoValue)
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsRequest) extends OpenInstancePublicPortsRequest.ReadOnly {
      override def portInfoValue: PortInfo.ReadOnly = PortInfo.wrap(impl.portInfo())
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsRequest): ReadOnly = new Wrapper(impl)
  }
  case class OpenInstancePublicPortsResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsResponse = {
      import OpenInstancePublicPortsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: OpenInstancePublicPortsResponse.ReadOnly = OpenInstancePublicPortsResponse.wrap(buildAwsValue())
  }
  object OpenInstancePublicPortsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: OpenInstancePublicPortsResponse = OpenInstancePublicPortsResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsResponse) extends OpenInstancePublicPortsResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.OpenInstancePublicPortsResponse): ReadOnly = new Wrapper(impl)
  }
  case class Operation(id: scala.Option[primitives.NonEmptyString] = None, resourceName: scala.Option[primitives.ResourceName] = None, resourceType: scala.Option[ResourceType] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, isTerminal: scala.Option[Boolean] = None, operationDetails: scala.Option[String] = None, operationType: scala.Option[OperationType] = None, status: scala.Option[OperationStatus] = None, statusChangedAt: scala.Option[primitives.IsoDate] = None, errorCode: scala.Option[String] = None, errorDetails: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Operation = {
      import Operation.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Operation.builder().optionallyWith(id.map(value => value: java.lang.String))(_.id).optionallyWith(resourceName.map(value => value: java.lang.String))(_.resourceName).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(isTerminal.map(value => value: java.lang.Boolean))(_.isTerminal).optionallyWith(operationDetails.map(value => value: java.lang.String))(_.operationDetails).optionallyWith(operationType.map(value => value.unwrap))(_.operationType).optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(statusChangedAt.map(value => value: java.time.Instant))(_.statusChangedAt).optionallyWith(errorCode.map(value => value: java.lang.String))(_.errorCode).optionallyWith(errorDetails.map(value => value: java.lang.String))(_.errorDetails).build()
    }
    def asReadOnly: Operation.ReadOnly = Operation.wrap(buildAwsValue())
  }
  object Operation {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Operation] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Operation = Operation(idValue.map(value => value), resourceNameValue.map(value => value), resourceTypeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), isTerminalValue.map(value => value), operationDetailsValue.map(value => value), operationTypeValue.map(value => value), statusValue.map(value => value), statusChangedAtValue.map(value => value), errorCodeValue.map(value => value), errorDetailsValue.map(value => value))
      def idValue: scala.Option[primitives.NonEmptyString]
      def resourceNameValue: scala.Option[primitives.ResourceName]
      def resourceTypeValue: scala.Option[ResourceType]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def isTerminalValue: scala.Option[Boolean]
      def operationDetailsValue: scala.Option[String]
      def operationTypeValue: scala.Option[OperationType]
      def statusValue: scala.Option[OperationStatus]
      def statusChangedAtValue: scala.Option[primitives.IsoDate]
      def errorCodeValue: scala.Option[String]
      def errorDetailsValue: scala.Option[String]
      def id: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("id", idValue)
      def resourceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceName", resourceNameValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def isTerminal: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isTerminal", isTerminalValue)
      def operationDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operationDetails", operationDetailsValue)
      def operationType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, OperationType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operationType", operationTypeValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, OperationStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def statusChangedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("statusChangedAt", statusChangedAtValue)
      def errorCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("errorCode", errorCodeValue)
      def errorDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("errorDetails", errorDetailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Operation) extends Operation.ReadOnly {
      override def idValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.id()).map(value => value: primitives.NonEmptyString)
      override def resourceNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.resourceName()).map(value => value: primitives.ResourceName)
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def isTerminalValue: scala.Option[Boolean] = scala.Option(impl.isTerminal()).map(value => value: Boolean)
      override def operationDetailsValue: scala.Option[String] = scala.Option(impl.operationDetails()).map(value => value: String)
      override def operationTypeValue: scala.Option[OperationType] = scala.Option(impl.operationType()).map(value => OperationType.wrap(value))
      override def statusValue: scala.Option[OperationStatus] = scala.Option(impl.status()).map(value => OperationStatus.wrap(value))
      override def statusChangedAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.statusChangedAt()).map(value => value: primitives.IsoDate)
      override def errorCodeValue: scala.Option[String] = scala.Option(impl.errorCode()).map(value => value: String)
      override def errorDetailsValue: scala.Option[String] = scala.Option(impl.errorDetails()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Operation): ReadOnly = new Wrapper(impl)
  }
  type OperationList = List[Operation]
  sealed trait OperationStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.OperationStatus }
  object OperationStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.OperationStatus): OperationStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.OperationStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.OperationStatus.NOT_STARTED => NotStarted
      case software.amazon.awssdk.services.lightsail.model.OperationStatus.STARTED => Started
      case software.amazon.awssdk.services.lightsail.model.OperationStatus.FAILED => Failed
      case software.amazon.awssdk.services.lightsail.model.OperationStatus.COMPLETED => Completed
      case software.amazon.awssdk.services.lightsail.model.OperationStatus.SUCCEEDED => Succeeded
    }
    final case object unknownToSdkVersion extends OperationStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationStatus = software.amazon.awssdk.services.lightsail.model.OperationStatus.UNKNOWN_TO_SDK_VERSION }
    final case object NotStarted extends OperationStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationStatus = software.amazon.awssdk.services.lightsail.model.OperationStatus.NOT_STARTED }
    final case object Started extends OperationStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationStatus = software.amazon.awssdk.services.lightsail.model.OperationStatus.STARTED }
    final case object Failed extends OperationStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationStatus = software.amazon.awssdk.services.lightsail.model.OperationStatus.FAILED }
    final case object Completed extends OperationStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationStatus = software.amazon.awssdk.services.lightsail.model.OperationStatus.COMPLETED }
    final case object Succeeded extends OperationStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationStatus = software.amazon.awssdk.services.lightsail.model.OperationStatus.SUCCEEDED }
  }
  sealed trait OperationType { def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType }
  object OperationType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.OperationType): OperationType = value match {
      case software.amazon.awssdk.services.lightsail.model.OperationType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_KNOWN_HOST_KEYS => DeleteKnownHostKeys
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_INSTANCE => DeleteInstance
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_INSTANCE => CreateInstance
      case software.amazon.awssdk.services.lightsail.model.OperationType.STOP_INSTANCE => StopInstance
      case software.amazon.awssdk.services.lightsail.model.OperationType.START_INSTANCE => StartInstance
      case software.amazon.awssdk.services.lightsail.model.OperationType.REBOOT_INSTANCE => RebootInstance
      case software.amazon.awssdk.services.lightsail.model.OperationType.OPEN_INSTANCE_PUBLIC_PORTS => OpenInstancePublicPorts
      case software.amazon.awssdk.services.lightsail.model.OperationType.PUT_INSTANCE_PUBLIC_PORTS => PutInstancePublicPorts
      case software.amazon.awssdk.services.lightsail.model.OperationType.CLOSE_INSTANCE_PUBLIC_PORTS => CloseInstancePublicPorts
      case software.amazon.awssdk.services.lightsail.model.OperationType.ALLOCATE_STATIC_IP => AllocateStaticIp
      case software.amazon.awssdk.services.lightsail.model.OperationType.RELEASE_STATIC_IP => ReleaseStaticIp
      case software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_STATIC_IP => AttachStaticIp
      case software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_STATIC_IP => DetachStaticIp
      case software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_DOMAIN_ENTRY => UpdateDomainEntry
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DOMAIN_ENTRY => DeleteDomainEntry
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DOMAIN => CreateDomain
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DOMAIN => DeleteDomain
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_INSTANCE_SNAPSHOT => CreateInstanceSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_INSTANCE_SNAPSHOT => DeleteInstanceSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_INSTANCES_FROM_SNAPSHOT => CreateInstancesFromSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_LOAD_BALANCER => CreateLoadBalancer
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_LOAD_BALANCER => DeleteLoadBalancer
      case software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_INSTANCES_TO_LOAD_BALANCER => AttachInstancesToLoadBalancer
      case software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_INSTANCES_FROM_LOAD_BALANCER => DetachInstancesFromLoadBalancer
      case software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_LOAD_BALANCER_ATTRIBUTE => UpdateLoadBalancerAttribute
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_LOAD_BALANCER_TLS_CERTIFICATE => CreateLoadBalancerTlsCertificate
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_LOAD_BALANCER_TLS_CERTIFICATE => DeleteLoadBalancerTlsCertificate
      case software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_LOAD_BALANCER_TLS_CERTIFICATE => AttachLoadBalancerTlsCertificate
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISK => CreateDisk
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DISK => DeleteDisk
      case software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_DISK => AttachDisk
      case software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_DISK => DetachDisk
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISK_SNAPSHOT => CreateDiskSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DISK_SNAPSHOT => DeleteDiskSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISK_FROM_SNAPSHOT => CreateDiskFromSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_RELATIONAL_DATABASE => CreateRelationalDatabase
      case software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_RELATIONAL_DATABASE => UpdateRelationalDatabase
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_RELATIONAL_DATABASE => DeleteRelationalDatabase
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_RELATIONAL_DATABASE_FROM_SNAPSHOT => CreateRelationalDatabaseFromSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_RELATIONAL_DATABASE_SNAPSHOT => CreateRelationalDatabaseSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_RELATIONAL_DATABASE_SNAPSHOT => DeleteRelationalDatabaseSnapshot
      case software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_RELATIONAL_DATABASE_PARAMETERS => UpdateRelationalDatabaseParameters
      case software.amazon.awssdk.services.lightsail.model.OperationType.START_RELATIONAL_DATABASE => StartRelationalDatabase
      case software.amazon.awssdk.services.lightsail.model.OperationType.REBOOT_RELATIONAL_DATABASE => RebootRelationalDatabase
      case software.amazon.awssdk.services.lightsail.model.OperationType.STOP_RELATIONAL_DATABASE => StopRelationalDatabase
      case software.amazon.awssdk.services.lightsail.model.OperationType.ENABLE_ADD_ON => EnableAddOn
      case software.amazon.awssdk.services.lightsail.model.OperationType.DISABLE_ADD_ON => DisableAddOn
      case software.amazon.awssdk.services.lightsail.model.OperationType.PUT_ALARM => PutAlarm
      case software.amazon.awssdk.services.lightsail.model.OperationType.GET_ALARMS => GetAlarms
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_ALARM => DeleteAlarm
      case software.amazon.awssdk.services.lightsail.model.OperationType.TEST_ALARM => TestAlarm
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTACT_METHOD => CreateContactMethod
      case software.amazon.awssdk.services.lightsail.model.OperationType.GET_CONTACT_METHODS => GetContactMethods
      case software.amazon.awssdk.services.lightsail.model.OperationType.SEND_CONTACT_METHOD_VERIFICATION => SendContactMethodVerification
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CONTACT_METHOD => DeleteContactMethod
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISTRIBUTION => CreateDistribution
      case software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_DISTRIBUTION => UpdateDistribution
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DISTRIBUTION => DeleteDistribution
      case software.amazon.awssdk.services.lightsail.model.OperationType.RESET_DISTRIBUTION_CACHE => ResetDistributionCache
      case software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_CERTIFICATE_TO_DISTRIBUTION => AttachCertificateToDistribution
      case software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_CERTIFICATE_FROM_DISTRIBUTION => DetachCertificateFromDistribution
      case software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_DISTRIBUTION_BUNDLE => UpdateDistributionBundle
      case software.amazon.awssdk.services.lightsail.model.OperationType.SET_IP_ADDRESS_TYPE => SetIpAddressType
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CERTIFICATE => CreateCertificate
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CERTIFICATE => DeleteCertificate
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTAINER_SERVICE => CreateContainerService
      case software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_CONTAINER_SERVICE => UpdateContainerService
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CONTAINER_SERVICE => DeleteContainerService
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTAINER_SERVICE_DEPLOYMENT => CreateContainerServiceDeployment
      case software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTAINER_SERVICE_REGISTRY_LOGIN => CreateContainerServiceRegistryLogin
      case software.amazon.awssdk.services.lightsail.model.OperationType.REGISTER_CONTAINER_IMAGE => RegisterContainerImage
      case software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CONTAINER_IMAGE => DeleteContainerImage
    }
    final case object unknownToSdkVersion extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UNKNOWN_TO_SDK_VERSION }
    final case object DeleteKnownHostKeys extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_KNOWN_HOST_KEYS }
    final case object DeleteInstance extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_INSTANCE }
    final case object CreateInstance extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_INSTANCE }
    final case object StopInstance extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.STOP_INSTANCE }
    final case object StartInstance extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.START_INSTANCE }
    final case object RebootInstance extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.REBOOT_INSTANCE }
    final case object OpenInstancePublicPorts extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.OPEN_INSTANCE_PUBLIC_PORTS }
    final case object PutInstancePublicPorts extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.PUT_INSTANCE_PUBLIC_PORTS }
    final case object CloseInstancePublicPorts extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CLOSE_INSTANCE_PUBLIC_PORTS }
    final case object AllocateStaticIp extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.ALLOCATE_STATIC_IP }
    final case object ReleaseStaticIp extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.RELEASE_STATIC_IP }
    final case object AttachStaticIp extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_STATIC_IP }
    final case object DetachStaticIp extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_STATIC_IP }
    final case object UpdateDomainEntry extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_DOMAIN_ENTRY }
    final case object DeleteDomainEntry extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DOMAIN_ENTRY }
    final case object CreateDomain extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DOMAIN }
    final case object DeleteDomain extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DOMAIN }
    final case object CreateInstanceSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_INSTANCE_SNAPSHOT }
    final case object DeleteInstanceSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_INSTANCE_SNAPSHOT }
    final case object CreateInstancesFromSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_INSTANCES_FROM_SNAPSHOT }
    final case object CreateLoadBalancer extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_LOAD_BALANCER }
    final case object DeleteLoadBalancer extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_LOAD_BALANCER }
    final case object AttachInstancesToLoadBalancer extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_INSTANCES_TO_LOAD_BALANCER }
    final case object DetachInstancesFromLoadBalancer extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_INSTANCES_FROM_LOAD_BALANCER }
    final case object UpdateLoadBalancerAttribute extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_LOAD_BALANCER_ATTRIBUTE }
    final case object CreateLoadBalancerTlsCertificate extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_LOAD_BALANCER_TLS_CERTIFICATE }
    final case object DeleteLoadBalancerTlsCertificate extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_LOAD_BALANCER_TLS_CERTIFICATE }
    final case object AttachLoadBalancerTlsCertificate extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_LOAD_BALANCER_TLS_CERTIFICATE }
    final case object CreateDisk extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISK }
    final case object DeleteDisk extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DISK }
    final case object AttachDisk extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_DISK }
    final case object DetachDisk extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_DISK }
    final case object CreateDiskSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISK_SNAPSHOT }
    final case object DeleteDiskSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DISK_SNAPSHOT }
    final case object CreateDiskFromSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISK_FROM_SNAPSHOT }
    final case object CreateRelationalDatabase extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_RELATIONAL_DATABASE }
    final case object UpdateRelationalDatabase extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_RELATIONAL_DATABASE }
    final case object DeleteRelationalDatabase extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_RELATIONAL_DATABASE }
    final case object CreateRelationalDatabaseFromSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_RELATIONAL_DATABASE_FROM_SNAPSHOT }
    final case object CreateRelationalDatabaseSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_RELATIONAL_DATABASE_SNAPSHOT }
    final case object DeleteRelationalDatabaseSnapshot extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_RELATIONAL_DATABASE_SNAPSHOT }
    final case object UpdateRelationalDatabaseParameters extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_RELATIONAL_DATABASE_PARAMETERS }
    final case object StartRelationalDatabase extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.START_RELATIONAL_DATABASE }
    final case object RebootRelationalDatabase extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.REBOOT_RELATIONAL_DATABASE }
    final case object StopRelationalDatabase extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.STOP_RELATIONAL_DATABASE }
    final case object EnableAddOn extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.ENABLE_ADD_ON }
    final case object DisableAddOn extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DISABLE_ADD_ON }
    final case object PutAlarm extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.PUT_ALARM }
    final case object GetAlarms extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.GET_ALARMS }
    final case object DeleteAlarm extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_ALARM }
    final case object TestAlarm extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.TEST_ALARM }
    final case object CreateContactMethod extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTACT_METHOD }
    final case object GetContactMethods extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.GET_CONTACT_METHODS }
    final case object SendContactMethodVerification extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.SEND_CONTACT_METHOD_VERIFICATION }
    final case object DeleteContactMethod extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CONTACT_METHOD }
    final case object CreateDistribution extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_DISTRIBUTION }
    final case object UpdateDistribution extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_DISTRIBUTION }
    final case object DeleteDistribution extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_DISTRIBUTION }
    final case object ResetDistributionCache extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.RESET_DISTRIBUTION_CACHE }
    final case object AttachCertificateToDistribution extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.ATTACH_CERTIFICATE_TO_DISTRIBUTION }
    final case object DetachCertificateFromDistribution extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DETACH_CERTIFICATE_FROM_DISTRIBUTION }
    final case object UpdateDistributionBundle extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_DISTRIBUTION_BUNDLE }
    final case object SetIpAddressType extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.SET_IP_ADDRESS_TYPE }
    final case object CreateCertificate extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CERTIFICATE }
    final case object DeleteCertificate extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CERTIFICATE }
    final case object CreateContainerService extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTAINER_SERVICE }
    final case object UpdateContainerService extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.UPDATE_CONTAINER_SERVICE }
    final case object DeleteContainerService extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CONTAINER_SERVICE }
    final case object CreateContainerServiceDeployment extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTAINER_SERVICE_DEPLOYMENT }
    final case object CreateContainerServiceRegistryLogin extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.CREATE_CONTAINER_SERVICE_REGISTRY_LOGIN }
    final case object RegisterContainerImage extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.REGISTER_CONTAINER_IMAGE }
    final case object DeleteContainerImage extends OperationType { override def unwrap: software.amazon.awssdk.services.lightsail.model.OperationType = software.amazon.awssdk.services.lightsail.model.OperationType.DELETE_CONTAINER_IMAGE }
  }
  case class Origin(name: scala.Option[primitives.ResourceName] = None, resourceType: scala.Option[ResourceType] = None, regionName: scala.Option[RegionName] = None, protocolPolicy: scala.Option[OriginProtocolPolicyEnum] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Origin = {
      import Origin.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Origin.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(regionName.map(value => value.unwrap))(_.regionName).optionallyWith(protocolPolicy.map(value => value.unwrap))(_.protocolPolicy).build()
    }
    def asReadOnly: Origin.ReadOnly = Origin.wrap(buildAwsValue())
  }
  object Origin {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Origin] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Origin = Origin(nameValue.map(value => value), resourceTypeValue.map(value => value), regionNameValue.map(value => value), protocolPolicyValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def resourceTypeValue: scala.Option[ResourceType]
      def regionNameValue: scala.Option[RegionName]
      def protocolPolicyValue: scala.Option[OriginProtocolPolicyEnum]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def regionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regionName", regionNameValue)
      def protocolPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, OriginProtocolPolicyEnum] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocolPolicy", protocolPolicyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Origin) extends Origin.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def regionNameValue: scala.Option[RegionName] = scala.Option(impl.regionName()).map(value => RegionName.wrap(value))
      override def protocolPolicyValue: scala.Option[OriginProtocolPolicyEnum] = scala.Option(impl.protocolPolicy()).map(value => OriginProtocolPolicyEnum.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Origin): ReadOnly = new Wrapper(impl)
  }
  sealed trait OriginProtocolPolicyEnum { def unwrap: software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum }
  object OriginProtocolPolicyEnum {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum): OriginProtocolPolicyEnum = value match {
      case software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum.HTTP_ONLY => `http-only`
      case software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum.HTTPS_ONLY => `https-only`
    }
    final case object unknownToSdkVersion extends OriginProtocolPolicyEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum = software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum.UNKNOWN_TO_SDK_VERSION }
    final case object `http-only` extends OriginProtocolPolicyEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum = software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum.HTTP_ONLY }
    final case object `https-only` extends OriginProtocolPolicyEnum { override def unwrap: software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum = software.amazon.awssdk.services.lightsail.model.OriginProtocolPolicyEnum.HTTPS_ONLY }
  }
  case class PasswordData(ciphertext: scala.Option[String] = None, keyPairName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PasswordData = {
      import PasswordData.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PasswordData.builder().optionallyWith(ciphertext.map(value => value: java.lang.String))(_.ciphertext).optionallyWith(keyPairName.map(value => value: java.lang.String))(_.keyPairName).build()
    }
    def asReadOnly: PasswordData.ReadOnly = PasswordData.wrap(buildAwsValue())
  }
  object PasswordData {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PasswordData] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PasswordData = PasswordData(ciphertextValue.map(value => value), keyPairNameValue.map(value => value))
      def ciphertextValue: scala.Option[String]
      def keyPairNameValue: scala.Option[primitives.ResourceName]
      def ciphertext: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ciphertext", ciphertextValue)
      def keyPairName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keyPairName", keyPairNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PasswordData) extends PasswordData.ReadOnly {
      override def ciphertextValue: scala.Option[String] = scala.Option(impl.ciphertext()).map(value => value: String)
      override def keyPairNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.keyPairName()).map(value => value: primitives.ResourceName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PasswordData): ReadOnly = new Wrapper(impl)
  }
  case class PeerVpcRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PeerVpcRequest = {
      import PeerVpcRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PeerVpcRequest.builder().build()
    }
    def asReadOnly: PeerVpcRequest.ReadOnly = PeerVpcRequest.wrap(buildAwsValue())
  }
  object PeerVpcRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PeerVpcRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: PeerVpcRequest = PeerVpcRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PeerVpcRequest) extends PeerVpcRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PeerVpcRequest): ReadOnly = new Wrapper(impl)
  }
  case class PeerVpcResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PeerVpcResponse = {
      import PeerVpcResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PeerVpcResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: PeerVpcResponse.ReadOnly = PeerVpcResponse.wrap(buildAwsValue())
  }
  object PeerVpcResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PeerVpcResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PeerVpcResponse = PeerVpcResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PeerVpcResponse) extends PeerVpcResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PeerVpcResponse): ReadOnly = new Wrapper(impl)
  }
  case class PendingMaintenanceAction(action: scala.Option[primitives.NonEmptyString] = None, description: scala.Option[primitives.NonEmptyString] = None, currentApplyDate: scala.Option[primitives.IsoDate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PendingMaintenanceAction = {
      import PendingMaintenanceAction.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PendingMaintenanceAction.builder().optionallyWith(action.map(value => value: java.lang.String))(_.action).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(currentApplyDate.map(value => value: java.time.Instant))(_.currentApplyDate).build()
    }
    def asReadOnly: PendingMaintenanceAction.ReadOnly = PendingMaintenanceAction.wrap(buildAwsValue())
  }
  object PendingMaintenanceAction {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PendingMaintenanceAction] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PendingMaintenanceAction = PendingMaintenanceAction(actionValue.map(value => value), descriptionValue.map(value => value), currentApplyDateValue.map(value => value))
      def actionValue: scala.Option[primitives.NonEmptyString]
      def descriptionValue: scala.Option[primitives.NonEmptyString]
      def currentApplyDateValue: scala.Option[primitives.IsoDate]
      def action: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("action", actionValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def currentApplyDate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("currentApplyDate", currentApplyDateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PendingMaintenanceAction) extends PendingMaintenanceAction.ReadOnly {
      override def actionValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.action()).map(value => value: primitives.NonEmptyString)
      override def descriptionValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.description()).map(value => value: primitives.NonEmptyString)
      override def currentApplyDateValue: scala.Option[primitives.IsoDate] = scala.Option(impl.currentApplyDate()).map(value => value: primitives.IsoDate)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PendingMaintenanceAction): ReadOnly = new Wrapper(impl)
  }
  type PendingMaintenanceActionList = List[PendingMaintenanceAction]
  case class PendingModifiedRelationalDatabaseValues(masterUserPassword: scala.Option[String] = None, engineVersion: scala.Option[String] = None, backupRetentionEnabled: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PendingModifiedRelationalDatabaseValues = {
      import PendingModifiedRelationalDatabaseValues.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PendingModifiedRelationalDatabaseValues.builder().optionallyWith(masterUserPassword.map(value => value: java.lang.String))(_.masterUserPassword).optionallyWith(engineVersion.map(value => value: java.lang.String))(_.engineVersion).optionallyWith(backupRetentionEnabled.map(value => value: java.lang.Boolean))(_.backupRetentionEnabled).build()
    }
    def asReadOnly: PendingModifiedRelationalDatabaseValues.ReadOnly = PendingModifiedRelationalDatabaseValues.wrap(buildAwsValue())
  }
  object PendingModifiedRelationalDatabaseValues {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PendingModifiedRelationalDatabaseValues] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PendingModifiedRelationalDatabaseValues = PendingModifiedRelationalDatabaseValues(masterUserPasswordValue.map(value => value), engineVersionValue.map(value => value), backupRetentionEnabledValue.map(value => value))
      def masterUserPasswordValue: scala.Option[String]
      def engineVersionValue: scala.Option[String]
      def backupRetentionEnabledValue: scala.Option[Boolean]
      def masterUserPassword: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("masterUserPassword", masterUserPasswordValue)
      def engineVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engineVersion", engineVersionValue)
      def backupRetentionEnabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupRetentionEnabled", backupRetentionEnabledValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PendingModifiedRelationalDatabaseValues) extends PendingModifiedRelationalDatabaseValues.ReadOnly {
      override def masterUserPasswordValue: scala.Option[String] = scala.Option(impl.masterUserPassword()).map(value => value: String)
      override def engineVersionValue: scala.Option[String] = scala.Option(impl.engineVersion()).map(value => value: String)
      override def backupRetentionEnabledValue: scala.Option[Boolean] = scala.Option(impl.backupRetentionEnabled()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PendingModifiedRelationalDatabaseValues): ReadOnly = new Wrapper(impl)
  }
  sealed trait PortAccessType { def unwrap: software.amazon.awssdk.services.lightsail.model.PortAccessType }
  object PortAccessType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.PortAccessType): PortAccessType = value match {
      case software.amazon.awssdk.services.lightsail.model.PortAccessType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.PortAccessType.PUBLIC => Public
      case software.amazon.awssdk.services.lightsail.model.PortAccessType.PRIVATE => Private
    }
    final case object unknownToSdkVersion extends PortAccessType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortAccessType = software.amazon.awssdk.services.lightsail.model.PortAccessType.UNKNOWN_TO_SDK_VERSION }
    final case object Public extends PortAccessType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortAccessType = software.amazon.awssdk.services.lightsail.model.PortAccessType.PUBLIC }
    final case object Private extends PortAccessType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortAccessType = software.amazon.awssdk.services.lightsail.model.PortAccessType.PRIVATE }
  }
  case class PortInfo(fromPort: scala.Option[primitives.Port] = None, toPort: scala.Option[primitives.Port] = None, protocol: scala.Option[NetworkProtocol] = None, cidrs: scala.Option[Iterable[String]] = None, ipv6Cidrs: scala.Option[Iterable[String]] = None, cidrListAliases: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PortInfo = {
      import PortInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PortInfo.builder().optionallyWith(fromPort.map(value => value: java.lang.Integer))(_.fromPort).optionallyWith(toPort.map(value => value: java.lang.Integer))(_.toPort).optionallyWith(protocol.map(value => value.unwrap))(_.protocol).optionallyWith(cidrs.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.cidrs).optionallyWith(ipv6Cidrs.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ipv6Cidrs).optionallyWith(cidrListAliases.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.cidrListAliases).build()
    }
    def asReadOnly: PortInfo.ReadOnly = PortInfo.wrap(buildAwsValue())
  }
  object PortInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PortInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PortInfo = PortInfo(fromPortValue.map(value => value), toPortValue.map(value => value), protocolValue.map(value => value), cidrsValue.map(value => value), ipv6CidrsValue.map(value => value), cidrListAliasesValue.map(value => value))
      def fromPortValue: scala.Option[primitives.Port]
      def toPortValue: scala.Option[primitives.Port]
      def protocolValue: scala.Option[NetworkProtocol]
      def cidrsValue: scala.Option[List[String]]
      def ipv6CidrsValue: scala.Option[List[String]]
      def cidrListAliasesValue: scala.Option[List[String]]
      def fromPort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Port] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromPort", fromPortValue)
      def toPort: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Port] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("toPort", toPortValue)
      def protocol: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, NetworkProtocol] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("protocol", protocolValue)
      def cidrs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cidrs", cidrsValue)
      def ipv6Cidrs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipv6Cidrs", ipv6CidrsValue)
      def cidrListAliases: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cidrListAliases", cidrListAliasesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PortInfo) extends PortInfo.ReadOnly {
      override def fromPortValue: scala.Option[primitives.Port] = scala.Option(impl.fromPort()).map(value => value: primitives.Port)
      override def toPortValue: scala.Option[primitives.Port] = scala.Option(impl.toPort()).map(value => value: primitives.Port)
      override def protocolValue: scala.Option[NetworkProtocol] = scala.Option(impl.protocol()).map(value => NetworkProtocol.wrap(value))
      override def cidrsValue: scala.Option[List[String]] = scala.Option(impl.cidrs()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def ipv6CidrsValue: scala.Option[List[String]] = scala.Option(impl.ipv6Cidrs()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
      override def cidrListAliasesValue: scala.Option[List[String]] = scala.Option(impl.cidrListAliases()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PortInfo): ReadOnly = new Wrapper(impl)
  }
  type PortInfoList = List[PortInfo]
  sealed trait PortInfoSourceType { def unwrap: software.amazon.awssdk.services.lightsail.model.PortInfoSourceType }
  object PortInfoSourceType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.PortInfoSourceType): PortInfoSourceType = value match {
      case software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.DEFAULT => DEFAULT
      case software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.INSTANCE => INSTANCE
      case software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.NONE => NONE
      case software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.CLOSED => CLOSED
    }
    final case object unknownToSdkVersion extends PortInfoSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortInfoSourceType = software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.UNKNOWN_TO_SDK_VERSION }
    final case object DEFAULT extends PortInfoSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortInfoSourceType = software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.DEFAULT }
    final case object INSTANCE extends PortInfoSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortInfoSourceType = software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.INSTANCE }
    final case object NONE extends PortInfoSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortInfoSourceType = software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.NONE }
    final case object CLOSED extends PortInfoSourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortInfoSourceType = software.amazon.awssdk.services.lightsail.model.PortInfoSourceType.CLOSED }
  }
  type PortList = List[primitives.Port]
  type PortMap = Map[String, ContainerServiceProtocol]
  sealed trait PortState { def unwrap: software.amazon.awssdk.services.lightsail.model.PortState }
  object PortState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.PortState): PortState = value match {
      case software.amazon.awssdk.services.lightsail.model.PortState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.PortState.OPEN => open
      case software.amazon.awssdk.services.lightsail.model.PortState.CLOSED => closed
    }
    final case object unknownToSdkVersion extends PortState { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortState = software.amazon.awssdk.services.lightsail.model.PortState.UNKNOWN_TO_SDK_VERSION }
    final case object open extends PortState { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortState = software.amazon.awssdk.services.lightsail.model.PortState.OPEN }
    final case object closed extends PortState { override def unwrap: software.amazon.awssdk.services.lightsail.model.PortState = software.amazon.awssdk.services.lightsail.model.PortState.CLOSED }
  }
  case class PutAlarmRequest(alarmName: primitives.ResourceName, metricName: MetricName, monitoredResourceName: primitives.ResourceName, comparisonOperator: ComparisonOperator, threshold: Double, evaluationPeriods: primitives.Integer, datapointsToAlarm: scala.Option[primitives.Integer] = None, treatMissingData: scala.Option[TreatMissingData] = None, contactProtocols: scala.Option[Iterable[ContactProtocol]] = None, notificationTriggers: scala.Option[Iterable[AlarmState]] = None, notificationEnabled: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PutAlarmRequest = {
      import PutAlarmRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PutAlarmRequest.builder().alarmName(alarmName: java.lang.String).metricName(metricName.unwrap).monitoredResourceName(monitoredResourceName: java.lang.String).comparisonOperator(comparisonOperator.unwrap).threshold(threshold: java.lang.Double).evaluationPeriods(evaluationPeriods: java.lang.Integer).optionallyWith(datapointsToAlarm.map(value => value: java.lang.Integer))(_.datapointsToAlarm).optionallyWith(treatMissingData.map(value => value.unwrap))(_.treatMissingData).optionallyWith(contactProtocols.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.contactProtocolsWithStrings).optionallyWith(notificationTriggers.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.notificationTriggersWithStrings).optionallyWith(notificationEnabled.map(value => value: java.lang.Boolean))(_.notificationEnabled).build()
    }
    def asReadOnly: PutAlarmRequest.ReadOnly = PutAlarmRequest.wrap(buildAwsValue())
  }
  object PutAlarmRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PutAlarmRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PutAlarmRequest = PutAlarmRequest(alarmNameValue, metricNameValue, monitoredResourceNameValue, comparisonOperatorValue, thresholdValue, evaluationPeriodsValue, datapointsToAlarmValue.map(value => value), treatMissingDataValue.map(value => value), contactProtocolsValue.map(value => value), notificationTriggersValue.map(value => value), notificationEnabledValue.map(value => value))
      def alarmNameValue: primitives.ResourceName
      def metricNameValue: MetricName
      def monitoredResourceNameValue: primitives.ResourceName
      def comparisonOperatorValue: ComparisonOperator
      def thresholdValue: Double
      def evaluationPeriodsValue: primitives.Integer
      def datapointsToAlarmValue: scala.Option[primitives.Integer]
      def treatMissingDataValue: scala.Option[TreatMissingData]
      def contactProtocolsValue: scala.Option[List[ContactProtocol]]
      def notificationTriggersValue: scala.Option[List[AlarmState]]
      def notificationEnabledValue: scala.Option[Boolean]
      def alarmName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(alarmNameValue)
      def metricName: ZIO[Any, Nothing, MetricName] = ZIO.succeed(metricNameValue)
      def monitoredResourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(monitoredResourceNameValue)
      def comparisonOperator: ZIO[Any, Nothing, ComparisonOperator] = ZIO.succeed(comparisonOperatorValue)
      def threshold: ZIO[Any, Nothing, Double] = ZIO.succeed(thresholdValue)
      def evaluationPeriods: ZIO[Any, Nothing, primitives.Integer] = ZIO.succeed(evaluationPeriodsValue)
      def datapointsToAlarm: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datapointsToAlarm", datapointsToAlarmValue)
      def treatMissingData: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TreatMissingData] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("treatMissingData", treatMissingDataValue)
      def contactProtocols: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ContactProtocol]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("contactProtocols", contactProtocolsValue)
      def notificationTriggers: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AlarmState]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notificationTriggers", notificationTriggersValue)
      def notificationEnabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notificationEnabled", notificationEnabledValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PutAlarmRequest) extends PutAlarmRequest.ReadOnly {
      override def alarmNameValue: primitives.ResourceName = impl.alarmName(): primitives.ResourceName
      override def metricNameValue: MetricName = MetricName.wrap(impl.metricName())
      override def monitoredResourceNameValue: primitives.ResourceName = impl.monitoredResourceName(): primitives.ResourceName
      override def comparisonOperatorValue: ComparisonOperator = ComparisonOperator.wrap(impl.comparisonOperator())
      override def thresholdValue: Double = impl.threshold(): Double
      override def evaluationPeriodsValue: primitives.Integer = impl.evaluationPeriods(): primitives.Integer
      override def datapointsToAlarmValue: scala.Option[primitives.Integer] = scala.Option(impl.datapointsToAlarm()).map(value => value: primitives.Integer)
      override def treatMissingDataValue: scala.Option[TreatMissingData] = scala.Option(impl.treatMissingData()).map(value => TreatMissingData.wrap(value))
      override def contactProtocolsValue: scala.Option[List[ContactProtocol]] = scala.Option(impl.contactProtocols()).map(value => value.asScala.map { item => 
        ContactProtocol.wrap(item)
      }.toList)
      override def notificationTriggersValue: scala.Option[List[AlarmState]] = scala.Option(impl.notificationTriggers()).map(value => value.asScala.map { item => 
        AlarmState.wrap(item)
      }.toList)
      override def notificationEnabledValue: scala.Option[Boolean] = scala.Option(impl.notificationEnabled()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PutAlarmRequest): ReadOnly = new Wrapper(impl)
  }
  case class PutAlarmResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PutAlarmResponse = {
      import PutAlarmResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PutAlarmResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: PutAlarmResponse.ReadOnly = PutAlarmResponse.wrap(buildAwsValue())
  }
  object PutAlarmResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PutAlarmResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PutAlarmResponse = PutAlarmResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PutAlarmResponse) extends PutAlarmResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PutAlarmResponse): ReadOnly = new Wrapper(impl)
  }
  case class PutInstancePublicPortsRequest(portInfos: Iterable[PortInfo], instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsRequest = {
      import PutInstancePublicPortsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsRequest.builder().portInfos(portInfos.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: PutInstancePublicPortsRequest.ReadOnly = PutInstancePublicPortsRequest.wrap(buildAwsValue())
  }
  object PutInstancePublicPortsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PutInstancePublicPortsRequest = PutInstancePublicPortsRequest(portInfosValue.map { item => 
        item.editable
      }, instanceNameValue)
      def portInfosValue: List[PortInfo.ReadOnly]
      def instanceNameValue: primitives.ResourceName
      def portInfos: ZIO[Any, Nothing, List[PortInfo.ReadOnly]] = ZIO.succeed(portInfosValue)
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsRequest) extends PutInstancePublicPortsRequest.ReadOnly {
      override def portInfosValue: List[PortInfo.ReadOnly] = impl.portInfos().asScala.map { item => 
        PortInfo.wrap(item)
      }.toList
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsRequest): ReadOnly = new Wrapper(impl)
  }
  case class PutInstancePublicPortsResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsResponse = {
      import PutInstancePublicPortsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: PutInstancePublicPortsResponse.ReadOnly = PutInstancePublicPortsResponse.wrap(buildAwsValue())
  }
  object PutInstancePublicPortsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PutInstancePublicPortsResponse = PutInstancePublicPortsResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsResponse) extends PutInstancePublicPortsResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.PutInstancePublicPortsResponse): ReadOnly = new Wrapper(impl)
  }
  case class QueryStringObject(option: scala.Option[Boolean] = None, queryStringsAllowList: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.QueryStringObject = {
      import QueryStringObject.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.QueryStringObject.builder().optionallyWith(option.map(value => value: java.lang.Boolean))(_.option).optionallyWith(queryStringsAllowList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.queryStringsAllowList).build()
    }
    def asReadOnly: QueryStringObject.ReadOnly = QueryStringObject.wrap(buildAwsValue())
  }
  object QueryStringObject {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.QueryStringObject] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: QueryStringObject = QueryStringObject(optionValue.map(value => value), queryStringsAllowListValue.map(value => value))
      def optionValue: scala.Option[Boolean]
      def queryStringsAllowListValue: scala.Option[List[String]]
      def option: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("option", optionValue)
      def queryStringsAllowList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("queryStringsAllowList", queryStringsAllowListValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.QueryStringObject) extends QueryStringObject.ReadOnly {
      override def optionValue: scala.Option[Boolean] = scala.Option(impl.option()).map(value => value: Boolean)
      override def queryStringsAllowListValue: scala.Option[List[String]] = scala.Option(impl.queryStringsAllowList()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.QueryStringObject): ReadOnly = new Wrapper(impl)
  }
  case class RebootInstanceRequest(instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RebootInstanceRequest = {
      import RebootInstanceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RebootInstanceRequest.builder().instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: RebootInstanceRequest.ReadOnly = RebootInstanceRequest.wrap(buildAwsValue())
  }
  object RebootInstanceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RebootInstanceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RebootInstanceRequest = RebootInstanceRequest(instanceNameValue)
      def instanceNameValue: primitives.ResourceName
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RebootInstanceRequest) extends RebootInstanceRequest.ReadOnly { override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RebootInstanceRequest): ReadOnly = new Wrapper(impl)
  }
  case class RebootInstanceResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RebootInstanceResponse = {
      import RebootInstanceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RebootInstanceResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: RebootInstanceResponse.ReadOnly = RebootInstanceResponse.wrap(buildAwsValue())
  }
  object RebootInstanceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RebootInstanceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RebootInstanceResponse = RebootInstanceResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RebootInstanceResponse) extends RebootInstanceResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RebootInstanceResponse): ReadOnly = new Wrapper(impl)
  }
  case class RebootRelationalDatabaseRequest(relationalDatabaseName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseRequest = {
      import RebootRelationalDatabaseRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).build()
    }
    def asReadOnly: RebootRelationalDatabaseRequest.ReadOnly = RebootRelationalDatabaseRequest.wrap(buildAwsValue())
  }
  object RebootRelationalDatabaseRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RebootRelationalDatabaseRequest = RebootRelationalDatabaseRequest(relationalDatabaseNameValue)
      def relationalDatabaseNameValue: primitives.ResourceName
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseRequest) extends RebootRelationalDatabaseRequest.ReadOnly { override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseRequest): ReadOnly = new Wrapper(impl)
  }
  case class RebootRelationalDatabaseResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseResponse = {
      import RebootRelationalDatabaseResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: RebootRelationalDatabaseResponse.ReadOnly = RebootRelationalDatabaseResponse.wrap(buildAwsValue())
  }
  object RebootRelationalDatabaseResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RebootRelationalDatabaseResponse = RebootRelationalDatabaseResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseResponse) extends RebootRelationalDatabaseResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RebootRelationalDatabaseResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait RecordState { def unwrap: software.amazon.awssdk.services.lightsail.model.RecordState }
  object RecordState {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.RecordState): RecordState = value match {
      case software.amazon.awssdk.services.lightsail.model.RecordState.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.RecordState.STARTED => Started
      case software.amazon.awssdk.services.lightsail.model.RecordState.SUCCEEDED => Succeeded
      case software.amazon.awssdk.services.lightsail.model.RecordState.FAILED => Failed
    }
    final case object unknownToSdkVersion extends RecordState { override def unwrap: software.amazon.awssdk.services.lightsail.model.RecordState = software.amazon.awssdk.services.lightsail.model.RecordState.UNKNOWN_TO_SDK_VERSION }
    final case object Started extends RecordState { override def unwrap: software.amazon.awssdk.services.lightsail.model.RecordState = software.amazon.awssdk.services.lightsail.model.RecordState.STARTED }
    final case object Succeeded extends RecordState { override def unwrap: software.amazon.awssdk.services.lightsail.model.RecordState = software.amazon.awssdk.services.lightsail.model.RecordState.SUCCEEDED }
    final case object Failed extends RecordState { override def unwrap: software.amazon.awssdk.services.lightsail.model.RecordState = software.amazon.awssdk.services.lightsail.model.RecordState.FAILED }
  }
  case class Region(continentCode: scala.Option[String] = None, description: scala.Option[String] = None, displayName: scala.Option[String] = None, name: scala.Option[RegionName] = None, availabilityZones: scala.Option[Iterable[AvailabilityZone]] = None, relationalDatabaseAvailabilityZones: scala.Option[Iterable[AvailabilityZone]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Region = {
      import Region.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Region.builder().optionallyWith(continentCode.map(value => value: java.lang.String))(_.continentCode).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(displayName.map(value => value: java.lang.String))(_.displayName).optionallyWith(name.map(value => value.unwrap))(_.name).optionallyWith(availabilityZones.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.availabilityZones).optionallyWith(relationalDatabaseAvailabilityZones.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.relationalDatabaseAvailabilityZones).build()
    }
    def asReadOnly: Region.ReadOnly = Region.wrap(buildAwsValue())
  }
  object Region {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Region] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Region = Region(continentCodeValue.map(value => value), descriptionValue.map(value => value), displayNameValue.map(value => value), nameValue.map(value => value), availabilityZonesValue.map(value => value.map { item => 
        item.editable
      }), relationalDatabaseAvailabilityZonesValue.map(value => value.map { item => 
        item.editable
      }))
      def continentCodeValue: scala.Option[String]
      def descriptionValue: scala.Option[String]
      def displayNameValue: scala.Option[String]
      def nameValue: scala.Option[RegionName]
      def availabilityZonesValue: scala.Option[List[AvailabilityZone.ReadOnly]]
      def relationalDatabaseAvailabilityZonesValue: scala.Option[List[AvailabilityZone.ReadOnly]]
      def continentCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("continentCode", continentCodeValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def displayName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("displayName", displayNameValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def availabilityZones: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AvailabilityZone.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("availabilityZones", availabilityZonesValue)
      def relationalDatabaseAvailabilityZones: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AvailabilityZone.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseAvailabilityZones", relationalDatabaseAvailabilityZonesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Region) extends Region.ReadOnly {
      override def continentCodeValue: scala.Option[String] = scala.Option(impl.continentCode()).map(value => value: String)
      override def descriptionValue: scala.Option[String] = scala.Option(impl.description()).map(value => value: String)
      override def displayNameValue: scala.Option[String] = scala.Option(impl.displayName()).map(value => value: String)
      override def nameValue: scala.Option[RegionName] = scala.Option(impl.name()).map(value => RegionName.wrap(value))
      override def availabilityZonesValue: scala.Option[List[AvailabilityZone.ReadOnly]] = scala.Option(impl.availabilityZones()).map(value => value.asScala.map { item => 
        AvailabilityZone.wrap(item)
      }.toList)
      override def relationalDatabaseAvailabilityZonesValue: scala.Option[List[AvailabilityZone.ReadOnly]] = scala.Option(impl.relationalDatabaseAvailabilityZones()).map(value => value.asScala.map { item => 
        AvailabilityZone.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Region): ReadOnly = new Wrapper(impl)
  }
  type RegionList = List[Region]
  sealed trait RegionName { def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName }
  object RegionName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.RegionName): RegionName = value match {
      case software.amazon.awssdk.services.lightsail.model.RegionName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.RegionName.US_EAST_1 => `us-east-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.US_EAST_2 => `us-east-2`
      case software.amazon.awssdk.services.lightsail.model.RegionName.US_WEST_1 => `us-west-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.US_WEST_2 => `us-west-2`
      case software.amazon.awssdk.services.lightsail.model.RegionName.EU_WEST_1 => `eu-west-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.EU_WEST_2 => `eu-west-2`
      case software.amazon.awssdk.services.lightsail.model.RegionName.EU_WEST_3 => `eu-west-3`
      case software.amazon.awssdk.services.lightsail.model.RegionName.EU_CENTRAL_1 => `eu-central-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.CA_CENTRAL_1 => `ca-central-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.AP_SOUTH_1 => `ap-south-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.AP_SOUTHEAST_1 => `ap-southeast-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.AP_SOUTHEAST_2 => `ap-southeast-2`
      case software.amazon.awssdk.services.lightsail.model.RegionName.AP_NORTHEAST_1 => `ap-northeast-1`
      case software.amazon.awssdk.services.lightsail.model.RegionName.AP_NORTHEAST_2 => `ap-northeast-2`
    }
    final case object unknownToSdkVersion extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.UNKNOWN_TO_SDK_VERSION }
    final case object `us-east-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.US_EAST_1 }
    final case object `us-east-2` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.US_EAST_2 }
    final case object `us-west-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.US_WEST_1 }
    final case object `us-west-2` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.US_WEST_2 }
    final case object `eu-west-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.EU_WEST_1 }
    final case object `eu-west-2` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.EU_WEST_2 }
    final case object `eu-west-3` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.EU_WEST_3 }
    final case object `eu-central-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.EU_CENTRAL_1 }
    final case object `ca-central-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.CA_CENTRAL_1 }
    final case object `ap-south-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.AP_SOUTH_1 }
    final case object `ap-southeast-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.AP_SOUTHEAST_1 }
    final case object `ap-southeast-2` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.AP_SOUTHEAST_2 }
    final case object `ap-northeast-1` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.AP_NORTHEAST_1 }
    final case object `ap-northeast-2` extends RegionName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RegionName = software.amazon.awssdk.services.lightsail.model.RegionName.AP_NORTHEAST_2 }
  }
  case class RegisterContainerImageRequest(serviceName: primitives.ContainerServiceName, label: primitives.ContainerLabel, digest: String) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RegisterContainerImageRequest = {
      import RegisterContainerImageRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RegisterContainerImageRequest.builder().serviceName(serviceName: java.lang.String).label(label: java.lang.String).digest(digest: java.lang.String).build()
    }
    def asReadOnly: RegisterContainerImageRequest.ReadOnly = RegisterContainerImageRequest.wrap(buildAwsValue())
  }
  object RegisterContainerImageRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RegisterContainerImageRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RegisterContainerImageRequest = RegisterContainerImageRequest(serviceNameValue, labelValue, digestValue)
      def serviceNameValue: primitives.ContainerServiceName
      def labelValue: primitives.ContainerLabel
      def digestValue: String
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
      def label: ZIO[Any, Nothing, primitives.ContainerLabel] = ZIO.succeed(labelValue)
      def digest: ZIO[Any, Nothing, String] = ZIO.succeed(digestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RegisterContainerImageRequest) extends RegisterContainerImageRequest.ReadOnly {
      override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName
      override def labelValue: primitives.ContainerLabel = impl.label(): primitives.ContainerLabel
      override def digestValue: String = impl.digest(): String
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RegisterContainerImageRequest): ReadOnly = new Wrapper(impl)
  }
  case class RegisterContainerImageResponse(containerImage: scala.Option[ContainerImage] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RegisterContainerImageResponse = {
      import RegisterContainerImageResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RegisterContainerImageResponse.builder().optionallyWith(containerImage.map(value => value.buildAwsValue()))(_.containerImage).build()
    }
    def asReadOnly: RegisterContainerImageResponse.ReadOnly = RegisterContainerImageResponse.wrap(buildAwsValue())
  }
  object RegisterContainerImageResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RegisterContainerImageResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RegisterContainerImageResponse = RegisterContainerImageResponse(containerImageValue.map(value => value.editable))
      def containerImageValue: scala.Option[ContainerImage.ReadOnly]
      def containerImage: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerImage.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerImage", containerImageValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RegisterContainerImageResponse) extends RegisterContainerImageResponse.ReadOnly { override def containerImageValue: scala.Option[ContainerImage.ReadOnly] = scala.Option(impl.containerImage()).map(value => ContainerImage.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RegisterContainerImageResponse): ReadOnly = new Wrapper(impl)
  }
  case class RelationalDatabase(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, relationalDatabaseBlueprintId: scala.Option[primitives.NonEmptyString] = None, relationalDatabaseBundleId: scala.Option[primitives.NonEmptyString] = None, masterDatabaseName: scala.Option[String] = None, hardware: scala.Option[RelationalDatabaseHardware] = None, state: scala.Option[primitives.NonEmptyString] = None, secondaryAvailabilityZone: scala.Option[String] = None, backupRetentionEnabled: scala.Option[Boolean] = None, pendingModifiedValues: scala.Option[PendingModifiedRelationalDatabaseValues] = None, engine: scala.Option[primitives.NonEmptyString] = None, engineVersion: scala.Option[primitives.NonEmptyString] = None, latestRestorableTime: scala.Option[primitives.IsoDate] = None, masterUsername: scala.Option[primitives.NonEmptyString] = None, parameterApplyStatus: scala.Option[primitives.NonEmptyString] = None, preferredBackupWindow: scala.Option[primitives.NonEmptyString] = None, preferredMaintenanceWindow: scala.Option[primitives.NonEmptyString] = None, publiclyAccessible: scala.Option[Boolean] = None, masterEndpoint: scala.Option[RelationalDatabaseEndpoint] = None, pendingMaintenanceActions: scala.Option[Iterable[PendingMaintenanceAction]] = None, caCertificateIdentifier: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabase = {
      import RelationalDatabase.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabase.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(relationalDatabaseBlueprintId.map(value => value: java.lang.String))(_.relationalDatabaseBlueprintId).optionallyWith(relationalDatabaseBundleId.map(value => value: java.lang.String))(_.relationalDatabaseBundleId).optionallyWith(masterDatabaseName.map(value => value: java.lang.String))(_.masterDatabaseName).optionallyWith(hardware.map(value => value.buildAwsValue()))(_.hardware).optionallyWith(state.map(value => value: java.lang.String))(_.state).optionallyWith(secondaryAvailabilityZone.map(value => value: java.lang.String))(_.secondaryAvailabilityZone).optionallyWith(backupRetentionEnabled.map(value => value: java.lang.Boolean))(_.backupRetentionEnabled).optionallyWith(pendingModifiedValues.map(value => value.buildAwsValue()))(_.pendingModifiedValues).optionallyWith(engine.map(value => value: java.lang.String))(_.engine).optionallyWith(engineVersion.map(value => value: java.lang.String))(_.engineVersion).optionallyWith(latestRestorableTime.map(value => value: java.time.Instant))(_.latestRestorableTime).optionallyWith(masterUsername.map(value => value: java.lang.String))(_.masterUsername).optionallyWith(parameterApplyStatus.map(value => value: java.lang.String))(_.parameterApplyStatus).optionallyWith(preferredBackupWindow.map(value => value: java.lang.String))(_.preferredBackupWindow).optionallyWith(preferredMaintenanceWindow.map(value => value: java.lang.String))(_.preferredMaintenanceWindow).optionallyWith(publiclyAccessible.map(value => value: java.lang.Boolean))(_.publiclyAccessible).optionallyWith(masterEndpoint.map(value => value.buildAwsValue()))(_.masterEndpoint).optionallyWith(pendingMaintenanceActions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.pendingMaintenanceActions).optionallyWith(caCertificateIdentifier.map(value => value: java.lang.String))(_.caCertificateIdentifier).build()
    }
    def asReadOnly: RelationalDatabase.ReadOnly = RelationalDatabase.wrap(buildAwsValue())
  }
  object RelationalDatabase {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabase] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabase = RelationalDatabase(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), relationalDatabaseBlueprintIdValue.map(value => value), relationalDatabaseBundleIdValue.map(value => value), masterDatabaseNameValue.map(value => value), hardwareValue.map(value => value.editable), stateValue.map(value => value), secondaryAvailabilityZoneValue.map(value => value), backupRetentionEnabledValue.map(value => value), pendingModifiedValuesValue.map(value => value.editable), engineValue.map(value => value), engineVersionValue.map(value => value), latestRestorableTimeValue.map(value => value), masterUsernameValue.map(value => value), parameterApplyStatusValue.map(value => value), preferredBackupWindowValue.map(value => value), preferredMaintenanceWindowValue.map(value => value), publiclyAccessibleValue.map(value => value), masterEndpointValue.map(value => value.editable), pendingMaintenanceActionsValue.map(value => value.map { item => 
        item.editable
      }), caCertificateIdentifierValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def relationalDatabaseBlueprintIdValue: scala.Option[primitives.NonEmptyString]
      def relationalDatabaseBundleIdValue: scala.Option[primitives.NonEmptyString]
      def masterDatabaseNameValue: scala.Option[String]
      def hardwareValue: scala.Option[RelationalDatabaseHardware.ReadOnly]
      def stateValue: scala.Option[primitives.NonEmptyString]
      def secondaryAvailabilityZoneValue: scala.Option[String]
      def backupRetentionEnabledValue: scala.Option[Boolean]
      def pendingModifiedValuesValue: scala.Option[PendingModifiedRelationalDatabaseValues.ReadOnly]
      def engineValue: scala.Option[primitives.NonEmptyString]
      def engineVersionValue: scala.Option[primitives.NonEmptyString]
      def latestRestorableTimeValue: scala.Option[primitives.IsoDate]
      def masterUsernameValue: scala.Option[primitives.NonEmptyString]
      def parameterApplyStatusValue: scala.Option[primitives.NonEmptyString]
      def preferredBackupWindowValue: scala.Option[primitives.NonEmptyString]
      def preferredMaintenanceWindowValue: scala.Option[primitives.NonEmptyString]
      def publiclyAccessibleValue: scala.Option[Boolean]
      def masterEndpointValue: scala.Option[RelationalDatabaseEndpoint.ReadOnly]
      def pendingMaintenanceActionsValue: scala.Option[List[PendingMaintenanceAction.ReadOnly]]
      def caCertificateIdentifierValue: scala.Option[String]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def relationalDatabaseBlueprintId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseBlueprintId", relationalDatabaseBlueprintIdValue)
      def relationalDatabaseBundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseBundleId", relationalDatabaseBundleIdValue)
      def masterDatabaseName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("masterDatabaseName", masterDatabaseNameValue)
      def hardware: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RelationalDatabaseHardware.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("hardware", hardwareValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def secondaryAvailabilityZone: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("secondaryAvailabilityZone", secondaryAvailabilityZoneValue)
      def backupRetentionEnabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("backupRetentionEnabled", backupRetentionEnabledValue)
      def pendingModifiedValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PendingModifiedRelationalDatabaseValues.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pendingModifiedValues", pendingModifiedValuesValue)
      def engine: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engine", engineValue)
      def engineVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engineVersion", engineVersionValue)
      def latestRestorableTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestRestorableTime", latestRestorableTimeValue)
      def masterUsername: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("masterUsername", masterUsernameValue)
      def parameterApplyStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parameterApplyStatus", parameterApplyStatusValue)
      def preferredBackupWindow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("preferredBackupWindow", preferredBackupWindowValue)
      def preferredMaintenanceWindow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("preferredMaintenanceWindow", preferredMaintenanceWindowValue)
      def publiclyAccessible: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publiclyAccessible", publiclyAccessibleValue)
      def masterEndpoint: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RelationalDatabaseEndpoint.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("masterEndpoint", masterEndpointValue)
      def pendingMaintenanceActions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[PendingMaintenanceAction.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("pendingMaintenanceActions", pendingMaintenanceActionsValue)
      def caCertificateIdentifier: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("caCertificateIdentifier", caCertificateIdentifierValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabase) extends RelationalDatabase.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def relationalDatabaseBlueprintIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.relationalDatabaseBlueprintId()).map(value => value: primitives.NonEmptyString)
      override def relationalDatabaseBundleIdValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.relationalDatabaseBundleId()).map(value => value: primitives.NonEmptyString)
      override def masterDatabaseNameValue: scala.Option[String] = scala.Option(impl.masterDatabaseName()).map(value => value: String)
      override def hardwareValue: scala.Option[RelationalDatabaseHardware.ReadOnly] = scala.Option(impl.hardware()).map(value => RelationalDatabaseHardware.wrap(value))
      override def stateValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.state()).map(value => value: primitives.NonEmptyString)
      override def secondaryAvailabilityZoneValue: scala.Option[String] = scala.Option(impl.secondaryAvailabilityZone()).map(value => value: String)
      override def backupRetentionEnabledValue: scala.Option[Boolean] = scala.Option(impl.backupRetentionEnabled()).map(value => value: Boolean)
      override def pendingModifiedValuesValue: scala.Option[PendingModifiedRelationalDatabaseValues.ReadOnly] = scala.Option(impl.pendingModifiedValues()).map(value => PendingModifiedRelationalDatabaseValues.wrap(value))
      override def engineValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.engine()).map(value => value: primitives.NonEmptyString)
      override def engineVersionValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.engineVersion()).map(value => value: primitives.NonEmptyString)
      override def latestRestorableTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.latestRestorableTime()).map(value => value: primitives.IsoDate)
      override def masterUsernameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.masterUsername()).map(value => value: primitives.NonEmptyString)
      override def parameterApplyStatusValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.parameterApplyStatus()).map(value => value: primitives.NonEmptyString)
      override def preferredBackupWindowValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.preferredBackupWindow()).map(value => value: primitives.NonEmptyString)
      override def preferredMaintenanceWindowValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.preferredMaintenanceWindow()).map(value => value: primitives.NonEmptyString)
      override def publiclyAccessibleValue: scala.Option[Boolean] = scala.Option(impl.publiclyAccessible()).map(value => value: Boolean)
      override def masterEndpointValue: scala.Option[RelationalDatabaseEndpoint.ReadOnly] = scala.Option(impl.masterEndpoint()).map(value => RelationalDatabaseEndpoint.wrap(value))
      override def pendingMaintenanceActionsValue: scala.Option[List[PendingMaintenanceAction.ReadOnly]] = scala.Option(impl.pendingMaintenanceActions()).map(value => value.asScala.map { item => 
        PendingMaintenanceAction.wrap(item)
      }.toList)
      override def caCertificateIdentifierValue: scala.Option[String] = scala.Option(impl.caCertificateIdentifier()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabase): ReadOnly = new Wrapper(impl)
  }
  case class RelationalDatabaseBlueprint(blueprintId: scala.Option[String] = None, engine: scala.Option[RelationalDatabaseEngine] = None, engineVersion: scala.Option[String] = None, engineDescription: scala.Option[String] = None, engineVersionDescription: scala.Option[String] = None, isEngineDefault: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBlueprint = {
      import RelationalDatabaseBlueprint.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBlueprint.builder().optionallyWith(blueprintId.map(value => value: java.lang.String))(_.blueprintId).optionallyWith(engine.map(value => value.unwrap))(_.engine).optionallyWith(engineVersion.map(value => value: java.lang.String))(_.engineVersion).optionallyWith(engineDescription.map(value => value: java.lang.String))(_.engineDescription).optionallyWith(engineVersionDescription.map(value => value: java.lang.String))(_.engineVersionDescription).optionallyWith(isEngineDefault.map(value => value: java.lang.Boolean))(_.isEngineDefault).build()
    }
    def asReadOnly: RelationalDatabaseBlueprint.ReadOnly = RelationalDatabaseBlueprint.wrap(buildAwsValue())
  }
  object RelationalDatabaseBlueprint {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBlueprint] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabaseBlueprint = RelationalDatabaseBlueprint(blueprintIdValue.map(value => value), engineValue.map(value => value), engineVersionValue.map(value => value), engineDescriptionValue.map(value => value), engineVersionDescriptionValue.map(value => value), isEngineDefaultValue.map(value => value))
      def blueprintIdValue: scala.Option[String]
      def engineValue: scala.Option[RelationalDatabaseEngine]
      def engineVersionValue: scala.Option[String]
      def engineDescriptionValue: scala.Option[String]
      def engineVersionDescriptionValue: scala.Option[String]
      def isEngineDefaultValue: scala.Option[Boolean]
      def blueprintId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("blueprintId", blueprintIdValue)
      def engine: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RelationalDatabaseEngine] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engine", engineValue)
      def engineVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engineVersion", engineVersionValue)
      def engineDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engineDescription", engineDescriptionValue)
      def engineVersionDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engineVersionDescription", engineVersionDescriptionValue)
      def isEngineDefault: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isEngineDefault", isEngineDefaultValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBlueprint) extends RelationalDatabaseBlueprint.ReadOnly {
      override def blueprintIdValue: scala.Option[String] = scala.Option(impl.blueprintId()).map(value => value: String)
      override def engineValue: scala.Option[RelationalDatabaseEngine] = scala.Option(impl.engine()).map(value => RelationalDatabaseEngine.wrap(value))
      override def engineVersionValue: scala.Option[String] = scala.Option(impl.engineVersion()).map(value => value: String)
      override def engineDescriptionValue: scala.Option[String] = scala.Option(impl.engineDescription()).map(value => value: String)
      override def engineVersionDescriptionValue: scala.Option[String] = scala.Option(impl.engineVersionDescription()).map(value => value: String)
      override def isEngineDefaultValue: scala.Option[Boolean] = scala.Option(impl.isEngineDefault()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBlueprint): ReadOnly = new Wrapper(impl)
  }
  type RelationalDatabaseBlueprintList = List[RelationalDatabaseBlueprint]
  case class RelationalDatabaseBundle(bundleId: scala.Option[String] = None, name: scala.Option[String] = None, price: scala.Option[Float] = None, ramSizeInGb: scala.Option[Float] = None, diskSizeInGb: scala.Option[primitives.Integer] = None, transferPerMonthInGb: scala.Option[primitives.Integer] = None, cpuCount: scala.Option[primitives.Integer] = None, isEncrypted: scala.Option[Boolean] = None, isActive: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBundle = {
      import RelationalDatabaseBundle.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBundle.builder().optionallyWith(bundleId.map(value => value: java.lang.String))(_.bundleId).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(price.map(value => value: java.lang.Float))(_.price).optionallyWith(ramSizeInGb.map(value => value: java.lang.Float))(_.ramSizeInGb).optionallyWith(diskSizeInGb.map(value => value: java.lang.Integer))(_.diskSizeInGb).optionallyWith(transferPerMonthInGb.map(value => value: java.lang.Integer))(_.transferPerMonthInGb).optionallyWith(cpuCount.map(value => value: java.lang.Integer))(_.cpuCount).optionallyWith(isEncrypted.map(value => value: java.lang.Boolean))(_.isEncrypted).optionallyWith(isActive.map(value => value: java.lang.Boolean))(_.isActive).build()
    }
    def asReadOnly: RelationalDatabaseBundle.ReadOnly = RelationalDatabaseBundle.wrap(buildAwsValue())
  }
  object RelationalDatabaseBundle {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBundle] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabaseBundle = RelationalDatabaseBundle(bundleIdValue.map(value => value), nameValue.map(value => value), priceValue.map(value => value), ramSizeInGbValue.map(value => value), diskSizeInGbValue.map(value => value), transferPerMonthInGbValue.map(value => value), cpuCountValue.map(value => value), isEncryptedValue.map(value => value), isActiveValue.map(value => value))
      def bundleIdValue: scala.Option[String]
      def nameValue: scala.Option[String]
      def priceValue: scala.Option[Float]
      def ramSizeInGbValue: scala.Option[Float]
      def diskSizeInGbValue: scala.Option[primitives.Integer]
      def transferPerMonthInGbValue: scala.Option[primitives.Integer]
      def cpuCountValue: scala.Option[primitives.Integer]
      def isEncryptedValue: scala.Option[Boolean]
      def isActiveValue: scala.Option[Boolean]
      def bundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundleId", bundleIdValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def price: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("price", priceValue)
      def ramSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ramSizeInGb", ramSizeInGbValue)
      def diskSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskSizeInGb", diskSizeInGbValue)
      def transferPerMonthInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("transferPerMonthInGb", transferPerMonthInGbValue)
      def cpuCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cpuCount", cpuCountValue)
      def isEncrypted: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isEncrypted", isEncryptedValue)
      def isActive: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isActive", isActiveValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBundle) extends RelationalDatabaseBundle.ReadOnly {
      override def bundleIdValue: scala.Option[String] = scala.Option(impl.bundleId()).map(value => value: String)
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
      override def priceValue: scala.Option[Float] = scala.Option(impl.price()).map(value => value: Float)
      override def ramSizeInGbValue: scala.Option[Float] = scala.Option(impl.ramSizeInGb()).map(value => value: Float)
      override def diskSizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.diskSizeInGb()).map(value => value: primitives.Integer)
      override def transferPerMonthInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.transferPerMonthInGb()).map(value => value: primitives.Integer)
      override def cpuCountValue: scala.Option[primitives.Integer] = scala.Option(impl.cpuCount()).map(value => value: primitives.Integer)
      override def isEncryptedValue: scala.Option[Boolean] = scala.Option(impl.isEncrypted()).map(value => value: Boolean)
      override def isActiveValue: scala.Option[Boolean] = scala.Option(impl.isActive()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseBundle): ReadOnly = new Wrapper(impl)
  }
  type RelationalDatabaseBundleList = List[RelationalDatabaseBundle]
  case class RelationalDatabaseEndpoint(port: scala.Option[primitives.Integer] = None, address: scala.Option[primitives.NonEmptyString] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEndpoint = {
      import RelationalDatabaseEndpoint.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEndpoint.builder().optionallyWith(port.map(value => value: java.lang.Integer))(_.port).optionallyWith(address.map(value => value: java.lang.String))(_.address).build()
    }
    def asReadOnly: RelationalDatabaseEndpoint.ReadOnly = RelationalDatabaseEndpoint.wrap(buildAwsValue())
  }
  object RelationalDatabaseEndpoint {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEndpoint] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabaseEndpoint = RelationalDatabaseEndpoint(portValue.map(value => value), addressValue.map(value => value))
      def portValue: scala.Option[primitives.Integer]
      def addressValue: scala.Option[primitives.NonEmptyString]
      def port: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("port", portValue)
      def address: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("address", addressValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEndpoint) extends RelationalDatabaseEndpoint.ReadOnly {
      override def portValue: scala.Option[primitives.Integer] = scala.Option(impl.port()).map(value => value: primitives.Integer)
      override def addressValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.address()).map(value => value: primitives.NonEmptyString)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEndpoint): ReadOnly = new Wrapper(impl)
  }
  sealed trait RelationalDatabaseEngine { def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine }
  object RelationalDatabaseEngine {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine): RelationalDatabaseEngine = value match {
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine.MYSQL => mysql
    }
    final case object unknownToSdkVersion extends RelationalDatabaseEngine { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine.UNKNOWN_TO_SDK_VERSION }
    final case object mysql extends RelationalDatabaseEngine { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEngine.MYSQL }
  }
  case class RelationalDatabaseEvent(resource: scala.Option[primitives.ResourceName] = None, createdAt: scala.Option[primitives.IsoDate] = None, message: scala.Option[String] = None, eventCategories: scala.Option[Iterable[String]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEvent = {
      import RelationalDatabaseEvent.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEvent.builder().optionallyWith(resource.map(value => value: java.lang.String))(_.resource).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(message.map(value => value: java.lang.String))(_.message).optionallyWith(eventCategories.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.eventCategories).build()
    }
    def asReadOnly: RelationalDatabaseEvent.ReadOnly = RelationalDatabaseEvent.wrap(buildAwsValue())
  }
  object RelationalDatabaseEvent {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEvent] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabaseEvent = RelationalDatabaseEvent(resourceValue.map(value => value), createdAtValue.map(value => value), messageValue.map(value => value), eventCategoriesValue.map(value => value))
      def resourceValue: scala.Option[primitives.ResourceName]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def messageValue: scala.Option[String]
      def eventCategoriesValue: scala.Option[List[String]]
      def resource: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resource", resourceValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def message: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("message", messageValue)
      def eventCategories: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[String]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventCategories", eventCategoriesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEvent) extends RelationalDatabaseEvent.ReadOnly {
      override def resourceValue: scala.Option[primitives.ResourceName] = scala.Option(impl.resource()).map(value => value: primitives.ResourceName)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def messageValue: scala.Option[String] = scala.Option(impl.message()).map(value => value: String)
      override def eventCategoriesValue: scala.Option[List[String]] = scala.Option(impl.eventCategories()).map(value => value.asScala.map { item => 
        item: String
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseEvent): ReadOnly = new Wrapper(impl)
  }
  type RelationalDatabaseEventList = List[RelationalDatabaseEvent]
  case class RelationalDatabaseHardware(cpuCount: scala.Option[primitives.Integer] = None, diskSizeInGb: scala.Option[primitives.Integer] = None, ramSizeInGb: scala.Option[Float] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabaseHardware = {
      import RelationalDatabaseHardware.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabaseHardware.builder().optionallyWith(cpuCount.map(value => value: java.lang.Integer))(_.cpuCount).optionallyWith(diskSizeInGb.map(value => value: java.lang.Integer))(_.diskSizeInGb).optionallyWith(ramSizeInGb.map(value => value: java.lang.Float))(_.ramSizeInGb).build()
    }
    def asReadOnly: RelationalDatabaseHardware.ReadOnly = RelationalDatabaseHardware.wrap(buildAwsValue())
  }
  object RelationalDatabaseHardware {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabaseHardware] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabaseHardware = RelationalDatabaseHardware(cpuCountValue.map(value => value), diskSizeInGbValue.map(value => value), ramSizeInGbValue.map(value => value))
      def cpuCountValue: scala.Option[primitives.Integer]
      def diskSizeInGbValue: scala.Option[primitives.Integer]
      def ramSizeInGbValue: scala.Option[Float]
      def cpuCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cpuCount", cpuCountValue)
      def diskSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("diskSizeInGb", diskSizeInGbValue)
      def ramSizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Float] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ramSizeInGb", ramSizeInGbValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseHardware) extends RelationalDatabaseHardware.ReadOnly {
      override def cpuCountValue: scala.Option[primitives.Integer] = scala.Option(impl.cpuCount()).map(value => value: primitives.Integer)
      override def diskSizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.diskSizeInGb()).map(value => value: primitives.Integer)
      override def ramSizeInGbValue: scala.Option[Float] = scala.Option(impl.ramSizeInGb()).map(value => value: Float)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseHardware): ReadOnly = new Wrapper(impl)
  }
  type RelationalDatabaseList = List[RelationalDatabase]
  sealed trait RelationalDatabaseMetricName { def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName }
  object RelationalDatabaseMetricName {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName): RelationalDatabaseMetricName = value match {
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.CPU_UTILIZATION => CPUUtilization
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.DATABASE_CONNECTIONS => DatabaseConnections
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.DISK_QUEUE_DEPTH => DiskQueueDepth
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.FREE_STORAGE_SPACE => FreeStorageSpace
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.NETWORK_RECEIVE_THROUGHPUT => NetworkReceiveThroughput
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.NETWORK_TRANSMIT_THROUGHPUT => NetworkTransmitThroughput
    }
    final case object unknownToSdkVersion extends RelationalDatabaseMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.UNKNOWN_TO_SDK_VERSION }
    final case object CPUUtilization extends RelationalDatabaseMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.CPU_UTILIZATION }
    final case object DatabaseConnections extends RelationalDatabaseMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.DATABASE_CONNECTIONS }
    final case object DiskQueueDepth extends RelationalDatabaseMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.DISK_QUEUE_DEPTH }
    final case object FreeStorageSpace extends RelationalDatabaseMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.FREE_STORAGE_SPACE }
    final case object NetworkReceiveThroughput extends RelationalDatabaseMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.NETWORK_RECEIVE_THROUGHPUT }
    final case object NetworkTransmitThroughput extends RelationalDatabaseMetricName { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName = software.amazon.awssdk.services.lightsail.model.RelationalDatabaseMetricName.NETWORK_TRANSMIT_THROUGHPUT }
  }
  case class RelationalDatabaseParameter(allowedValues: scala.Option[String] = None, applyMethod: scala.Option[String] = None, applyType: scala.Option[String] = None, dataType: scala.Option[String] = None, description: scala.Option[String] = None, isModifiable: scala.Option[Boolean] = None, parameterName: scala.Option[String] = None, parameterValue: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabaseParameter = {
      import RelationalDatabaseParameter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabaseParameter.builder().optionallyWith(allowedValues.map(value => value: java.lang.String))(_.allowedValues).optionallyWith(applyMethod.map(value => value: java.lang.String))(_.applyMethod).optionallyWith(applyType.map(value => value: java.lang.String))(_.applyType).optionallyWith(dataType.map(value => value: java.lang.String))(_.dataType).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(isModifiable.map(value => value: java.lang.Boolean))(_.isModifiable).optionallyWith(parameterName.map(value => value: java.lang.String))(_.parameterName).optionallyWith(parameterValue.map(value => value: java.lang.String))(_.parameterValue).build()
    }
    def asReadOnly: RelationalDatabaseParameter.ReadOnly = RelationalDatabaseParameter.wrap(buildAwsValue())
  }
  object RelationalDatabaseParameter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabaseParameter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabaseParameter = RelationalDatabaseParameter(allowedValuesValue.map(value => value), applyMethodValue.map(value => value), applyTypeValue.map(value => value), dataTypeValue.map(value => value), descriptionValue.map(value => value), isModifiableValue.map(value => value), parameterNameValue.map(value => value), parameterValueValue.map(value => value))
      def allowedValuesValue: scala.Option[String]
      def applyMethodValue: scala.Option[String]
      def applyTypeValue: scala.Option[String]
      def dataTypeValue: scala.Option[String]
      def descriptionValue: scala.Option[String]
      def isModifiableValue: scala.Option[Boolean]
      def parameterNameValue: scala.Option[String]
      def parameterValueValue: scala.Option[String]
      def allowedValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("allowedValues", allowedValuesValue)
      def applyMethod: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("applyMethod", applyMethodValue)
      def applyType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("applyType", applyTypeValue)
      def dataType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dataType", dataTypeValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def isModifiable: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isModifiable", isModifiableValue)
      def parameterName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parameterName", parameterNameValue)
      def parameterValue: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parameterValue", parameterValueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseParameter) extends RelationalDatabaseParameter.ReadOnly {
      override def allowedValuesValue: scala.Option[String] = scala.Option(impl.allowedValues()).map(value => value: String)
      override def applyMethodValue: scala.Option[String] = scala.Option(impl.applyMethod()).map(value => value: String)
      override def applyTypeValue: scala.Option[String] = scala.Option(impl.applyType()).map(value => value: String)
      override def dataTypeValue: scala.Option[String] = scala.Option(impl.dataType()).map(value => value: String)
      override def descriptionValue: scala.Option[String] = scala.Option(impl.description()).map(value => value: String)
      override def isModifiableValue: scala.Option[Boolean] = scala.Option(impl.isModifiable()).map(value => value: Boolean)
      override def parameterNameValue: scala.Option[String] = scala.Option(impl.parameterName()).map(value => value: String)
      override def parameterValueValue: scala.Option[String] = scala.Option(impl.parameterValue()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseParameter): ReadOnly = new Wrapper(impl)
  }
  type RelationalDatabaseParameterList = List[RelationalDatabaseParameter]
  sealed trait RelationalDatabasePasswordVersion { def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion }
  object RelationalDatabasePasswordVersion {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion): RelationalDatabasePasswordVersion = value match {
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.CURRENT => CURRENT
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.PREVIOUS => PREVIOUS
      case software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.PENDING => PENDING
    }
    final case object unknownToSdkVersion extends RelationalDatabasePasswordVersion { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion = software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.UNKNOWN_TO_SDK_VERSION }
    final case object CURRENT extends RelationalDatabasePasswordVersion { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion = software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.CURRENT }
    final case object PREVIOUS extends RelationalDatabasePasswordVersion { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion = software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.PREVIOUS }
    final case object PENDING extends RelationalDatabasePasswordVersion { override def unwrap: software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion = software.amazon.awssdk.services.lightsail.model.RelationalDatabasePasswordVersion.PENDING }
  }
  case class RelationalDatabaseSnapshot(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, tags: scala.Option[Iterable[Tag]] = None, engine: scala.Option[primitives.NonEmptyString] = None, engineVersion: scala.Option[primitives.NonEmptyString] = None, sizeInGb: scala.Option[primitives.Integer] = None, state: scala.Option[primitives.NonEmptyString] = None, fromRelationalDatabaseName: scala.Option[primitives.NonEmptyString] = None, fromRelationalDatabaseArn: scala.Option[primitives.NonEmptyString] = None, fromRelationalDatabaseBundleId: scala.Option[String] = None, fromRelationalDatabaseBlueprintId: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RelationalDatabaseSnapshot = {
      import RelationalDatabaseSnapshot.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RelationalDatabaseSnapshot.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).optionallyWith(engine.map(value => value: java.lang.String))(_.engine).optionallyWith(engineVersion.map(value => value: java.lang.String))(_.engineVersion).optionallyWith(sizeInGb.map(value => value: java.lang.Integer))(_.sizeInGb).optionallyWith(state.map(value => value: java.lang.String))(_.state).optionallyWith(fromRelationalDatabaseName.map(value => value: java.lang.String))(_.fromRelationalDatabaseName).optionallyWith(fromRelationalDatabaseArn.map(value => value: java.lang.String))(_.fromRelationalDatabaseArn).optionallyWith(fromRelationalDatabaseBundleId.map(value => value: java.lang.String))(_.fromRelationalDatabaseBundleId).optionallyWith(fromRelationalDatabaseBlueprintId.map(value => value: java.lang.String))(_.fromRelationalDatabaseBlueprintId).build()
    }
    def asReadOnly: RelationalDatabaseSnapshot.ReadOnly = RelationalDatabaseSnapshot.wrap(buildAwsValue())
  }
  object RelationalDatabaseSnapshot {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RelationalDatabaseSnapshot] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RelationalDatabaseSnapshot = RelationalDatabaseSnapshot(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), tagsValue.map(value => value.map { item => 
        item.editable
      }), engineValue.map(value => value), engineVersionValue.map(value => value), sizeInGbValue.map(value => value), stateValue.map(value => value), fromRelationalDatabaseNameValue.map(value => value), fromRelationalDatabaseArnValue.map(value => value), fromRelationalDatabaseBundleIdValue.map(value => value), fromRelationalDatabaseBlueprintIdValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def tagsValue: scala.Option[List[Tag.ReadOnly]]
      def engineValue: scala.Option[primitives.NonEmptyString]
      def engineVersionValue: scala.Option[primitives.NonEmptyString]
      def sizeInGbValue: scala.Option[primitives.Integer]
      def stateValue: scala.Option[primitives.NonEmptyString]
      def fromRelationalDatabaseNameValue: scala.Option[primitives.NonEmptyString]
      def fromRelationalDatabaseArnValue: scala.Option[primitives.NonEmptyString]
      def fromRelationalDatabaseBundleIdValue: scala.Option[String]
      def fromRelationalDatabaseBlueprintIdValue: scala.Option[String]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Tag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def engine: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engine", engineValue)
      def engineVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("engineVersion", engineVersionValue)
      def sizeInGb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Integer] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeInGb", sizeInGbValue)
      def state: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("state", stateValue)
      def fromRelationalDatabaseName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromRelationalDatabaseName", fromRelationalDatabaseNameValue)
      def fromRelationalDatabaseArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromRelationalDatabaseArn", fromRelationalDatabaseArnValue)
      def fromRelationalDatabaseBundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromRelationalDatabaseBundleId", fromRelationalDatabaseBundleIdValue)
      def fromRelationalDatabaseBlueprintId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fromRelationalDatabaseBlueprintId", fromRelationalDatabaseBlueprintIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseSnapshot) extends RelationalDatabaseSnapshot.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def tagsValue: scala.Option[List[Tag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        Tag.wrap(item)
      }.toList)
      override def engineValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.engine()).map(value => value: primitives.NonEmptyString)
      override def engineVersionValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.engineVersion()).map(value => value: primitives.NonEmptyString)
      override def sizeInGbValue: scala.Option[primitives.Integer] = scala.Option(impl.sizeInGb()).map(value => value: primitives.Integer)
      override def stateValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.state()).map(value => value: primitives.NonEmptyString)
      override def fromRelationalDatabaseNameValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromRelationalDatabaseName()).map(value => value: primitives.NonEmptyString)
      override def fromRelationalDatabaseArnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.fromRelationalDatabaseArn()).map(value => value: primitives.NonEmptyString)
      override def fromRelationalDatabaseBundleIdValue: scala.Option[String] = scala.Option(impl.fromRelationalDatabaseBundleId()).map(value => value: String)
      override def fromRelationalDatabaseBlueprintIdValue: scala.Option[String] = scala.Option(impl.fromRelationalDatabaseBlueprintId()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RelationalDatabaseSnapshot): ReadOnly = new Wrapper(impl)
  }
  type RelationalDatabaseSnapshotList = List[RelationalDatabaseSnapshot]
  case class ReleaseStaticIpRequest(staticIpName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpRequest = {
      import ReleaseStaticIpRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpRequest.builder().staticIpName(staticIpName: java.lang.String).build()
    }
    def asReadOnly: ReleaseStaticIpRequest.ReadOnly = ReleaseStaticIpRequest.wrap(buildAwsValue())
  }
  object ReleaseStaticIpRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReleaseStaticIpRequest = ReleaseStaticIpRequest(staticIpNameValue)
      def staticIpNameValue: primitives.ResourceName
      def staticIpName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(staticIpNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpRequest) extends ReleaseStaticIpRequest.ReadOnly { override def staticIpNameValue: primitives.ResourceName = impl.staticIpName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpRequest): ReadOnly = new Wrapper(impl)
  }
  case class ReleaseStaticIpResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpResponse = {
      import ReleaseStaticIpResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: ReleaseStaticIpResponse.ReadOnly = ReleaseStaticIpResponse.wrap(buildAwsValue())
  }
  object ReleaseStaticIpResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ReleaseStaticIpResponse = ReleaseStaticIpResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpResponse) extends ReleaseStaticIpResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ReleaseStaticIpResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait RenewalStatus { def unwrap: software.amazon.awssdk.services.lightsail.model.RenewalStatus }
  object RenewalStatus {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.RenewalStatus): RenewalStatus = value match {
      case software.amazon.awssdk.services.lightsail.model.RenewalStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.RenewalStatus.PENDING_AUTO_RENEWAL => PendingAutoRenewal
      case software.amazon.awssdk.services.lightsail.model.RenewalStatus.PENDING_VALIDATION => PendingValidation
      case software.amazon.awssdk.services.lightsail.model.RenewalStatus.SUCCESS => Success
      case software.amazon.awssdk.services.lightsail.model.RenewalStatus.FAILED => Failed
    }
    final case object unknownToSdkVersion extends RenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.RenewalStatus = software.amazon.awssdk.services.lightsail.model.RenewalStatus.UNKNOWN_TO_SDK_VERSION }
    final case object PendingAutoRenewal extends RenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.RenewalStatus = software.amazon.awssdk.services.lightsail.model.RenewalStatus.PENDING_AUTO_RENEWAL }
    final case object PendingValidation extends RenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.RenewalStatus = software.amazon.awssdk.services.lightsail.model.RenewalStatus.PENDING_VALIDATION }
    final case object Success extends RenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.RenewalStatus = software.amazon.awssdk.services.lightsail.model.RenewalStatus.SUCCESS }
    final case object Failed extends RenewalStatus { override def unwrap: software.amazon.awssdk.services.lightsail.model.RenewalStatus = software.amazon.awssdk.services.lightsail.model.RenewalStatus.FAILED }
  }
  case class RenewalSummary(domainValidationRecords: scala.Option[Iterable[DomainValidationRecord]] = None, renewalStatus: scala.Option[RenewalStatus] = None, renewalStatusReason: scala.Option[primitives.RenewalStatusReason] = None, updatedAt: scala.Option[primitives.IsoDate] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.RenewalSummary = {
      import RenewalSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.RenewalSummary.builder().optionallyWith(domainValidationRecords.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.domainValidationRecords).optionallyWith(renewalStatus.map(value => value.unwrap))(_.renewalStatus).optionallyWith(renewalStatusReason.map(value => value: java.lang.String))(_.renewalStatusReason).optionallyWith(updatedAt.map(value => value: java.time.Instant))(_.updatedAt).build()
    }
    def asReadOnly: RenewalSummary.ReadOnly = RenewalSummary.wrap(buildAwsValue())
  }
  object RenewalSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.RenewalSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RenewalSummary = RenewalSummary(domainValidationRecordsValue.map(value => value.map { item => 
        item.editable
      }), renewalStatusValue.map(value => value), renewalStatusReasonValue.map(value => value), updatedAtValue.map(value => value))
      def domainValidationRecordsValue: scala.Option[List[DomainValidationRecord.ReadOnly]]
      def renewalStatusValue: scala.Option[RenewalStatus]
      def renewalStatusReasonValue: scala.Option[primitives.RenewalStatusReason]
      def updatedAtValue: scala.Option[primitives.IsoDate]
      def domainValidationRecords: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[DomainValidationRecord.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("domainValidationRecords", domainValidationRecordsValue)
      def renewalStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RenewalStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("renewalStatus", renewalStatusValue)
      def renewalStatusReason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RenewalStatusReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("renewalStatusReason", renewalStatusReasonValue)
      def updatedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("updatedAt", updatedAtValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.RenewalSummary) extends RenewalSummary.ReadOnly {
      override def domainValidationRecordsValue: scala.Option[List[DomainValidationRecord.ReadOnly]] = scala.Option(impl.domainValidationRecords()).map(value => value.asScala.map { item => 
        DomainValidationRecord.wrap(item)
      }.toList)
      override def renewalStatusValue: scala.Option[RenewalStatus] = scala.Option(impl.renewalStatus()).map(value => RenewalStatus.wrap(value))
      override def renewalStatusReasonValue: scala.Option[primitives.RenewalStatusReason] = scala.Option(impl.renewalStatusReason()).map(value => value: primitives.RenewalStatusReason)
      override def updatedAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.updatedAt()).map(value => value: primitives.IsoDate)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.RenewalSummary): ReadOnly = new Wrapper(impl)
  }
  case class ResetDistributionCacheRequest(distributionName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheRequest = {
      import ResetDistributionCacheRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheRequest.builder().optionallyWith(distributionName.map(value => value: java.lang.String))(_.distributionName).build()
    }
    def asReadOnly: ResetDistributionCacheRequest.ReadOnly = ResetDistributionCacheRequest.wrap(buildAwsValue())
  }
  object ResetDistributionCacheRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ResetDistributionCacheRequest = ResetDistributionCacheRequest(distributionNameValue.map(value => value))
      def distributionNameValue: scala.Option[primitives.ResourceName]
      def distributionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("distributionName", distributionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheRequest) extends ResetDistributionCacheRequest.ReadOnly { override def distributionNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.distributionName()).map(value => value: primitives.ResourceName) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheRequest): ReadOnly = new Wrapper(impl)
  }
  case class ResetDistributionCacheResponse(status: scala.Option[String] = None, createTime: scala.Option[primitives.IsoDate] = None, operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheResponse = {
      import ResetDistributionCacheResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheResponse.builder().optionallyWith(status.map(value => value: java.lang.String))(_.status).optionallyWith(createTime.map(value => value: java.time.Instant))(_.createTime).optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: ResetDistributionCacheResponse.ReadOnly = ResetDistributionCacheResponse.wrap(buildAwsValue())
  }
  object ResetDistributionCacheResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ResetDistributionCacheResponse = ResetDistributionCacheResponse(statusValue.map(value => value), createTimeValue.map(value => value), operationValue.map(value => value.editable))
      def statusValue: scala.Option[String]
      def createTimeValue: scala.Option[primitives.IsoDate]
      def operationValue: scala.Option[Operation.ReadOnly]
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def createTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createTime", createTimeValue)
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheResponse) extends ResetDistributionCacheResponse.ReadOnly {
      override def statusValue: scala.Option[String] = scala.Option(impl.status()).map(value => value: String)
      override def createTimeValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createTime()).map(value => value: primitives.IsoDate)
      override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ResetDistributionCacheResponse): ReadOnly = new Wrapper(impl)
  }
  case class ResourceLocation(availabilityZone: scala.Option[String] = None, regionName: scala.Option[RegionName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ResourceLocation = {
      import ResourceLocation.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ResourceLocation.builder().optionallyWith(availabilityZone.map(value => value: java.lang.String))(_.availabilityZone).optionallyWith(regionName.map(value => value.unwrap))(_.regionName).build()
    }
    def asReadOnly: ResourceLocation.ReadOnly = ResourceLocation.wrap(buildAwsValue())
  }
  object ResourceLocation {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ResourceLocation] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ResourceLocation = ResourceLocation(availabilityZoneValue.map(value => value), regionNameValue.map(value => value))
      def availabilityZoneValue: scala.Option[String]
      def regionNameValue: scala.Option[RegionName]
      def availabilityZone: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("availabilityZone", availabilityZoneValue)
      def regionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RegionName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("regionName", regionNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ResourceLocation) extends ResourceLocation.ReadOnly {
      override def availabilityZoneValue: scala.Option[String] = scala.Option(impl.availabilityZone()).map(value => value: String)
      override def regionNameValue: scala.Option[RegionName] = scala.Option(impl.regionName()).map(value => RegionName.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ResourceLocation): ReadOnly = new Wrapper(impl)
  }
  type ResourceNameList = List[primitives.ResourceName]
  case class ResourceRecord(name: scala.Option[String] = None, `type`: scala.Option[String] = None, value: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.ResourceRecord = {
      import ResourceRecord.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.ResourceRecord.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(`type`.map(value => value: java.lang.String))(_.`type`).optionallyWith(value.map(value => value: java.lang.String))(_.value).build()
    }
    def asReadOnly: ResourceRecord.ReadOnly = ResourceRecord.wrap(buildAwsValue())
  }
  object ResourceRecord {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.ResourceRecord] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ResourceRecord = ResourceRecord(nameValue.map(value => value), typeValue.map(value => value), valueValue.map(value => value))
      def nameValue: scala.Option[String]
      def typeValue: scala.Option[String]
      def valueValue: scala.Option[String]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def `type`: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("type", typeValue)
      def value: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("value", valueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.ResourceRecord) extends ResourceRecord.ReadOnly {
      override def nameValue: scala.Option[String] = scala.Option(impl.name()).map(value => value: String)
      override def typeValue: scala.Option[String] = scala.Option(impl.`type`()).map(value => value: String)
      override def valueValue: scala.Option[String] = scala.Option(impl.value()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.ResourceRecord): ReadOnly = new Wrapper(impl)
  }
  sealed trait ResourceType { def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType }
  object ResourceType {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.ResourceType): ResourceType = value match {
      case software.amazon.awssdk.services.lightsail.model.ResourceType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.ResourceType.CONTAINER_SERVICE => ContainerService
      case software.amazon.awssdk.services.lightsail.model.ResourceType.INSTANCE => Instance
      case software.amazon.awssdk.services.lightsail.model.ResourceType.STATIC_IP => StaticIp
      case software.amazon.awssdk.services.lightsail.model.ResourceType.KEY_PAIR => KeyPair
      case software.amazon.awssdk.services.lightsail.model.ResourceType.INSTANCE_SNAPSHOT => InstanceSnapshot
      case software.amazon.awssdk.services.lightsail.model.ResourceType.DOMAIN => Domain
      case software.amazon.awssdk.services.lightsail.model.ResourceType.PEERED_VPC => PeeredVpc
      case software.amazon.awssdk.services.lightsail.model.ResourceType.LOAD_BALANCER => LoadBalancer
      case software.amazon.awssdk.services.lightsail.model.ResourceType.LOAD_BALANCER_TLS_CERTIFICATE => LoadBalancerTlsCertificate
      case software.amazon.awssdk.services.lightsail.model.ResourceType.DISK => Disk
      case software.amazon.awssdk.services.lightsail.model.ResourceType.DISK_SNAPSHOT => DiskSnapshot
      case software.amazon.awssdk.services.lightsail.model.ResourceType.RELATIONAL_DATABASE => RelationalDatabase
      case software.amazon.awssdk.services.lightsail.model.ResourceType.RELATIONAL_DATABASE_SNAPSHOT => RelationalDatabaseSnapshot
      case software.amazon.awssdk.services.lightsail.model.ResourceType.EXPORT_SNAPSHOT_RECORD => ExportSnapshotRecord
      case software.amazon.awssdk.services.lightsail.model.ResourceType.CLOUD_FORMATION_STACK_RECORD => CloudFormationStackRecord
      case software.amazon.awssdk.services.lightsail.model.ResourceType.ALARM => Alarm
      case software.amazon.awssdk.services.lightsail.model.ResourceType.CONTACT_METHOD => ContactMethod
      case software.amazon.awssdk.services.lightsail.model.ResourceType.DISTRIBUTION => Distribution
      case software.amazon.awssdk.services.lightsail.model.ResourceType.CERTIFICATE => Certificate
    }
    final case object unknownToSdkVersion extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.UNKNOWN_TO_SDK_VERSION }
    final case object ContainerService extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.CONTAINER_SERVICE }
    final case object Instance extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.INSTANCE }
    final case object StaticIp extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.STATIC_IP }
    final case object KeyPair extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.KEY_PAIR }
    final case object InstanceSnapshot extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.INSTANCE_SNAPSHOT }
    final case object Domain extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.DOMAIN }
    final case object PeeredVpc extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.PEERED_VPC }
    final case object LoadBalancer extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.LOAD_BALANCER }
    final case object LoadBalancerTlsCertificate extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.LOAD_BALANCER_TLS_CERTIFICATE }
    final case object Disk extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.DISK }
    final case object DiskSnapshot extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.DISK_SNAPSHOT }
    final case object RelationalDatabase extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.RELATIONAL_DATABASE }
    final case object RelationalDatabaseSnapshot extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.RELATIONAL_DATABASE_SNAPSHOT }
    final case object ExportSnapshotRecord extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.EXPORT_SNAPSHOT_RECORD }
    final case object CloudFormationStackRecord extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.CLOUD_FORMATION_STACK_RECORD }
    final case object Alarm extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.ALARM }
    final case object ContactMethod extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.CONTACT_METHOD }
    final case object Distribution extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.DISTRIBUTION }
    final case object Certificate extends ResourceType { override def unwrap: software.amazon.awssdk.services.lightsail.model.ResourceType = software.amazon.awssdk.services.lightsail.model.ResourceType.CERTIFICATE }
  }
  case class SendContactMethodVerificationRequest(protocol: ContactMethodVerificationProtocol) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationRequest = {
      import SendContactMethodVerificationRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationRequest.builder().protocol(protocol.unwrap).build()
    }
    def asReadOnly: SendContactMethodVerificationRequest.ReadOnly = SendContactMethodVerificationRequest.wrap(buildAwsValue())
  }
  object SendContactMethodVerificationRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SendContactMethodVerificationRequest = SendContactMethodVerificationRequest(protocolValue)
      def protocolValue: ContactMethodVerificationProtocol
      def protocol: ZIO[Any, Nothing, ContactMethodVerificationProtocol] = ZIO.succeed(protocolValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationRequest) extends SendContactMethodVerificationRequest.ReadOnly { override def protocolValue: ContactMethodVerificationProtocol = ContactMethodVerificationProtocol.wrap(impl.protocol()) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationRequest): ReadOnly = new Wrapper(impl)
  }
  case class SendContactMethodVerificationResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationResponse = {
      import SendContactMethodVerificationResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: SendContactMethodVerificationResponse.ReadOnly = SendContactMethodVerificationResponse.wrap(buildAwsValue())
  }
  object SendContactMethodVerificationResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SendContactMethodVerificationResponse = SendContactMethodVerificationResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationResponse) extends SendContactMethodVerificationResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.SendContactMethodVerificationResponse): ReadOnly = new Wrapper(impl)
  }
  case class SetIpAddressTypeRequest(resourceType: ResourceType, resourceName: primitives.ResourceName, ipAddressType: IpAddressType) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeRequest = {
      import SetIpAddressTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeRequest.builder().resourceType(resourceType.unwrap).resourceName(resourceName: java.lang.String).ipAddressType(ipAddressType.unwrap).build()
    }
    def asReadOnly: SetIpAddressTypeRequest.ReadOnly = SetIpAddressTypeRequest.wrap(buildAwsValue())
  }
  object SetIpAddressTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SetIpAddressTypeRequest = SetIpAddressTypeRequest(resourceTypeValue, resourceNameValue, ipAddressTypeValue)
      def resourceTypeValue: ResourceType
      def resourceNameValue: primitives.ResourceName
      def ipAddressTypeValue: IpAddressType
      def resourceType: ZIO[Any, Nothing, ResourceType] = ZIO.succeed(resourceTypeValue)
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
      def ipAddressType: ZIO[Any, Nothing, IpAddressType] = ZIO.succeed(ipAddressTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeRequest) extends SetIpAddressTypeRequest.ReadOnly {
      override def resourceTypeValue: ResourceType = ResourceType.wrap(impl.resourceType())
      override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName
      override def ipAddressTypeValue: IpAddressType = IpAddressType.wrap(impl.ipAddressType())
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class SetIpAddressTypeResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeResponse = {
      import SetIpAddressTypeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: SetIpAddressTypeResponse.ReadOnly = SetIpAddressTypeResponse.wrap(buildAwsValue())
  }
  object SetIpAddressTypeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SetIpAddressTypeResponse = SetIpAddressTypeResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeResponse) extends SetIpAddressTypeResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.SetIpAddressTypeResponse): ReadOnly = new Wrapper(impl)
  }
  case class StartInstanceRequest(instanceName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StartInstanceRequest = {
      import StartInstanceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StartInstanceRequest.builder().instanceName(instanceName: java.lang.String).build()
    }
    def asReadOnly: StartInstanceRequest.ReadOnly = StartInstanceRequest.wrap(buildAwsValue())
  }
  object StartInstanceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StartInstanceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartInstanceRequest = StartInstanceRequest(instanceNameValue)
      def instanceNameValue: primitives.ResourceName
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StartInstanceRequest) extends StartInstanceRequest.ReadOnly { override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StartInstanceRequest): ReadOnly = new Wrapper(impl)
  }
  case class StartInstanceResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StartInstanceResponse = {
      import StartInstanceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StartInstanceResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: StartInstanceResponse.ReadOnly = StartInstanceResponse.wrap(buildAwsValue())
  }
  object StartInstanceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StartInstanceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartInstanceResponse = StartInstanceResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StartInstanceResponse) extends StartInstanceResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StartInstanceResponse): ReadOnly = new Wrapper(impl)
  }
  case class StartRelationalDatabaseRequest(relationalDatabaseName: primitives.ResourceName) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseRequest = {
      import StartRelationalDatabaseRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).build()
    }
    def asReadOnly: StartRelationalDatabaseRequest.ReadOnly = StartRelationalDatabaseRequest.wrap(buildAwsValue())
  }
  object StartRelationalDatabaseRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartRelationalDatabaseRequest = StartRelationalDatabaseRequest(relationalDatabaseNameValue)
      def relationalDatabaseNameValue: primitives.ResourceName
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseRequest) extends StartRelationalDatabaseRequest.ReadOnly { override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseRequest): ReadOnly = new Wrapper(impl)
  }
  case class StartRelationalDatabaseResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseResponse = {
      import StartRelationalDatabaseResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: StartRelationalDatabaseResponse.ReadOnly = StartRelationalDatabaseResponse.wrap(buildAwsValue())
  }
  object StartRelationalDatabaseResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartRelationalDatabaseResponse = StartRelationalDatabaseResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseResponse) extends StartRelationalDatabaseResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StartRelationalDatabaseResponse): ReadOnly = new Wrapper(impl)
  }
  case class StaticIp(name: scala.Option[primitives.ResourceName] = None, arn: scala.Option[primitives.NonEmptyString] = None, supportCode: scala.Option[String] = None, createdAt: scala.Option[primitives.IsoDate] = None, location: scala.Option[ResourceLocation] = None, resourceType: scala.Option[ResourceType] = None, ipAddress: scala.Option[primitives.IpAddress] = None, attachedTo: scala.Option[primitives.ResourceName] = None, isAttached: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StaticIp = {
      import StaticIp.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StaticIp.builder().optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).optionallyWith(supportCode.map(value => value: java.lang.String))(_.supportCode).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(location.map(value => value.buildAwsValue()))(_.location).optionallyWith(resourceType.map(value => value.unwrap))(_.resourceType).optionallyWith(ipAddress.map(value => value: java.lang.String))(_.ipAddress).optionallyWith(attachedTo.map(value => value: java.lang.String))(_.attachedTo).optionallyWith(isAttached.map(value => value: java.lang.Boolean))(_.isAttached).build()
    }
    def asReadOnly: StaticIp.ReadOnly = StaticIp.wrap(buildAwsValue())
  }
  object StaticIp {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StaticIp] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StaticIp = StaticIp(nameValue.map(value => value), arnValue.map(value => value), supportCodeValue.map(value => value), createdAtValue.map(value => value), locationValue.map(value => value.editable), resourceTypeValue.map(value => value), ipAddressValue.map(value => value), attachedToValue.map(value => value), isAttachedValue.map(value => value))
      def nameValue: scala.Option[primitives.ResourceName]
      def arnValue: scala.Option[primitives.NonEmptyString]
      def supportCodeValue: scala.Option[String]
      def createdAtValue: scala.Option[primitives.IsoDate]
      def locationValue: scala.Option[ResourceLocation.ReadOnly]
      def resourceTypeValue: scala.Option[ResourceType]
      def ipAddressValue: scala.Option[primitives.IpAddress]
      def attachedToValue: scala.Option[primitives.ResourceName]
      def isAttachedValue: scala.Option[Boolean]
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NonEmptyString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
      def supportCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportCode", supportCodeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IsoDate] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def location: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceLocation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("location", locationValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
      def ipAddress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.IpAddress] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ipAddress", ipAddressValue)
      def attachedTo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("attachedTo", attachedToValue)
      def isAttached: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isAttached", isAttachedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StaticIp) extends StaticIp.ReadOnly {
      override def nameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.name()).map(value => value: primitives.ResourceName)
      override def arnValue: scala.Option[primitives.NonEmptyString] = scala.Option(impl.arn()).map(value => value: primitives.NonEmptyString)
      override def supportCodeValue: scala.Option[String] = scala.Option(impl.supportCode()).map(value => value: String)
      override def createdAtValue: scala.Option[primitives.IsoDate] = scala.Option(impl.createdAt()).map(value => value: primitives.IsoDate)
      override def locationValue: scala.Option[ResourceLocation.ReadOnly] = scala.Option(impl.location()).map(value => ResourceLocation.wrap(value))
      override def resourceTypeValue: scala.Option[ResourceType] = scala.Option(impl.resourceType()).map(value => ResourceType.wrap(value))
      override def ipAddressValue: scala.Option[primitives.IpAddress] = scala.Option(impl.ipAddress()).map(value => value: primitives.IpAddress)
      override def attachedToValue: scala.Option[primitives.ResourceName] = scala.Option(impl.attachedTo()).map(value => value: primitives.ResourceName)
      override def isAttachedValue: scala.Option[Boolean] = scala.Option(impl.isAttached()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StaticIp): ReadOnly = new Wrapper(impl)
  }
  type StaticIpList = List[StaticIp]
  case class StopInstanceRequest(instanceName: primitives.ResourceName, force: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StopInstanceRequest = {
      import StopInstanceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StopInstanceRequest.builder().instanceName(instanceName: java.lang.String).optionallyWith(force.map(value => value: java.lang.Boolean))(_.force).build()
    }
    def asReadOnly: StopInstanceRequest.ReadOnly = StopInstanceRequest.wrap(buildAwsValue())
  }
  object StopInstanceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StopInstanceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StopInstanceRequest = StopInstanceRequest(instanceNameValue, forceValue.map(value => value))
      def instanceNameValue: primitives.ResourceName
      def forceValue: scala.Option[Boolean]
      def instanceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(instanceNameValue)
      def force: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("force", forceValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StopInstanceRequest) extends StopInstanceRequest.ReadOnly {
      override def instanceNameValue: primitives.ResourceName = impl.instanceName(): primitives.ResourceName
      override def forceValue: scala.Option[Boolean] = scala.Option(impl.force()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StopInstanceRequest): ReadOnly = new Wrapper(impl)
  }
  case class StopInstanceResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StopInstanceResponse = {
      import StopInstanceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StopInstanceResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: StopInstanceResponse.ReadOnly = StopInstanceResponse.wrap(buildAwsValue())
  }
  object StopInstanceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StopInstanceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StopInstanceResponse = StopInstanceResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StopInstanceResponse) extends StopInstanceResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StopInstanceResponse): ReadOnly = new Wrapper(impl)
  }
  case class StopRelationalDatabaseRequest(relationalDatabaseName: primitives.ResourceName, relationalDatabaseSnapshotName: scala.Option[primitives.ResourceName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseRequest = {
      import StopRelationalDatabaseRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(relationalDatabaseSnapshotName.map(value => value: java.lang.String))(_.relationalDatabaseSnapshotName).build()
    }
    def asReadOnly: StopRelationalDatabaseRequest.ReadOnly = StopRelationalDatabaseRequest.wrap(buildAwsValue())
  }
  object StopRelationalDatabaseRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StopRelationalDatabaseRequest = StopRelationalDatabaseRequest(relationalDatabaseNameValue, relationalDatabaseSnapshotNameValue.map(value => value))
      def relationalDatabaseNameValue: primitives.ResourceName
      def relationalDatabaseSnapshotNameValue: scala.Option[primitives.ResourceName]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def relationalDatabaseSnapshotName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("relationalDatabaseSnapshotName", relationalDatabaseSnapshotNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseRequest) extends StopRelationalDatabaseRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def relationalDatabaseSnapshotNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.relationalDatabaseSnapshotName()).map(value => value: primitives.ResourceName)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseRequest): ReadOnly = new Wrapper(impl)
  }
  case class StopRelationalDatabaseResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseResponse = {
      import StopRelationalDatabaseResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: StopRelationalDatabaseResponse.ReadOnly = StopRelationalDatabaseResponse.wrap(buildAwsValue())
  }
  object StopRelationalDatabaseResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StopRelationalDatabaseResponse = StopRelationalDatabaseResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseResponse) extends StopRelationalDatabaseResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.StopRelationalDatabaseResponse): ReadOnly = new Wrapper(impl)
  }
  type StringList = List[String]
  type SubjectAlternativeNameList = List[primitives.DomainName]
  case class Tag(key: scala.Option[primitives.TagKey] = None, value: scala.Option[primitives.TagValue] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.Tag = {
      import Tag.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.Tag.builder().optionallyWith(key.map(value => value: java.lang.String))(_.key).optionallyWith(value.map(value => value: java.lang.String))(_.value).build()
    }
    def asReadOnly: Tag.ReadOnly = Tag.wrap(buildAwsValue())
  }
  object Tag {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.Tag] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Tag = Tag(keyValue.map(value => value), valueValue.map(value => value))
      def keyValue: scala.Option[primitives.TagKey]
      def valueValue: scala.Option[primitives.TagValue]
      def key: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TagKey] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("key", keyValue)
      def value: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TagValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("value", valueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.Tag) extends Tag.ReadOnly {
      override def keyValue: scala.Option[primitives.TagKey] = scala.Option(impl.key()).map(value => value: primitives.TagKey)
      override def valueValue: scala.Option[primitives.TagValue] = scala.Option(impl.value()).map(value => value: primitives.TagValue)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.Tag): ReadOnly = new Wrapper(impl)
  }
  type TagKeyList = List[primitives.TagKey]
  type TagList = List[Tag]
  case class TagResourceRequest(resourceName: primitives.ResourceName, resourceArn: scala.Option[primitives.ResourceArn] = None, tags: Iterable[Tag]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.TagResourceRequest = {
      import TagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.TagResourceRequest.builder().resourceName(resourceName: java.lang.String).optionallyWith(resourceArn.map(value => value: java.lang.String))(_.resourceArn).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.lightsail.model.TagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagResourceRequest = TagResourceRequest(resourceNameValue, resourceArnValue.map(value => value), tagsValue.map { item => 
        item.editable
      })
      def resourceNameValue: primitives.ResourceName
      def resourceArnValue: scala.Option[primitives.ResourceArn]
      def tagsValue: List[Tag.ReadOnly]
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
      def resourceArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceArn", resourceArnValue)
      def tags: ZIO[Any, Nothing, List[Tag.ReadOnly]] = ZIO.succeed(tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.TagResourceRequest) extends TagResourceRequest.ReadOnly {
      override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName
      override def resourceArnValue: scala.Option[primitives.ResourceArn] = scala.Option(impl.resourceArn()).map(value => value: primitives.ResourceArn)
      override def tagsValue: List[Tag.ReadOnly] = impl.tags().asScala.map { item => 
        Tag.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.TagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class TagResourceResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.TagResourceResponse = {
      import TagResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.TagResourceResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: TagResourceResponse.ReadOnly = TagResourceResponse.wrap(buildAwsValue())
  }
  object TagResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.TagResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagResourceResponse = TagResourceResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.TagResourceResponse) extends TagResourceResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.TagResourceResponse): ReadOnly = new Wrapper(impl)
  }
  case class TestAlarmRequest(alarmName: primitives.ResourceName, state: AlarmState) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.TestAlarmRequest = {
      import TestAlarmRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.TestAlarmRequest.builder().alarmName(alarmName: java.lang.String).state(state.unwrap).build()
    }
    def asReadOnly: TestAlarmRequest.ReadOnly = TestAlarmRequest.wrap(buildAwsValue())
  }
  object TestAlarmRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.TestAlarmRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TestAlarmRequest = TestAlarmRequest(alarmNameValue, stateValue)
      def alarmNameValue: primitives.ResourceName
      def stateValue: AlarmState
      def alarmName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(alarmNameValue)
      def state: ZIO[Any, Nothing, AlarmState] = ZIO.succeed(stateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.TestAlarmRequest) extends TestAlarmRequest.ReadOnly {
      override def alarmNameValue: primitives.ResourceName = impl.alarmName(): primitives.ResourceName
      override def stateValue: AlarmState = AlarmState.wrap(impl.state())
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.TestAlarmRequest): ReadOnly = new Wrapper(impl)
  }
  case class TestAlarmResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.TestAlarmResponse = {
      import TestAlarmResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.TestAlarmResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: TestAlarmResponse.ReadOnly = TestAlarmResponse.wrap(buildAwsValue())
  }
  object TestAlarmResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.TestAlarmResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TestAlarmResponse = TestAlarmResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.TestAlarmResponse) extends TestAlarmResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.TestAlarmResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait TreatMissingData { def unwrap: software.amazon.awssdk.services.lightsail.model.TreatMissingData }
  object TreatMissingData {
    def wrap(value: software.amazon.awssdk.services.lightsail.model.TreatMissingData): TreatMissingData = value match {
      case software.amazon.awssdk.services.lightsail.model.TreatMissingData.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.lightsail.model.TreatMissingData.BREACHING => breaching
      case software.amazon.awssdk.services.lightsail.model.TreatMissingData.NOT_BREACHING => notBreaching
      case software.amazon.awssdk.services.lightsail.model.TreatMissingData.IGNORE => ignore
      case software.amazon.awssdk.services.lightsail.model.TreatMissingData.MISSING => missing
    }
    final case object unknownToSdkVersion extends TreatMissingData { override def unwrap: software.amazon.awssdk.services.lightsail.model.TreatMissingData = software.amazon.awssdk.services.lightsail.model.TreatMissingData.UNKNOWN_TO_SDK_VERSION }
    final case object breaching extends TreatMissingData { override def unwrap: software.amazon.awssdk.services.lightsail.model.TreatMissingData = software.amazon.awssdk.services.lightsail.model.TreatMissingData.BREACHING }
    final case object notBreaching extends TreatMissingData { override def unwrap: software.amazon.awssdk.services.lightsail.model.TreatMissingData = software.amazon.awssdk.services.lightsail.model.TreatMissingData.NOT_BREACHING }
    final case object ignore extends TreatMissingData { override def unwrap: software.amazon.awssdk.services.lightsail.model.TreatMissingData = software.amazon.awssdk.services.lightsail.model.TreatMissingData.IGNORE }
    final case object missing extends TreatMissingData { override def unwrap: software.amazon.awssdk.services.lightsail.model.TreatMissingData = software.amazon.awssdk.services.lightsail.model.TreatMissingData.MISSING }
  }
  case class UnpeerVpcRequest() {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UnpeerVpcRequest = {
      import UnpeerVpcRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UnpeerVpcRequest.builder().build()
    }
    def asReadOnly: UnpeerVpcRequest.ReadOnly = UnpeerVpcRequest.wrap(buildAwsValue())
  }
  object UnpeerVpcRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UnpeerVpcRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: UnpeerVpcRequest = UnpeerVpcRequest() }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UnpeerVpcRequest) extends UnpeerVpcRequest.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UnpeerVpcRequest): ReadOnly = new Wrapper(impl)
  }
  case class UnpeerVpcResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UnpeerVpcResponse = {
      import UnpeerVpcResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UnpeerVpcResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: UnpeerVpcResponse.ReadOnly = UnpeerVpcResponse.wrap(buildAwsValue())
  }
  object UnpeerVpcResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UnpeerVpcResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UnpeerVpcResponse = UnpeerVpcResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UnpeerVpcResponse) extends UnpeerVpcResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UnpeerVpcResponse): ReadOnly = new Wrapper(impl)
  }
  case class UntagResourceRequest(resourceName: primitives.ResourceName, resourceArn: scala.Option[primitives.ResourceArn] = None, tagKeys: Iterable[primitives.TagKey]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UntagResourceRequest = {
      import UntagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UntagResourceRequest.builder().resourceName(resourceName: java.lang.String).optionallyWith(resourceArn.map(value => value: java.lang.String))(_.resourceArn).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.lightsail.model.UntagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UntagResourceRequest = UntagResourceRequest(resourceNameValue, resourceArnValue.map(value => value), tagKeysValue)
      def resourceNameValue: primitives.ResourceName
      def resourceArnValue: scala.Option[primitives.ResourceArn]
      def tagKeysValue: List[primitives.TagKey]
      def resourceName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(resourceNameValue)
      def resourceArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceArn", resourceArnValue)
      def tagKeys: ZIO[Any, Nothing, List[primitives.TagKey]] = ZIO.succeed(tagKeysValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UntagResourceRequest) extends UntagResourceRequest.ReadOnly {
      override def resourceNameValue: primitives.ResourceName = impl.resourceName(): primitives.ResourceName
      override def resourceArnValue: scala.Option[primitives.ResourceArn] = scala.Option(impl.resourceArn()).map(value => value: primitives.ResourceArn)
      override def tagKeysValue: List[primitives.TagKey] = impl.tagKeys().asScala.map { item => 
        item: primitives.TagKey
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UntagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class UntagResourceResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UntagResourceResponse = {
      import UntagResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UntagResourceResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: UntagResourceResponse.ReadOnly = UntagResourceResponse.wrap(buildAwsValue())
  }
  object UntagResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UntagResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UntagResourceResponse = UntagResourceResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UntagResourceResponse) extends UntagResourceResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UntagResourceResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateContainerServiceRequest(serviceName: primitives.ContainerServiceName, power: scala.Option[ContainerServicePowerName] = None, scale: scala.Option[primitives.ContainerServiceScale] = None, isDisabled: scala.Option[Boolean] = None, publicDomainNames: scala.Option[Map[String, Iterable[String]]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceRequest = {
      import UpdateContainerServiceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceRequest.builder().serviceName(serviceName: java.lang.String).optionallyWith(power.map(value => value.unwrap))(_.power).optionallyWith(scale.map(value => value: java.lang.Integer))(_.scale).optionallyWith(isDisabled.map(value => value: java.lang.Boolean))(_.isDisabled).optionallyWith(publicDomainNames.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item: java.lang.String
          }.asJavaCollection
      }).asJava))(_.publicDomainNames).build()
    }
    def asReadOnly: UpdateContainerServiceRequest.ReadOnly = UpdateContainerServiceRequest.wrap(buildAwsValue())
  }
  object UpdateContainerServiceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateContainerServiceRequest = UpdateContainerServiceRequest(serviceNameValue, powerValue.map(value => value), scaleValue.map(value => value), isDisabledValue.map(value => value), publicDomainNamesValue.map(value => value))
      def serviceNameValue: primitives.ContainerServiceName
      def powerValue: scala.Option[ContainerServicePowerName]
      def scaleValue: scala.Option[primitives.ContainerServiceScale]
      def isDisabledValue: scala.Option[Boolean]
      def publicDomainNamesValue: scala.Option[Map[String, List[String]]]
      def serviceName: ZIO[Any, Nothing, primitives.ContainerServiceName] = ZIO.succeed(serviceNameValue)
      def power: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerServicePowerName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("power", powerValue)
      def scale: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ContainerServiceScale] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scale", scaleValue)
      def isDisabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isDisabled", isDisabledValue)
      def publicDomainNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[String, List[String]]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publicDomainNames", publicDomainNamesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceRequest) extends UpdateContainerServiceRequest.ReadOnly {
      override def serviceNameValue: primitives.ContainerServiceName = impl.serviceName(): primitives.ContainerServiceName
      override def powerValue: scala.Option[ContainerServicePowerName] = scala.Option(impl.power()).map(value => ContainerServicePowerName.wrap(value))
      override def scaleValue: scala.Option[primitives.ContainerServiceScale] = scala.Option(impl.scale()).map(value => value: primitives.ContainerServiceScale)
      override def isDisabledValue: scala.Option[Boolean] = scala.Option(impl.isDisabled()).map(value => value: Boolean)
      override def publicDomainNamesValue: scala.Option[Map[String, List[String]]] = scala.Option(impl.publicDomainNames()).map(value => value.asScala.map({
        case (key, value) =>
          (key: String) -> value.asScala.map { item => 
            item: String
          }.toList
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateContainerServiceResponse(containerService: scala.Option[ContainerService] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceResponse = {
      import UpdateContainerServiceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceResponse.builder().optionallyWith(containerService.map(value => value.buildAwsValue()))(_.containerService).build()
    }
    def asReadOnly: UpdateContainerServiceResponse.ReadOnly = UpdateContainerServiceResponse.wrap(buildAwsValue())
  }
  object UpdateContainerServiceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateContainerServiceResponse = UpdateContainerServiceResponse(containerServiceValue.map(value => value.editable))
      def containerServiceValue: scala.Option[ContainerService.ReadOnly]
      def containerService: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContainerService.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("containerService", containerServiceValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceResponse) extends UpdateContainerServiceResponse.ReadOnly { override def containerServiceValue: scala.Option[ContainerService.ReadOnly] = scala.Option(impl.containerService()).map(value => ContainerService.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateContainerServiceResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateDistributionBundleRequest(distributionName: scala.Option[primitives.ResourceName] = None, bundleId: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleRequest = {
      import UpdateDistributionBundleRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleRequest.builder().optionallyWith(distributionName.map(value => value: java.lang.String))(_.distributionName).optionallyWith(bundleId.map(value => value: java.lang.String))(_.bundleId).build()
    }
    def asReadOnly: UpdateDistributionBundleRequest.ReadOnly = UpdateDistributionBundleRequest.wrap(buildAwsValue())
  }
  object UpdateDistributionBundleRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateDistributionBundleRequest = UpdateDistributionBundleRequest(distributionNameValue.map(value => value), bundleIdValue.map(value => value))
      def distributionNameValue: scala.Option[primitives.ResourceName]
      def bundleIdValue: scala.Option[String]
      def distributionName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("distributionName", distributionNameValue)
      def bundleId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bundleId", bundleIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleRequest) extends UpdateDistributionBundleRequest.ReadOnly {
      override def distributionNameValue: scala.Option[primitives.ResourceName] = scala.Option(impl.distributionName()).map(value => value: primitives.ResourceName)
      override def bundleIdValue: scala.Option[String] = scala.Option(impl.bundleId()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateDistributionBundleResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleResponse = {
      import UpdateDistributionBundleResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: UpdateDistributionBundleResponse.ReadOnly = UpdateDistributionBundleResponse.wrap(buildAwsValue())
  }
  object UpdateDistributionBundleResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateDistributionBundleResponse = UpdateDistributionBundleResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleResponse) extends UpdateDistributionBundleResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionBundleResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateDistributionRequest(distributionName: primitives.ResourceName, origin: scala.Option[InputOrigin] = None, defaultCacheBehavior: scala.Option[CacheBehavior] = None, cacheBehaviorSettings: scala.Option[CacheSettings] = None, cacheBehaviors: scala.Option[Iterable[CacheBehaviorPerPath]] = None, isEnabled: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateDistributionRequest = {
      import UpdateDistributionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateDistributionRequest.builder().distributionName(distributionName: java.lang.String).optionallyWith(origin.map(value => value.buildAwsValue()))(_.origin).optionallyWith(defaultCacheBehavior.map(value => value.buildAwsValue()))(_.defaultCacheBehavior).optionallyWith(cacheBehaviorSettings.map(value => value.buildAwsValue()))(_.cacheBehaviorSettings).optionallyWith(cacheBehaviors.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.cacheBehaviors).optionallyWith(isEnabled.map(value => value: java.lang.Boolean))(_.isEnabled).build()
    }
    def asReadOnly: UpdateDistributionRequest.ReadOnly = UpdateDistributionRequest.wrap(buildAwsValue())
  }
  object UpdateDistributionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateDistributionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateDistributionRequest = UpdateDistributionRequest(distributionNameValue, originValue.map(value => value.editable), defaultCacheBehaviorValue.map(value => value.editable), cacheBehaviorSettingsValue.map(value => value.editable), cacheBehaviorsValue.map(value => value.map { item => 
        item.editable
      }), isEnabledValue.map(value => value))
      def distributionNameValue: primitives.ResourceName
      def originValue: scala.Option[InputOrigin.ReadOnly]
      def defaultCacheBehaviorValue: scala.Option[CacheBehavior.ReadOnly]
      def cacheBehaviorSettingsValue: scala.Option[CacheSettings.ReadOnly]
      def cacheBehaviorsValue: scala.Option[List[CacheBehaviorPerPath.ReadOnly]]
      def isEnabledValue: scala.Option[Boolean]
      def distributionName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(distributionNameValue)
      def origin: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InputOrigin.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("origin", originValue)
      def defaultCacheBehavior: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CacheBehavior.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultCacheBehavior", defaultCacheBehaviorValue)
      def cacheBehaviorSettings: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CacheSettings.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cacheBehaviorSettings", cacheBehaviorSettingsValue)
      def cacheBehaviors: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[CacheBehaviorPerPath.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cacheBehaviors", cacheBehaviorsValue)
      def isEnabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isEnabled", isEnabledValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionRequest) extends UpdateDistributionRequest.ReadOnly {
      override def distributionNameValue: primitives.ResourceName = impl.distributionName(): primitives.ResourceName
      override def originValue: scala.Option[InputOrigin.ReadOnly] = scala.Option(impl.origin()).map(value => InputOrigin.wrap(value))
      override def defaultCacheBehaviorValue: scala.Option[CacheBehavior.ReadOnly] = scala.Option(impl.defaultCacheBehavior()).map(value => CacheBehavior.wrap(value))
      override def cacheBehaviorSettingsValue: scala.Option[CacheSettings.ReadOnly] = scala.Option(impl.cacheBehaviorSettings()).map(value => CacheSettings.wrap(value))
      override def cacheBehaviorsValue: scala.Option[List[CacheBehaviorPerPath.ReadOnly]] = scala.Option(impl.cacheBehaviors()).map(value => value.asScala.map { item => 
        CacheBehaviorPerPath.wrap(item)
      }.toList)
      override def isEnabledValue: scala.Option[Boolean] = scala.Option(impl.isEnabled()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateDistributionResponse(operation: scala.Option[Operation] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateDistributionResponse = {
      import UpdateDistributionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateDistributionResponse.builder().optionallyWith(operation.map(value => value.buildAwsValue()))(_.operation).build()
    }
    def asReadOnly: UpdateDistributionResponse.ReadOnly = UpdateDistributionResponse.wrap(buildAwsValue())
  }
  object UpdateDistributionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateDistributionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateDistributionResponse = UpdateDistributionResponse(operationValue.map(value => value.editable))
      def operationValue: scala.Option[Operation.ReadOnly]
      def operation: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Operation.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operation", operationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionResponse) extends UpdateDistributionResponse.ReadOnly { override def operationValue: scala.Option[Operation.ReadOnly] = scala.Option(impl.operation()).map(value => Operation.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateDistributionResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateDomainEntryRequest(domainName: primitives.DomainName, domainEntry: DomainEntry) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryRequest = {
      import UpdateDomainEntryRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryRequest.builder().domainName(domainName: java.lang.String).domainEntry(domainEntry.buildAwsValue()).build()
    }
    def asReadOnly: UpdateDomainEntryRequest.ReadOnly = UpdateDomainEntryRequest.wrap(buildAwsValue())
  }
  object UpdateDomainEntryRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateDomainEntryRequest = UpdateDomainEntryRequest(domainNameValue, domainEntryValue.editable)
      def domainNameValue: primitives.DomainName
      def domainEntryValue: DomainEntry.ReadOnly
      def domainName: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainNameValue)
      def domainEntry: ZIO[Any, Nothing, DomainEntry.ReadOnly] = ZIO.succeed(domainEntryValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryRequest) extends UpdateDomainEntryRequest.ReadOnly {
      override def domainNameValue: primitives.DomainName = impl.domainName(): primitives.DomainName
      override def domainEntryValue: DomainEntry.ReadOnly = DomainEntry.wrap(impl.domainEntry())
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateDomainEntryResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryResponse = {
      import UpdateDomainEntryResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: UpdateDomainEntryResponse.ReadOnly = UpdateDomainEntryResponse.wrap(buildAwsValue())
  }
  object UpdateDomainEntryResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateDomainEntryResponse = UpdateDomainEntryResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryResponse) extends UpdateDomainEntryResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateDomainEntryResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateLoadBalancerAttributeRequest(loadBalancerName: primitives.ResourceName, attributeName: LoadBalancerAttributeName, attributeValue: primitives.StringMax256) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeRequest = {
      import UpdateLoadBalancerAttributeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeRequest.builder().loadBalancerName(loadBalancerName: java.lang.String).attributeName(attributeName.unwrap).attributeValue(attributeValue: java.lang.String).build()
    }
    def asReadOnly: UpdateLoadBalancerAttributeRequest.ReadOnly = UpdateLoadBalancerAttributeRequest.wrap(buildAwsValue())
  }
  object UpdateLoadBalancerAttributeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateLoadBalancerAttributeRequest = UpdateLoadBalancerAttributeRequest(loadBalancerNameValue, attributeNameValue, attributeValueValue)
      def loadBalancerNameValue: primitives.ResourceName
      def attributeNameValue: LoadBalancerAttributeName
      def attributeValueValue: primitives.StringMax256
      def loadBalancerName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(loadBalancerNameValue)
      def attributeName: ZIO[Any, Nothing, LoadBalancerAttributeName] = ZIO.succeed(attributeNameValue)
      def attributeValue: ZIO[Any, Nothing, primitives.StringMax256] = ZIO.succeed(attributeValueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeRequest) extends UpdateLoadBalancerAttributeRequest.ReadOnly {
      override def loadBalancerNameValue: primitives.ResourceName = impl.loadBalancerName(): primitives.ResourceName
      override def attributeNameValue: LoadBalancerAttributeName = LoadBalancerAttributeName.wrap(impl.attributeName())
      override def attributeValueValue: primitives.StringMax256 = impl.attributeValue(): primitives.StringMax256
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateLoadBalancerAttributeResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeResponse = {
      import UpdateLoadBalancerAttributeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: UpdateLoadBalancerAttributeResponse.ReadOnly = UpdateLoadBalancerAttributeResponse.wrap(buildAwsValue())
  }
  object UpdateLoadBalancerAttributeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateLoadBalancerAttributeResponse = UpdateLoadBalancerAttributeResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeResponse) extends UpdateLoadBalancerAttributeResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateLoadBalancerAttributeResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateRelationalDatabaseParametersRequest(relationalDatabaseName: primitives.ResourceName, parameters: Iterable[RelationalDatabaseParameter]) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersRequest = {
      import UpdateRelationalDatabaseParametersRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).parameters(parameters.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: UpdateRelationalDatabaseParametersRequest.ReadOnly = UpdateRelationalDatabaseParametersRequest.wrap(buildAwsValue())
  }
  object UpdateRelationalDatabaseParametersRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateRelationalDatabaseParametersRequest = UpdateRelationalDatabaseParametersRequest(relationalDatabaseNameValue, parametersValue.map { item => 
        item.editable
      })
      def relationalDatabaseNameValue: primitives.ResourceName
      def parametersValue: List[RelationalDatabaseParameter.ReadOnly]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def parameters: ZIO[Any, Nothing, List[RelationalDatabaseParameter.ReadOnly]] = ZIO.succeed(parametersValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersRequest) extends UpdateRelationalDatabaseParametersRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def parametersValue: List[RelationalDatabaseParameter.ReadOnly] = impl.parameters().asScala.map { item => 
        RelationalDatabaseParameter.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateRelationalDatabaseParametersResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersResponse = {
      import UpdateRelationalDatabaseParametersResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: UpdateRelationalDatabaseParametersResponse.ReadOnly = UpdateRelationalDatabaseParametersResponse.wrap(buildAwsValue())
  }
  object UpdateRelationalDatabaseParametersResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateRelationalDatabaseParametersResponse = UpdateRelationalDatabaseParametersResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersResponse) extends UpdateRelationalDatabaseParametersResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseParametersResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateRelationalDatabaseRequest(relationalDatabaseName: primitives.ResourceName, masterUserPassword: scala.Option[primitives.SensitiveString] = None, rotateMasterUserPassword: scala.Option[Boolean] = None, preferredBackupWindow: scala.Option[String] = None, preferredMaintenanceWindow: scala.Option[String] = None, enableBackupRetention: scala.Option[Boolean] = None, disableBackupRetention: scala.Option[Boolean] = None, publiclyAccessible: scala.Option[Boolean] = None, applyImmediately: scala.Option[Boolean] = None, caCertificateIdentifier: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseRequest = {
      import UpdateRelationalDatabaseRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseRequest.builder().relationalDatabaseName(relationalDatabaseName: java.lang.String).optionallyWith(masterUserPassword.map(value => value: java.lang.String))(_.masterUserPassword).optionallyWith(rotateMasterUserPassword.map(value => value: java.lang.Boolean))(_.rotateMasterUserPassword).optionallyWith(preferredBackupWindow.map(value => value: java.lang.String))(_.preferredBackupWindow).optionallyWith(preferredMaintenanceWindow.map(value => value: java.lang.String))(_.preferredMaintenanceWindow).optionallyWith(enableBackupRetention.map(value => value: java.lang.Boolean))(_.enableBackupRetention).optionallyWith(disableBackupRetention.map(value => value: java.lang.Boolean))(_.disableBackupRetention).optionallyWith(publiclyAccessible.map(value => value: java.lang.Boolean))(_.publiclyAccessible).optionallyWith(applyImmediately.map(value => value: java.lang.Boolean))(_.applyImmediately).optionallyWith(caCertificateIdentifier.map(value => value: java.lang.String))(_.caCertificateIdentifier).build()
    }
    def asReadOnly: UpdateRelationalDatabaseRequest.ReadOnly = UpdateRelationalDatabaseRequest.wrap(buildAwsValue())
  }
  object UpdateRelationalDatabaseRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateRelationalDatabaseRequest = UpdateRelationalDatabaseRequest(relationalDatabaseNameValue, masterUserPasswordValue.map(value => value), rotateMasterUserPasswordValue.map(value => value), preferredBackupWindowValue.map(value => value), preferredMaintenanceWindowValue.map(value => value), enableBackupRetentionValue.map(value => value), disableBackupRetentionValue.map(value => value), publiclyAccessibleValue.map(value => value), applyImmediatelyValue.map(value => value), caCertificateIdentifierValue.map(value => value))
      def relationalDatabaseNameValue: primitives.ResourceName
      def masterUserPasswordValue: scala.Option[primitives.SensitiveString]
      def rotateMasterUserPasswordValue: scala.Option[Boolean]
      def preferredBackupWindowValue: scala.Option[String]
      def preferredMaintenanceWindowValue: scala.Option[String]
      def enableBackupRetentionValue: scala.Option[Boolean]
      def disableBackupRetentionValue: scala.Option[Boolean]
      def publiclyAccessibleValue: scala.Option[Boolean]
      def applyImmediatelyValue: scala.Option[Boolean]
      def caCertificateIdentifierValue: scala.Option[String]
      def relationalDatabaseName: ZIO[Any, Nothing, primitives.ResourceName] = ZIO.succeed(relationalDatabaseNameValue)
      def masterUserPassword: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SensitiveString] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("masterUserPassword", masterUserPasswordValue)
      def rotateMasterUserPassword: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("rotateMasterUserPassword", rotateMasterUserPasswordValue)
      def preferredBackupWindow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("preferredBackupWindow", preferredBackupWindowValue)
      def preferredMaintenanceWindow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("preferredMaintenanceWindow", preferredMaintenanceWindowValue)
      def enableBackupRetention: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("enableBackupRetention", enableBackupRetentionValue)
      def disableBackupRetention: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("disableBackupRetention", disableBackupRetentionValue)
      def publiclyAccessible: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("publiclyAccessible", publiclyAccessibleValue)
      def applyImmediately: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("applyImmediately", applyImmediatelyValue)
      def caCertificateIdentifier: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("caCertificateIdentifier", caCertificateIdentifierValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseRequest) extends UpdateRelationalDatabaseRequest.ReadOnly {
      override def relationalDatabaseNameValue: primitives.ResourceName = impl.relationalDatabaseName(): primitives.ResourceName
      override def masterUserPasswordValue: scala.Option[primitives.SensitiveString] = scala.Option(impl.masterUserPassword()).map(value => value: primitives.SensitiveString)
      override def rotateMasterUserPasswordValue: scala.Option[Boolean] = scala.Option(impl.rotateMasterUserPassword()).map(value => value: Boolean)
      override def preferredBackupWindowValue: scala.Option[String] = scala.Option(impl.preferredBackupWindow()).map(value => value: String)
      override def preferredMaintenanceWindowValue: scala.Option[String] = scala.Option(impl.preferredMaintenanceWindow()).map(value => value: String)
      override def enableBackupRetentionValue: scala.Option[Boolean] = scala.Option(impl.enableBackupRetention()).map(value => value: Boolean)
      override def disableBackupRetentionValue: scala.Option[Boolean] = scala.Option(impl.disableBackupRetention()).map(value => value: Boolean)
      override def publiclyAccessibleValue: scala.Option[Boolean] = scala.Option(impl.publiclyAccessible()).map(value => value: Boolean)
      override def applyImmediatelyValue: scala.Option[Boolean] = scala.Option(impl.applyImmediately()).map(value => value: Boolean)
      override def caCertificateIdentifierValue: scala.Option[String] = scala.Option(impl.caCertificateIdentifier()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateRelationalDatabaseResponse(operations: scala.Option[Iterable[Operation]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseResponse = {
      import UpdateRelationalDatabaseResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseResponse.builder().optionallyWith(operations.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.operations).build()
    }
    def asReadOnly: UpdateRelationalDatabaseResponse.ReadOnly = UpdateRelationalDatabaseResponse.wrap(buildAwsValue())
  }
  object UpdateRelationalDatabaseResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateRelationalDatabaseResponse = UpdateRelationalDatabaseResponse(operationsValue.map(value => value.map { item => 
        item.editable
      }))
      def operationsValue: scala.Option[List[Operation.ReadOnly]]
      def operations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Operation.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("operations", operationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseResponse) extends UpdateRelationalDatabaseResponse.ReadOnly {
      override def operationsValue: scala.Option[List[Operation.ReadOnly]] = scala.Option(impl.operations()).map(value => value.asScala.map { item => 
        Operation.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.lightsail.model.UpdateRelationalDatabaseResponse): ReadOnly = new Wrapper(impl)
  }
}© 2015 - 2025 Weber Informatics LLC | Privacy Policy