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

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

package io.github.vigoo.zioaws.swf
import scala.jdk.CollectionConverters._
import java.time.Instant
import zio.{ Chunk, ZIO }
import software.amazon.awssdk.core.SdkBytes
package object model {
  object primitives {
    type ActivityId = String
    type Arn = String
    type Canceled = Boolean
    type CauseMessage = String
    type Count = Int
    type Data = String
    type Description = String
    type DomainName = String
    type DurationInDays = String
    type DurationInSeconds = String
    type DurationInSecondsOptional = String
    type EventId = Long
    type FailureReason = String
    type FunctionId = String
    type FunctionInput = String
    type FunctionName = String
    type Identity = String
    type LimitedData = String
    type MarkerName = String
    type Name = String
    type OpenDecisionTasksCount = Int
    type PageSize = Int
    type PageToken = String
    type ResourceTagKey = String
    type ResourceTagValue = String
    type ReverseOrder = Boolean
    type SignalName = String
    type Tag = String
    type TaskPriority = String
    type TaskToken = String
    type TerminateReason = String
    type TimerId = String
    type Timestamp = Instant
    type Truncated = Boolean
    type Version = String
    type VersionOptional = String
    type WorkflowId = String
    type WorkflowRunId = String
    type WorkflowRunIdOptional = String
  }
  case class ActivityTaskCancelRequestedEventAttributes(decisionTaskCompletedEventId: primitives.EventId, activityId: primitives.ActivityId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTaskCancelRequestedEventAttributes = {
      import ActivityTaskCancelRequestedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTaskCancelRequestedEventAttributes.builder().decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).activityId(activityId: java.lang.String).build()
    }
    def asReadOnly: ActivityTaskCancelRequestedEventAttributes.ReadOnly = ActivityTaskCancelRequestedEventAttributes.wrap(buildAwsValue())
  }
  object ActivityTaskCancelRequestedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTaskCancelRequestedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTaskCancelRequestedEventAttributes = ActivityTaskCancelRequestedEventAttributes(decisionTaskCompletedEventIdValue, activityIdValue)
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def activityIdValue: primitives.ActivityId
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def activityId: ZIO[Any, Nothing, primitives.ActivityId] = ZIO.succeed(activityIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTaskCancelRequestedEventAttributes) extends ActivityTaskCancelRequestedEventAttributes.ReadOnly {
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def activityIdValue: primitives.ActivityId = impl.activityId(): primitives.ActivityId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTaskCancelRequestedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTaskCanceledEventAttributes(details: scala.Option[primitives.Data] = None, scheduledEventId: primitives.EventId, startedEventId: primitives.EventId, latestCancelRequestedEventId: scala.Option[primitives.EventId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTaskCanceledEventAttributes = {
      import ActivityTaskCanceledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTaskCanceledEventAttributes.builder().optionallyWith(details.map(value => value: java.lang.String))(_.details).scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).optionallyWith(latestCancelRequestedEventId.map(value => value: java.lang.Long))(_.latestCancelRequestedEventId).build()
    }
    def asReadOnly: ActivityTaskCanceledEventAttributes.ReadOnly = ActivityTaskCanceledEventAttributes.wrap(buildAwsValue())
  }
  object ActivityTaskCanceledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTaskCanceledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTaskCanceledEventAttributes = ActivityTaskCanceledEventAttributes(detailsValue.map(value => value), scheduledEventIdValue, startedEventIdValue, latestCancelRequestedEventIdValue.map(value => value))
      def detailsValue: scala.Option[primitives.Data]
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def latestCancelRequestedEventIdValue: scala.Option[primitives.EventId]
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def latestCancelRequestedEventId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestCancelRequestedEventId", latestCancelRequestedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTaskCanceledEventAttributes) extends ActivityTaskCanceledEventAttributes.ReadOnly {
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def latestCancelRequestedEventIdValue: scala.Option[primitives.EventId] = scala.Option(impl.latestCancelRequestedEventId()).map(value => value: primitives.EventId)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTaskCanceledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTaskCompletedEventAttributes(result: scala.Option[primitives.Data] = None, scheduledEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTaskCompletedEventAttributes = {
      import ActivityTaskCompletedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTaskCompletedEventAttributes.builder().optionallyWith(result.map(value => value: java.lang.String))(_.result).scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: ActivityTaskCompletedEventAttributes.ReadOnly = ActivityTaskCompletedEventAttributes.wrap(buildAwsValue())
  }
  object ActivityTaskCompletedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTaskCompletedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTaskCompletedEventAttributes = ActivityTaskCompletedEventAttributes(resultValue.map(value => value), scheduledEventIdValue, startedEventIdValue)
      def resultValue: scala.Option[primitives.Data]
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def result: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("result", resultValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTaskCompletedEventAttributes) extends ActivityTaskCompletedEventAttributes.ReadOnly {
      override def resultValue: scala.Option[primitives.Data] = scala.Option(impl.result()).map(value => value: primitives.Data)
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTaskCompletedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTaskFailedEventAttributes(reason: scala.Option[primitives.FailureReason] = None, details: scala.Option[primitives.Data] = None, scheduledEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTaskFailedEventAttributes = {
      import ActivityTaskFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTaskFailedEventAttributes.builder().optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: ActivityTaskFailedEventAttributes.ReadOnly = ActivityTaskFailedEventAttributes.wrap(buildAwsValue())
  }
  object ActivityTaskFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTaskFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTaskFailedEventAttributes = ActivityTaskFailedEventAttributes(reasonValue.map(value => value), detailsValue.map(value => value), scheduledEventIdValue, startedEventIdValue)
      def reasonValue: scala.Option[primitives.FailureReason]
      def detailsValue: scala.Option[primitives.Data]
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTaskFailedEventAttributes) extends ActivityTaskFailedEventAttributes.ReadOnly {
      override def reasonValue: scala.Option[primitives.FailureReason] = scala.Option(impl.reason()).map(value => value: primitives.FailureReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTaskFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTaskScheduledEventAttributes(activityType: ActivityType, activityId: primitives.ActivityId, input: scala.Option[primitives.Data] = None, control: scala.Option[primitives.Data] = None, scheduleToStartTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, scheduleToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, startToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, taskList: TaskList, taskPriority: scala.Option[primitives.TaskPriority] = None, decisionTaskCompletedEventId: primitives.EventId, heartbeatTimeout: scala.Option[primitives.DurationInSecondsOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTaskScheduledEventAttributes = {
      import ActivityTaskScheduledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTaskScheduledEventAttributes.builder().activityType(activityType.buildAwsValue()).activityId(activityId: java.lang.String).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(control.map(value => value: java.lang.String))(_.control).optionallyWith(scheduleToStartTimeout.map(value => value: java.lang.String))(_.scheduleToStartTimeout).optionallyWith(scheduleToCloseTimeout.map(value => value: java.lang.String))(_.scheduleToCloseTimeout).optionallyWith(startToCloseTimeout.map(value => value: java.lang.String))(_.startToCloseTimeout).taskList(taskList.buildAwsValue()).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).optionallyWith(heartbeatTimeout.map(value => value: java.lang.String))(_.heartbeatTimeout).build()
    }
    def asReadOnly: ActivityTaskScheduledEventAttributes.ReadOnly = ActivityTaskScheduledEventAttributes.wrap(buildAwsValue())
  }
  object ActivityTaskScheduledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTaskScheduledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTaskScheduledEventAttributes = ActivityTaskScheduledEventAttributes(activityTypeValue.editable, activityIdValue, inputValue.map(value => value), controlValue.map(value => value), scheduleToStartTimeoutValue.map(value => value), scheduleToCloseTimeoutValue.map(value => value), startToCloseTimeoutValue.map(value => value), taskListValue.editable, taskPriorityValue.map(value => value), decisionTaskCompletedEventIdValue, heartbeatTimeoutValue.map(value => value))
      def activityTypeValue: ActivityType.ReadOnly
      def activityIdValue: primitives.ActivityId
      def inputValue: scala.Option[primitives.Data]
      def controlValue: scala.Option[primitives.Data]
      def scheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def scheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskListValue: TaskList.ReadOnly
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def heartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
      def activityId: ZIO[Any, Nothing, primitives.ActivityId] = ZIO.succeed(activityIdValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def scheduleToStartTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleToStartTimeout", scheduleToStartTimeoutValue)
      def scheduleToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleToCloseTimeout", scheduleToCloseTimeoutValue)
      def startToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startToCloseTimeout", startToCloseTimeoutValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def heartbeatTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("heartbeatTimeout", heartbeatTimeoutValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTaskScheduledEventAttributes) extends ActivityTaskScheduledEventAttributes.ReadOnly {
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
      override def activityIdValue: primitives.ActivityId = impl.activityId(): primitives.ActivityId
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def scheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.scheduleToStartTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def scheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.scheduleToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.startToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def heartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.heartbeatTimeout()).map(value => value: primitives.DurationInSecondsOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTaskScheduledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTaskStartedEventAttributes(identity: scala.Option[primitives.Identity] = None, scheduledEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTaskStartedEventAttributes = {
      import ActivityTaskStartedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTaskStartedEventAttributes.builder().optionallyWith(identity.map(value => value: java.lang.String))(_.identity).scheduledEventId(scheduledEventId: java.lang.Long).build()
    }
    def asReadOnly: ActivityTaskStartedEventAttributes.ReadOnly = ActivityTaskStartedEventAttributes.wrap(buildAwsValue())
  }
  object ActivityTaskStartedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTaskStartedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTaskStartedEventAttributes = ActivityTaskStartedEventAttributes(identityValue.map(value => value), scheduledEventIdValue)
      def identityValue: scala.Option[primitives.Identity]
      def scheduledEventIdValue: primitives.EventId
      def identity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Identity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("identity", identityValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTaskStartedEventAttributes) extends ActivityTaskStartedEventAttributes.ReadOnly {
      override def identityValue: scala.Option[primitives.Identity] = scala.Option(impl.identity()).map(value => value: primitives.Identity)
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTaskStartedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTaskTimedOutEventAttributes(timeoutType: ActivityTaskTimeoutType, scheduledEventId: primitives.EventId, startedEventId: primitives.EventId, details: scala.Option[primitives.LimitedData] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTaskTimedOutEventAttributes = {
      import ActivityTaskTimedOutEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTaskTimedOutEventAttributes.builder().timeoutType(timeoutType.unwrap).scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: ActivityTaskTimedOutEventAttributes.ReadOnly = ActivityTaskTimedOutEventAttributes.wrap(buildAwsValue())
  }
  object ActivityTaskTimedOutEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTaskTimedOutEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTaskTimedOutEventAttributes = ActivityTaskTimedOutEventAttributes(timeoutTypeValue, scheduledEventIdValue, startedEventIdValue, detailsValue.map(value => value))
      def timeoutTypeValue: ActivityTaskTimeoutType
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def detailsValue: scala.Option[primitives.LimitedData]
      def timeoutType: ZIO[Any, Nothing, ActivityTaskTimeoutType] = ZIO.succeed(timeoutTypeValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.LimitedData] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTaskTimedOutEventAttributes) extends ActivityTaskTimedOutEventAttributes.ReadOnly {
      override def timeoutTypeValue: ActivityTaskTimeoutType = ActivityTaskTimeoutType.wrap(impl.timeoutType())
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def detailsValue: scala.Option[primitives.LimitedData] = scala.Option(impl.details()).map(value => value: primitives.LimitedData)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTaskTimedOutEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait ActivityTaskTimeoutType { def unwrap: software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType }
  object ActivityTaskTimeoutType {
    def wrap(value: software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType): ActivityTaskTimeoutType = value match {
      case software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.START_TO_CLOSE => START_TO_CLOSE
      case software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.SCHEDULE_TO_START => SCHEDULE_TO_START
      case software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.SCHEDULE_TO_CLOSE => SCHEDULE_TO_CLOSE
      case software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.HEARTBEAT => HEARTBEAT
    }
    final case object unknownToSdkVersion extends ActivityTaskTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType = software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.UNKNOWN_TO_SDK_VERSION }
    final case object START_TO_CLOSE extends ActivityTaskTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType = software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.START_TO_CLOSE }
    final case object SCHEDULE_TO_START extends ActivityTaskTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType = software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.SCHEDULE_TO_START }
    final case object SCHEDULE_TO_CLOSE extends ActivityTaskTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType = software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.SCHEDULE_TO_CLOSE }
    final case object HEARTBEAT extends ActivityTaskTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType = software.amazon.awssdk.services.swf.model.ActivityTaskTimeoutType.HEARTBEAT }
  }
  case class ActivityType(name: primitives.Name, version: primitives.Version) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityType = {
      import ActivityType.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityType.builder().name(name: java.lang.String).version(version: java.lang.String).build()
    }
    def asReadOnly: ActivityType.ReadOnly = ActivityType.wrap(buildAwsValue())
  }
  object ActivityType {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityType] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityType = ActivityType(nameValue, versionValue)
      def nameValue: primitives.Name
      def versionValue: primitives.Version
      def name: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(nameValue)
      def version: ZIO[Any, Nothing, primitives.Version] = ZIO.succeed(versionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityType) extends ActivityType.ReadOnly {
      override def nameValue: primitives.Name = impl.name(): primitives.Name
      override def versionValue: primitives.Version = impl.version(): primitives.Version
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityType): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTypeConfiguration(defaultTaskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskHeartbeatTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskList: scala.Option[TaskList] = None, defaultTaskPriority: scala.Option[primitives.TaskPriority] = None, defaultTaskScheduleToStartTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskScheduleToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTypeConfiguration = {
      import ActivityTypeConfiguration.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTypeConfiguration.builder().optionallyWith(defaultTaskStartToCloseTimeout.map(value => value: java.lang.String))(_.defaultTaskStartToCloseTimeout).optionallyWith(defaultTaskHeartbeatTimeout.map(value => value: java.lang.String))(_.defaultTaskHeartbeatTimeout).optionallyWith(defaultTaskList.map(value => value.buildAwsValue()))(_.defaultTaskList).optionallyWith(defaultTaskPriority.map(value => value: java.lang.String))(_.defaultTaskPriority).optionallyWith(defaultTaskScheduleToStartTimeout.map(value => value: java.lang.String))(_.defaultTaskScheduleToStartTimeout).optionallyWith(defaultTaskScheduleToCloseTimeout.map(value => value: java.lang.String))(_.defaultTaskScheduleToCloseTimeout).build()
    }
    def asReadOnly: ActivityTypeConfiguration.ReadOnly = ActivityTypeConfiguration.wrap(buildAwsValue())
  }
  object ActivityTypeConfiguration {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTypeConfiguration] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTypeConfiguration = ActivityTypeConfiguration(defaultTaskStartToCloseTimeoutValue.map(value => value), defaultTaskHeartbeatTimeoutValue.map(value => value), defaultTaskListValue.map(value => value.editable), defaultTaskPriorityValue.map(value => value), defaultTaskScheduleToStartTimeoutValue.map(value => value), defaultTaskScheduleToCloseTimeoutValue.map(value => value))
      def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskHeartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskListValue: scala.Option[TaskList.ReadOnly]
      def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority]
      def defaultTaskScheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskScheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskStartToCloseTimeout", defaultTaskStartToCloseTimeoutValue)
      def defaultTaskHeartbeatTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskHeartbeatTimeout", defaultTaskHeartbeatTimeoutValue)
      def defaultTaskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskList", defaultTaskListValue)
      def defaultTaskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskPriority", defaultTaskPriorityValue)
      def defaultTaskScheduleToStartTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskScheduleToStartTimeout", defaultTaskScheduleToStartTimeoutValue)
      def defaultTaskScheduleToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskScheduleToCloseTimeout", defaultTaskScheduleToCloseTimeoutValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTypeConfiguration) extends ActivityTypeConfiguration.ReadOnly {
      override def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskHeartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskHeartbeatTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.defaultTaskList()).map(value => TaskList.wrap(value))
      override def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.defaultTaskPriority()).map(value => value: primitives.TaskPriority)
      override def defaultTaskScheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskScheduleToStartTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskScheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskScheduleToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTypeConfiguration): ReadOnly = new Wrapper(impl)
  }
  case class ActivityTypeInfo(activityType: ActivityType, status: RegistrationStatus, description: scala.Option[primitives.Description] = None, creationDate: primitives.Timestamp, deprecationDate: scala.Option[primitives.Timestamp] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ActivityTypeInfo = {
      import ActivityTypeInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ActivityTypeInfo.builder().activityType(activityType.buildAwsValue()).status(status.unwrap).optionallyWith(description.map(value => value: java.lang.String))(_.description).creationDate(creationDate: java.time.Instant).optionallyWith(deprecationDate.map(value => value: java.time.Instant))(_.deprecationDate).build()
    }
    def asReadOnly: ActivityTypeInfo.ReadOnly = ActivityTypeInfo.wrap(buildAwsValue())
  }
  object ActivityTypeInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ActivityTypeInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ActivityTypeInfo = ActivityTypeInfo(activityTypeValue.editable, statusValue, descriptionValue.map(value => value), creationDateValue, deprecationDateValue.map(value => value))
      def activityTypeValue: ActivityType.ReadOnly
      def statusValue: RegistrationStatus
      def descriptionValue: scala.Option[primitives.Description]
      def creationDateValue: primitives.Timestamp
      def deprecationDateValue: scala.Option[primitives.Timestamp]
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
      def status: ZIO[Any, Nothing, RegistrationStatus] = ZIO.succeed(statusValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Description] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def creationDate: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(creationDateValue)
      def deprecationDate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Timestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("deprecationDate", deprecationDateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ActivityTypeInfo) extends ActivityTypeInfo.ReadOnly {
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
      override def statusValue: RegistrationStatus = RegistrationStatus.wrap(impl.status())
      override def descriptionValue: scala.Option[primitives.Description] = scala.Option(impl.description()).map(value => value: primitives.Description)
      override def creationDateValue: primitives.Timestamp = impl.creationDate(): primitives.Timestamp
      override def deprecationDateValue: scala.Option[primitives.Timestamp] = scala.Option(impl.deprecationDate()).map(value => value: primitives.Timestamp)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ActivityTypeInfo): ReadOnly = new Wrapper(impl)
  }
  type ActivityTypeInfoList = List[ActivityTypeInfo]
  case class CancelTimerDecisionAttributes(timerId: primitives.TimerId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CancelTimerDecisionAttributes = {
      import CancelTimerDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CancelTimerDecisionAttributes.builder().timerId(timerId: java.lang.String).build()
    }
    def asReadOnly: CancelTimerDecisionAttributes.ReadOnly = CancelTimerDecisionAttributes.wrap(buildAwsValue())
  }
  object CancelTimerDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CancelTimerDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CancelTimerDecisionAttributes = CancelTimerDecisionAttributes(timerIdValue)
      def timerIdValue: primitives.TimerId
      def timerId: ZIO[Any, Nothing, primitives.TimerId] = ZIO.succeed(timerIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CancelTimerDecisionAttributes) extends CancelTimerDecisionAttributes.ReadOnly { override def timerIdValue: primitives.TimerId = impl.timerId(): primitives.TimerId }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CancelTimerDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait CancelTimerFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.CancelTimerFailedCause }
  object CancelTimerFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.CancelTimerFailedCause): CancelTimerFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.CancelTimerFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.CancelTimerFailedCause.TIMER_ID_UNKNOWN => TIMER_ID_UNKNOWN
      case software.amazon.awssdk.services.swf.model.CancelTimerFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends CancelTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CancelTimerFailedCause = software.amazon.awssdk.services.swf.model.CancelTimerFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object TIMER_ID_UNKNOWN extends CancelTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CancelTimerFailedCause = software.amazon.awssdk.services.swf.model.CancelTimerFailedCause.TIMER_ID_UNKNOWN }
    final case object OPERATION_NOT_PERMITTED extends CancelTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CancelTimerFailedCause = software.amazon.awssdk.services.swf.model.CancelTimerFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class CancelTimerFailedEventAttributes(timerId: primitives.TimerId, cause: CancelTimerFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CancelTimerFailedEventAttributes = {
      import CancelTimerFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CancelTimerFailedEventAttributes.builder().timerId(timerId: java.lang.String).cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: CancelTimerFailedEventAttributes.ReadOnly = CancelTimerFailedEventAttributes.wrap(buildAwsValue())
  }
  object CancelTimerFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CancelTimerFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CancelTimerFailedEventAttributes = CancelTimerFailedEventAttributes(timerIdValue, causeValue, decisionTaskCompletedEventIdValue)
      def timerIdValue: primitives.TimerId
      def causeValue: CancelTimerFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def timerId: ZIO[Any, Nothing, primitives.TimerId] = ZIO.succeed(timerIdValue)
      def cause: ZIO[Any, Nothing, CancelTimerFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CancelTimerFailedEventAttributes) extends CancelTimerFailedEventAttributes.ReadOnly {
      override def timerIdValue: primitives.TimerId = impl.timerId(): primitives.TimerId
      override def causeValue: CancelTimerFailedCause = CancelTimerFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CancelTimerFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class CancelWorkflowExecutionDecisionAttributes(details: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionDecisionAttributes = {
      import CancelWorkflowExecutionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionDecisionAttributes.builder().optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: CancelWorkflowExecutionDecisionAttributes.ReadOnly = CancelWorkflowExecutionDecisionAttributes.wrap(buildAwsValue())
  }
  object CancelWorkflowExecutionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CancelWorkflowExecutionDecisionAttributes = CancelWorkflowExecutionDecisionAttributes(detailsValue.map(value => value))
      def detailsValue: scala.Option[primitives.Data]
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionDecisionAttributes) extends CancelWorkflowExecutionDecisionAttributes.ReadOnly { override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data) }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait CancelWorkflowExecutionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause }
  object CancelWorkflowExecutionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause): CancelWorkflowExecutionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause.UNHANDLED_DECISION => UNHANDLED_DECISION
      case software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends CancelWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object UNHANDLED_DECISION extends CancelWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause.UNHANDLED_DECISION }
    final case object OPERATION_NOT_PERMITTED extends CancelWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class CancelWorkflowExecutionFailedEventAttributes(cause: CancelWorkflowExecutionFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedEventAttributes = {
      import CancelWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedEventAttributes.builder().cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: CancelWorkflowExecutionFailedEventAttributes.ReadOnly = CancelWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object CancelWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CancelWorkflowExecutionFailedEventAttributes = CancelWorkflowExecutionFailedEventAttributes(causeValue, decisionTaskCompletedEventIdValue)
      def causeValue: CancelWorkflowExecutionFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def cause: ZIO[Any, Nothing, CancelWorkflowExecutionFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedEventAttributes) extends CancelWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def causeValue: CancelWorkflowExecutionFailedCause = CancelWorkflowExecutionFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CancelWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait ChildPolicy { def unwrap: software.amazon.awssdk.services.swf.model.ChildPolicy }
  object ChildPolicy {
    def wrap(value: software.amazon.awssdk.services.swf.model.ChildPolicy): ChildPolicy = value match {
      case software.amazon.awssdk.services.swf.model.ChildPolicy.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.ChildPolicy.TERMINATE => TERMINATE
      case software.amazon.awssdk.services.swf.model.ChildPolicy.REQUEST_CANCEL => REQUEST_CANCEL
      case software.amazon.awssdk.services.swf.model.ChildPolicy.ABANDON => ABANDON
    }
    final case object unknownToSdkVersion extends ChildPolicy { override def unwrap: software.amazon.awssdk.services.swf.model.ChildPolicy = software.amazon.awssdk.services.swf.model.ChildPolicy.UNKNOWN_TO_SDK_VERSION }
    final case object TERMINATE extends ChildPolicy { override def unwrap: software.amazon.awssdk.services.swf.model.ChildPolicy = software.amazon.awssdk.services.swf.model.ChildPolicy.TERMINATE }
    final case object REQUEST_CANCEL extends ChildPolicy { override def unwrap: software.amazon.awssdk.services.swf.model.ChildPolicy = software.amazon.awssdk.services.swf.model.ChildPolicy.REQUEST_CANCEL }
    final case object ABANDON extends ChildPolicy { override def unwrap: software.amazon.awssdk.services.swf.model.ChildPolicy = software.amazon.awssdk.services.swf.model.ChildPolicy.ABANDON }
  }
  case class ChildWorkflowExecutionCanceledEventAttributes(workflowExecution: WorkflowExecution, workflowType: WorkflowType, details: scala.Option[primitives.Data] = None, initiatedEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCanceledEventAttributes = {
      import ChildWorkflowExecutionCanceledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCanceledEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).optionallyWith(details.map(value => value: java.lang.String))(_.details).initiatedEventId(initiatedEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: ChildWorkflowExecutionCanceledEventAttributes.ReadOnly = ChildWorkflowExecutionCanceledEventAttributes.wrap(buildAwsValue())
  }
  object ChildWorkflowExecutionCanceledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCanceledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ChildWorkflowExecutionCanceledEventAttributes = ChildWorkflowExecutionCanceledEventAttributes(workflowExecutionValue.editable, workflowTypeValue.editable, detailsValue.map(value => value), initiatedEventIdValue, startedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def detailsValue: scala.Option[primitives.Data]
      def initiatedEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCanceledEventAttributes) extends ChildWorkflowExecutionCanceledEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCanceledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ChildWorkflowExecutionCompletedEventAttributes(workflowExecution: WorkflowExecution, workflowType: WorkflowType, result: scala.Option[primitives.Data] = None, initiatedEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCompletedEventAttributes = {
      import ChildWorkflowExecutionCompletedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCompletedEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).optionallyWith(result.map(value => value: java.lang.String))(_.result).initiatedEventId(initiatedEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: ChildWorkflowExecutionCompletedEventAttributes.ReadOnly = ChildWorkflowExecutionCompletedEventAttributes.wrap(buildAwsValue())
  }
  object ChildWorkflowExecutionCompletedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCompletedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ChildWorkflowExecutionCompletedEventAttributes = ChildWorkflowExecutionCompletedEventAttributes(workflowExecutionValue.editable, workflowTypeValue.editable, resultValue.map(value => value), initiatedEventIdValue, startedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def resultValue: scala.Option[primitives.Data]
      def initiatedEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def result: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("result", resultValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCompletedEventAttributes) extends ChildWorkflowExecutionCompletedEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def resultValue: scala.Option[primitives.Data] = scala.Option(impl.result()).map(value => value: primitives.Data)
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionCompletedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ChildWorkflowExecutionFailedEventAttributes(workflowExecution: WorkflowExecution, workflowType: WorkflowType, reason: scala.Option[primitives.FailureReason] = None, details: scala.Option[primitives.Data] = None, initiatedEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionFailedEventAttributes = {
      import ChildWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionFailedEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).initiatedEventId(initiatedEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: ChildWorkflowExecutionFailedEventAttributes.ReadOnly = ChildWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object ChildWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ChildWorkflowExecutionFailedEventAttributes = ChildWorkflowExecutionFailedEventAttributes(workflowExecutionValue.editable, workflowTypeValue.editable, reasonValue.map(value => value), detailsValue.map(value => value), initiatedEventIdValue, startedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def reasonValue: scala.Option[primitives.FailureReason]
      def detailsValue: scala.Option[primitives.Data]
      def initiatedEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionFailedEventAttributes) extends ChildWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def reasonValue: scala.Option[primitives.FailureReason] = scala.Option(impl.reason()).map(value => value: primitives.FailureReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ChildWorkflowExecutionStartedEventAttributes(workflowExecution: WorkflowExecution, workflowType: WorkflowType, initiatedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionStartedEventAttributes = {
      import ChildWorkflowExecutionStartedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionStartedEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).initiatedEventId(initiatedEventId: java.lang.Long).build()
    }
    def asReadOnly: ChildWorkflowExecutionStartedEventAttributes.ReadOnly = ChildWorkflowExecutionStartedEventAttributes.wrap(buildAwsValue())
  }
  object ChildWorkflowExecutionStartedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionStartedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ChildWorkflowExecutionStartedEventAttributes = ChildWorkflowExecutionStartedEventAttributes(workflowExecutionValue.editable, workflowTypeValue.editable, initiatedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def initiatedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionStartedEventAttributes) extends ChildWorkflowExecutionStartedEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionStartedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ChildWorkflowExecutionTerminatedEventAttributes(workflowExecution: WorkflowExecution, workflowType: WorkflowType, initiatedEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTerminatedEventAttributes = {
      import ChildWorkflowExecutionTerminatedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTerminatedEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).initiatedEventId(initiatedEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: ChildWorkflowExecutionTerminatedEventAttributes.ReadOnly = ChildWorkflowExecutionTerminatedEventAttributes.wrap(buildAwsValue())
  }
  object ChildWorkflowExecutionTerminatedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTerminatedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ChildWorkflowExecutionTerminatedEventAttributes = ChildWorkflowExecutionTerminatedEventAttributes(workflowExecutionValue.editable, workflowTypeValue.editable, initiatedEventIdValue, startedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def initiatedEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTerminatedEventAttributes) extends ChildWorkflowExecutionTerminatedEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTerminatedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ChildWorkflowExecutionTimedOutEventAttributes(workflowExecution: WorkflowExecution, workflowType: WorkflowType, timeoutType: WorkflowExecutionTimeoutType, initiatedEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTimedOutEventAttributes = {
      import ChildWorkflowExecutionTimedOutEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTimedOutEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).timeoutType(timeoutType.unwrap).initiatedEventId(initiatedEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: ChildWorkflowExecutionTimedOutEventAttributes.ReadOnly = ChildWorkflowExecutionTimedOutEventAttributes.wrap(buildAwsValue())
  }
  object ChildWorkflowExecutionTimedOutEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTimedOutEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ChildWorkflowExecutionTimedOutEventAttributes = ChildWorkflowExecutionTimedOutEventAttributes(workflowExecutionValue.editable, workflowTypeValue.editable, timeoutTypeValue, initiatedEventIdValue, startedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def timeoutTypeValue: WorkflowExecutionTimeoutType
      def initiatedEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def timeoutType: ZIO[Any, Nothing, WorkflowExecutionTimeoutType] = ZIO.succeed(timeoutTypeValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTimedOutEventAttributes) extends ChildWorkflowExecutionTimedOutEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def timeoutTypeValue: WorkflowExecutionTimeoutType = WorkflowExecutionTimeoutType.wrap(impl.timeoutType())
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ChildWorkflowExecutionTimedOutEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait CloseStatus { def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus }
  object CloseStatus {
    def wrap(value: software.amazon.awssdk.services.swf.model.CloseStatus): CloseStatus = value match {
      case software.amazon.awssdk.services.swf.model.CloseStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.CloseStatus.COMPLETED => COMPLETED
      case software.amazon.awssdk.services.swf.model.CloseStatus.FAILED => FAILED
      case software.amazon.awssdk.services.swf.model.CloseStatus.CANCELED => CANCELED
      case software.amazon.awssdk.services.swf.model.CloseStatus.TERMINATED => TERMINATED
      case software.amazon.awssdk.services.swf.model.CloseStatus.CONTINUED_AS_NEW => CONTINUED_AS_NEW
      case software.amazon.awssdk.services.swf.model.CloseStatus.TIMED_OUT => TIMED_OUT
    }
    final case object unknownToSdkVersion extends CloseStatus { override def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus = software.amazon.awssdk.services.swf.model.CloseStatus.UNKNOWN_TO_SDK_VERSION }
    final case object COMPLETED extends CloseStatus { override def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus = software.amazon.awssdk.services.swf.model.CloseStatus.COMPLETED }
    final case object FAILED extends CloseStatus { override def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus = software.amazon.awssdk.services.swf.model.CloseStatus.FAILED }
    final case object CANCELED extends CloseStatus { override def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus = software.amazon.awssdk.services.swf.model.CloseStatus.CANCELED }
    final case object TERMINATED extends CloseStatus { override def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus = software.amazon.awssdk.services.swf.model.CloseStatus.TERMINATED }
    final case object CONTINUED_AS_NEW extends CloseStatus { override def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus = software.amazon.awssdk.services.swf.model.CloseStatus.CONTINUED_AS_NEW }
    final case object TIMED_OUT extends CloseStatus { override def unwrap: software.amazon.awssdk.services.swf.model.CloseStatus = software.amazon.awssdk.services.swf.model.CloseStatus.TIMED_OUT }
  }
  case class CloseStatusFilter(status: CloseStatus) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CloseStatusFilter = {
      import CloseStatusFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CloseStatusFilter.builder().status(status.unwrap).build()
    }
    def asReadOnly: CloseStatusFilter.ReadOnly = CloseStatusFilter.wrap(buildAwsValue())
  }
  object CloseStatusFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CloseStatusFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CloseStatusFilter = CloseStatusFilter(statusValue)
      def statusValue: CloseStatus
      def status: ZIO[Any, Nothing, CloseStatus] = ZIO.succeed(statusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CloseStatusFilter) extends CloseStatusFilter.ReadOnly { override def statusValue: CloseStatus = CloseStatus.wrap(impl.status()) }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CloseStatusFilter): ReadOnly = new Wrapper(impl)
  }
  case class CompleteWorkflowExecutionDecisionAttributes(result: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionDecisionAttributes = {
      import CompleteWorkflowExecutionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionDecisionAttributes.builder().optionallyWith(result.map(value => value: java.lang.String))(_.result).build()
    }
    def asReadOnly: CompleteWorkflowExecutionDecisionAttributes.ReadOnly = CompleteWorkflowExecutionDecisionAttributes.wrap(buildAwsValue())
  }
  object CompleteWorkflowExecutionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CompleteWorkflowExecutionDecisionAttributes = CompleteWorkflowExecutionDecisionAttributes(resultValue.map(value => value))
      def resultValue: scala.Option[primitives.Data]
      def result: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("result", resultValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionDecisionAttributes) extends CompleteWorkflowExecutionDecisionAttributes.ReadOnly { override def resultValue: scala.Option[primitives.Data] = scala.Option(impl.result()).map(value => value: primitives.Data) }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait CompleteWorkflowExecutionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause }
  object CompleteWorkflowExecutionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause): CompleteWorkflowExecutionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause.UNHANDLED_DECISION => UNHANDLED_DECISION
      case software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends CompleteWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object UNHANDLED_DECISION extends CompleteWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause.UNHANDLED_DECISION }
    final case object OPERATION_NOT_PERMITTED extends CompleteWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class CompleteWorkflowExecutionFailedEventAttributes(cause: CompleteWorkflowExecutionFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedEventAttributes = {
      import CompleteWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedEventAttributes.builder().cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: CompleteWorkflowExecutionFailedEventAttributes.ReadOnly = CompleteWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object CompleteWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CompleteWorkflowExecutionFailedEventAttributes = CompleteWorkflowExecutionFailedEventAttributes(causeValue, decisionTaskCompletedEventIdValue)
      def causeValue: CompleteWorkflowExecutionFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def cause: ZIO[Any, Nothing, CompleteWorkflowExecutionFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedEventAttributes) extends CompleteWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def causeValue: CompleteWorkflowExecutionFailedCause = CompleteWorkflowExecutionFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CompleteWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ContinueAsNewWorkflowExecutionDecisionAttributes(input: scala.Option[primitives.Data] = None, executionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, taskList: scala.Option[TaskList] = None, taskPriority: scala.Option[primitives.TaskPriority] = None, taskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, childPolicy: scala.Option[ChildPolicy] = None, tagList: scala.Option[Iterable[primitives.Tag]] = None, workflowTypeVersion: scala.Option[primitives.Version] = None, lambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionDecisionAttributes = {
      import ContinueAsNewWorkflowExecutionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionDecisionAttributes.builder().optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(executionStartToCloseTimeout.map(value => value: java.lang.String))(_.executionStartToCloseTimeout).optionallyWith(taskList.map(value => value.buildAwsValue()))(_.taskList).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).optionallyWith(taskStartToCloseTimeout.map(value => value: java.lang.String))(_.taskStartToCloseTimeout).optionallyWith(childPolicy.map(value => value.unwrap))(_.childPolicy).optionallyWith(tagList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tagList).optionallyWith(workflowTypeVersion.map(value => value: java.lang.String))(_.workflowTypeVersion).optionallyWith(lambdaRole.map(value => value: java.lang.String))(_.lambdaRole).build()
    }
    def asReadOnly: ContinueAsNewWorkflowExecutionDecisionAttributes.ReadOnly = ContinueAsNewWorkflowExecutionDecisionAttributes.wrap(buildAwsValue())
  }
  object ContinueAsNewWorkflowExecutionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContinueAsNewWorkflowExecutionDecisionAttributes = ContinueAsNewWorkflowExecutionDecisionAttributes(inputValue.map(value => value), executionStartToCloseTimeoutValue.map(value => value), taskListValue.map(value => value.editable), taskPriorityValue.map(value => value), taskStartToCloseTimeoutValue.map(value => value), childPolicyValue.map(value => value), tagListValue.map(value => value), workflowTypeVersionValue.map(value => value), lambdaRoleValue.map(value => value))
      def inputValue: scala.Option[primitives.Data]
      def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskListValue: scala.Option[TaskList.ReadOnly]
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def childPolicyValue: scala.Option[ChildPolicy]
      def tagListValue: scala.Option[List[primitives.Tag]]
      def workflowTypeVersionValue: scala.Option[primitives.Version]
      def lambdaRoleValue: scala.Option[primitives.Arn]
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def executionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionStartToCloseTimeout", executionStartToCloseTimeoutValue)
      def taskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskList", taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def taskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskStartToCloseTimeout", taskStartToCloseTimeoutValue)
      def childPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildPolicy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childPolicy", childPolicyValue)
      def tagList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Tag]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagList", tagListValue)
      def workflowTypeVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Version] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowTypeVersion", workflowTypeVersionValue)
      def lambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaRole", lambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionDecisionAttributes) extends ContinueAsNewWorkflowExecutionDecisionAttributes.ReadOnly {
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.executionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def taskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.taskList()).map(value => TaskList.wrap(value))
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.taskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def childPolicyValue: scala.Option[ChildPolicy] = scala.Option(impl.childPolicy()).map(value => ChildPolicy.wrap(value))
      override def tagListValue: scala.Option[List[primitives.Tag]] = scala.Option(impl.tagList()).map(value => value.asScala.map { item => 
        item: primitives.Tag
      }.toList)
      override def workflowTypeVersionValue: scala.Option[primitives.Version] = scala.Option(impl.workflowTypeVersion()).map(value => value: primitives.Version)
      override def lambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.lambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait ContinueAsNewWorkflowExecutionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause }
  object ContinueAsNewWorkflowExecutionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause): ContinueAsNewWorkflowExecutionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.UNHANDLED_DECISION => UNHANDLED_DECISION
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.WORKFLOW_TYPE_DEPRECATED => WORKFLOW_TYPE_DEPRECATED
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.WORKFLOW_TYPE_DOES_NOT_EXIST => WORKFLOW_TYPE_DOES_NOT_EXIST
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED => DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED => DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_TASK_LIST_UNDEFINED => DEFAULT_TASK_LIST_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_CHILD_POLICY_UNDEFINED => DEFAULT_CHILD_POLICY_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.CONTINUE_AS_NEW_WORKFLOW_EXECUTION_RATE_EXCEEDED => CONTINUE_AS_NEW_WORKFLOW_EXECUTION_RATE_EXCEEDED
      case software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object UNHANDLED_DECISION extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.UNHANDLED_DECISION }
    final case object WORKFLOW_TYPE_DEPRECATED extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.WORKFLOW_TYPE_DEPRECATED }
    final case object WORKFLOW_TYPE_DOES_NOT_EXIST extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.WORKFLOW_TYPE_DOES_NOT_EXIST }
    final case object DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED }
    final case object DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED }
    final case object DEFAULT_TASK_LIST_UNDEFINED extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_TASK_LIST_UNDEFINED }
    final case object DEFAULT_CHILD_POLICY_UNDEFINED extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.DEFAULT_CHILD_POLICY_UNDEFINED }
    final case object CONTINUE_AS_NEW_WORKFLOW_EXECUTION_RATE_EXCEEDED extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.CONTINUE_AS_NEW_WORKFLOW_EXECUTION_RATE_EXCEEDED }
    final case object OPERATION_NOT_PERMITTED extends ContinueAsNewWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class ContinueAsNewWorkflowExecutionFailedEventAttributes(cause: ContinueAsNewWorkflowExecutionFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedEventAttributes = {
      import ContinueAsNewWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedEventAttributes.builder().cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: ContinueAsNewWorkflowExecutionFailedEventAttributes.ReadOnly = ContinueAsNewWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object ContinueAsNewWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ContinueAsNewWorkflowExecutionFailedEventAttributes = ContinueAsNewWorkflowExecutionFailedEventAttributes(causeValue, decisionTaskCompletedEventIdValue)
      def causeValue: ContinueAsNewWorkflowExecutionFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def cause: ZIO[Any, Nothing, ContinueAsNewWorkflowExecutionFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedEventAttributes) extends ContinueAsNewWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def causeValue: ContinueAsNewWorkflowExecutionFailedCause = ContinueAsNewWorkflowExecutionFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ContinueAsNewWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class CountClosedWorkflowExecutionsRequest(domain: primitives.DomainName, startTimeFilter: scala.Option[ExecutionTimeFilter] = None, closeTimeFilter: scala.Option[ExecutionTimeFilter] = None, executionFilter: scala.Option[WorkflowExecutionFilter] = None, typeFilter: scala.Option[WorkflowTypeFilter] = None, tagFilter: scala.Option[TagFilter] = None, closeStatusFilter: scala.Option[CloseStatusFilter] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsRequest = {
      import CountClosedWorkflowExecutionsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsRequest.builder().domain(domain: java.lang.String).optionallyWith(startTimeFilter.map(value => value.buildAwsValue()))(_.startTimeFilter).optionallyWith(closeTimeFilter.map(value => value.buildAwsValue()))(_.closeTimeFilter).optionallyWith(executionFilter.map(value => value.buildAwsValue()))(_.executionFilter).optionallyWith(typeFilter.map(value => value.buildAwsValue()))(_.typeFilter).optionallyWith(tagFilter.map(value => value.buildAwsValue()))(_.tagFilter).optionallyWith(closeStatusFilter.map(value => value.buildAwsValue()))(_.closeStatusFilter).build()
    }
    def asReadOnly: CountClosedWorkflowExecutionsRequest.ReadOnly = CountClosedWorkflowExecutionsRequest.wrap(buildAwsValue())
  }
  object CountClosedWorkflowExecutionsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountClosedWorkflowExecutionsRequest = CountClosedWorkflowExecutionsRequest(domainValue, startTimeFilterValue.map(value => value.editable), closeTimeFilterValue.map(value => value.editable), executionFilterValue.map(value => value.editable), typeFilterValue.map(value => value.editable), tagFilterValue.map(value => value.editable), closeStatusFilterValue.map(value => value.editable))
      def domainValue: primitives.DomainName
      def startTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly]
      def closeTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly]
      def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly]
      def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly]
      def tagFilterValue: scala.Option[TagFilter.ReadOnly]
      def closeStatusFilterValue: scala.Option[CloseStatusFilter.ReadOnly]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def startTimeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionTimeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startTimeFilter", startTimeFilterValue)
      def closeTimeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionTimeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("closeTimeFilter", closeTimeFilterValue)
      def executionFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionFilter", executionFilterValue)
      def typeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowTypeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("typeFilter", typeFilterValue)
      def tagFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TagFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagFilter", tagFilterValue)
      def closeStatusFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CloseStatusFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("closeStatusFilter", closeStatusFilterValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsRequest) extends CountClosedWorkflowExecutionsRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def startTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly] = scala.Option(impl.startTimeFilter()).map(value => ExecutionTimeFilter.wrap(value))
      override def closeTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly] = scala.Option(impl.closeTimeFilter()).map(value => ExecutionTimeFilter.wrap(value))
      override def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly] = scala.Option(impl.executionFilter()).map(value => WorkflowExecutionFilter.wrap(value))
      override def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly] = scala.Option(impl.typeFilter()).map(value => WorkflowTypeFilter.wrap(value))
      override def tagFilterValue: scala.Option[TagFilter.ReadOnly] = scala.Option(impl.tagFilter()).map(value => TagFilter.wrap(value))
      override def closeStatusFilterValue: scala.Option[CloseStatusFilter.ReadOnly] = scala.Option(impl.closeStatusFilter()).map(value => CloseStatusFilter.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsRequest): ReadOnly = new Wrapper(impl)
  }
  case class CountClosedWorkflowExecutionsResponse(count: primitives.Count, truncated: scala.Option[primitives.Truncated] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsResponse = {
      import CountClosedWorkflowExecutionsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsResponse.builder().count(count: java.lang.Integer).optionallyWith(truncated.map(value => value: java.lang.Boolean))(_.truncated).build()
    }
    def asReadOnly: CountClosedWorkflowExecutionsResponse.ReadOnly = CountClosedWorkflowExecutionsResponse.wrap(buildAwsValue())
  }
  object CountClosedWorkflowExecutionsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountClosedWorkflowExecutionsResponse = CountClosedWorkflowExecutionsResponse(countValue, truncatedValue.map(value => value))
      def countValue: primitives.Count
      def truncatedValue: scala.Option[primitives.Truncated]
      def count: ZIO[Any, Nothing, primitives.Count] = ZIO.succeed(countValue)
      def truncated: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Truncated] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("truncated", truncatedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsResponse) extends CountClosedWorkflowExecutionsResponse.ReadOnly {
      override def countValue: primitives.Count = impl.count(): primitives.Count
      override def truncatedValue: scala.Option[primitives.Truncated] = scala.Option(impl.truncated()).map(value => value: primitives.Truncated)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsResponse): ReadOnly = new Wrapper(impl)
  }
  case class CountOpenWorkflowExecutionsRequest(domain: primitives.DomainName, startTimeFilter: ExecutionTimeFilter, typeFilter: scala.Option[WorkflowTypeFilter] = None, tagFilter: scala.Option[TagFilter] = None, executionFilter: scala.Option[WorkflowExecutionFilter] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsRequest = {
      import CountOpenWorkflowExecutionsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsRequest.builder().domain(domain: java.lang.String).startTimeFilter(startTimeFilter.buildAwsValue()).optionallyWith(typeFilter.map(value => value.buildAwsValue()))(_.typeFilter).optionallyWith(tagFilter.map(value => value.buildAwsValue()))(_.tagFilter).optionallyWith(executionFilter.map(value => value.buildAwsValue()))(_.executionFilter).build()
    }
    def asReadOnly: CountOpenWorkflowExecutionsRequest.ReadOnly = CountOpenWorkflowExecutionsRequest.wrap(buildAwsValue())
  }
  object CountOpenWorkflowExecutionsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountOpenWorkflowExecutionsRequest = CountOpenWorkflowExecutionsRequest(domainValue, startTimeFilterValue.editable, typeFilterValue.map(value => value.editable), tagFilterValue.map(value => value.editable), executionFilterValue.map(value => value.editable))
      def domainValue: primitives.DomainName
      def startTimeFilterValue: ExecutionTimeFilter.ReadOnly
      def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly]
      def tagFilterValue: scala.Option[TagFilter.ReadOnly]
      def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def startTimeFilter: ZIO[Any, Nothing, ExecutionTimeFilter.ReadOnly] = ZIO.succeed(startTimeFilterValue)
      def typeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowTypeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("typeFilter", typeFilterValue)
      def tagFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TagFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagFilter", tagFilterValue)
      def executionFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionFilter", executionFilterValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsRequest) extends CountOpenWorkflowExecutionsRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def startTimeFilterValue: ExecutionTimeFilter.ReadOnly = ExecutionTimeFilter.wrap(impl.startTimeFilter())
      override def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly] = scala.Option(impl.typeFilter()).map(value => WorkflowTypeFilter.wrap(value))
      override def tagFilterValue: scala.Option[TagFilter.ReadOnly] = scala.Option(impl.tagFilter()).map(value => TagFilter.wrap(value))
      override def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly] = scala.Option(impl.executionFilter()).map(value => WorkflowExecutionFilter.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsRequest): ReadOnly = new Wrapper(impl)
  }
  case class CountOpenWorkflowExecutionsResponse(count: primitives.Count, truncated: scala.Option[primitives.Truncated] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsResponse = {
      import CountOpenWorkflowExecutionsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsResponse.builder().count(count: java.lang.Integer).optionallyWith(truncated.map(value => value: java.lang.Boolean))(_.truncated).build()
    }
    def asReadOnly: CountOpenWorkflowExecutionsResponse.ReadOnly = CountOpenWorkflowExecutionsResponse.wrap(buildAwsValue())
  }
  object CountOpenWorkflowExecutionsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountOpenWorkflowExecutionsResponse = CountOpenWorkflowExecutionsResponse(countValue, truncatedValue.map(value => value))
      def countValue: primitives.Count
      def truncatedValue: scala.Option[primitives.Truncated]
      def count: ZIO[Any, Nothing, primitives.Count] = ZIO.succeed(countValue)
      def truncated: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Truncated] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("truncated", truncatedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsResponse) extends CountOpenWorkflowExecutionsResponse.ReadOnly {
      override def countValue: primitives.Count = impl.count(): primitives.Count
      override def truncatedValue: scala.Option[primitives.Truncated] = scala.Option(impl.truncated()).map(value => value: primitives.Truncated)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsResponse): ReadOnly = new Wrapper(impl)
  }
  case class CountPendingActivityTasksRequest(domain: primitives.DomainName, taskList: TaskList) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountPendingActivityTasksRequest = {
      import CountPendingActivityTasksRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountPendingActivityTasksRequest.builder().domain(domain: java.lang.String).taskList(taskList.buildAwsValue()).build()
    }
    def asReadOnly: CountPendingActivityTasksRequest.ReadOnly = CountPendingActivityTasksRequest.wrap(buildAwsValue())
  }
  object CountPendingActivityTasksRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountPendingActivityTasksRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountPendingActivityTasksRequest = CountPendingActivityTasksRequest(domainValue, taskListValue.editable)
      def domainValue: primitives.DomainName
      def taskListValue: TaskList.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountPendingActivityTasksRequest) extends CountPendingActivityTasksRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountPendingActivityTasksRequest): ReadOnly = new Wrapper(impl)
  }
  case class CountPendingActivityTasksResponse(count: primitives.Count, truncated: scala.Option[primitives.Truncated] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountPendingActivityTasksResponse = {
      import CountPendingActivityTasksResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountPendingActivityTasksResponse.builder().count(count: java.lang.Integer).optionallyWith(truncated.map(value => value: java.lang.Boolean))(_.truncated).build()
    }
    def asReadOnly: CountPendingActivityTasksResponse.ReadOnly = CountPendingActivityTasksResponse.wrap(buildAwsValue())
  }
  object CountPendingActivityTasksResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountPendingActivityTasksResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountPendingActivityTasksResponse = CountPendingActivityTasksResponse(countValue, truncatedValue.map(value => value))
      def countValue: primitives.Count
      def truncatedValue: scala.Option[primitives.Truncated]
      def count: ZIO[Any, Nothing, primitives.Count] = ZIO.succeed(countValue)
      def truncated: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Truncated] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("truncated", truncatedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountPendingActivityTasksResponse) extends CountPendingActivityTasksResponse.ReadOnly {
      override def countValue: primitives.Count = impl.count(): primitives.Count
      override def truncatedValue: scala.Option[primitives.Truncated] = scala.Option(impl.truncated()).map(value => value: primitives.Truncated)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountPendingActivityTasksResponse): ReadOnly = new Wrapper(impl)
  }
  case class CountPendingDecisionTasksRequest(domain: primitives.DomainName, taskList: TaskList) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksRequest = {
      import CountPendingDecisionTasksRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksRequest.builder().domain(domain: java.lang.String).taskList(taskList.buildAwsValue()).build()
    }
    def asReadOnly: CountPendingDecisionTasksRequest.ReadOnly = CountPendingDecisionTasksRequest.wrap(buildAwsValue())
  }
  object CountPendingDecisionTasksRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountPendingDecisionTasksRequest = CountPendingDecisionTasksRequest(domainValue, taskListValue.editable)
      def domainValue: primitives.DomainName
      def taskListValue: TaskList.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksRequest) extends CountPendingDecisionTasksRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksRequest): ReadOnly = new Wrapper(impl)
  }
  case class CountPendingDecisionTasksResponse(count: primitives.Count, truncated: scala.Option[primitives.Truncated] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksResponse = {
      import CountPendingDecisionTasksResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksResponse.builder().count(count: java.lang.Integer).optionallyWith(truncated.map(value => value: java.lang.Boolean))(_.truncated).build()
    }
    def asReadOnly: CountPendingDecisionTasksResponse.ReadOnly = CountPendingDecisionTasksResponse.wrap(buildAwsValue())
  }
  object CountPendingDecisionTasksResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CountPendingDecisionTasksResponse = CountPendingDecisionTasksResponse(countValue, truncatedValue.map(value => value))
      def countValue: primitives.Count
      def truncatedValue: scala.Option[primitives.Truncated]
      def count: ZIO[Any, Nothing, primitives.Count] = ZIO.succeed(countValue)
      def truncated: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Truncated] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("truncated", truncatedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksResponse) extends CountPendingDecisionTasksResponse.ReadOnly {
      override def countValue: primitives.Count = impl.count(): primitives.Count
      override def truncatedValue: scala.Option[primitives.Truncated] = scala.Option(impl.truncated()).map(value => value: primitives.Truncated)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksResponse): ReadOnly = new Wrapper(impl)
  }
  case class Decision(decisionType: DecisionType, scheduleActivityTaskDecisionAttributes: scala.Option[ScheduleActivityTaskDecisionAttributes] = None, requestCancelActivityTaskDecisionAttributes: scala.Option[RequestCancelActivityTaskDecisionAttributes] = None, completeWorkflowExecutionDecisionAttributes: scala.Option[CompleteWorkflowExecutionDecisionAttributes] = None, failWorkflowExecutionDecisionAttributes: scala.Option[FailWorkflowExecutionDecisionAttributes] = None, cancelWorkflowExecutionDecisionAttributes: scala.Option[CancelWorkflowExecutionDecisionAttributes] = None, continueAsNewWorkflowExecutionDecisionAttributes: scala.Option[ContinueAsNewWorkflowExecutionDecisionAttributes] = None, recordMarkerDecisionAttributes: scala.Option[RecordMarkerDecisionAttributes] = None, startTimerDecisionAttributes: scala.Option[StartTimerDecisionAttributes] = None, cancelTimerDecisionAttributes: scala.Option[CancelTimerDecisionAttributes] = None, signalExternalWorkflowExecutionDecisionAttributes: scala.Option[SignalExternalWorkflowExecutionDecisionAttributes] = None, requestCancelExternalWorkflowExecutionDecisionAttributes: scala.Option[RequestCancelExternalWorkflowExecutionDecisionAttributes] = None, startChildWorkflowExecutionDecisionAttributes: scala.Option[StartChildWorkflowExecutionDecisionAttributes] = None, scheduleLambdaFunctionDecisionAttributes: scala.Option[ScheduleLambdaFunctionDecisionAttributes] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.Decision = {
      import Decision.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.Decision.builder().decisionType(decisionType.unwrap).optionallyWith(scheduleActivityTaskDecisionAttributes.map(value => value.buildAwsValue()))(_.scheduleActivityTaskDecisionAttributes).optionallyWith(requestCancelActivityTaskDecisionAttributes.map(value => value.buildAwsValue()))(_.requestCancelActivityTaskDecisionAttributes).optionallyWith(completeWorkflowExecutionDecisionAttributes.map(value => value.buildAwsValue()))(_.completeWorkflowExecutionDecisionAttributes).optionallyWith(failWorkflowExecutionDecisionAttributes.map(value => value.buildAwsValue()))(_.failWorkflowExecutionDecisionAttributes).optionallyWith(cancelWorkflowExecutionDecisionAttributes.map(value => value.buildAwsValue()))(_.cancelWorkflowExecutionDecisionAttributes).optionallyWith(continueAsNewWorkflowExecutionDecisionAttributes.map(value => value.buildAwsValue()))(_.continueAsNewWorkflowExecutionDecisionAttributes).optionallyWith(recordMarkerDecisionAttributes.map(value => value.buildAwsValue()))(_.recordMarkerDecisionAttributes).optionallyWith(startTimerDecisionAttributes.map(value => value.buildAwsValue()))(_.startTimerDecisionAttributes).optionallyWith(cancelTimerDecisionAttributes.map(value => value.buildAwsValue()))(_.cancelTimerDecisionAttributes).optionallyWith(signalExternalWorkflowExecutionDecisionAttributes.map(value => value.buildAwsValue()))(_.signalExternalWorkflowExecutionDecisionAttributes).optionallyWith(requestCancelExternalWorkflowExecutionDecisionAttributes.map(value => value.buildAwsValue()))(_.requestCancelExternalWorkflowExecutionDecisionAttributes).optionallyWith(startChildWorkflowExecutionDecisionAttributes.map(value => value.buildAwsValue()))(_.startChildWorkflowExecutionDecisionAttributes).optionallyWith(scheduleLambdaFunctionDecisionAttributes.map(value => value.buildAwsValue()))(_.scheduleLambdaFunctionDecisionAttributes).build()
    }
    def asReadOnly: Decision.ReadOnly = Decision.wrap(buildAwsValue())
  }
  object Decision {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.Decision] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Decision = Decision(decisionTypeValue, scheduleActivityTaskDecisionAttributesValue.map(value => value.editable), requestCancelActivityTaskDecisionAttributesValue.map(value => value.editable), completeWorkflowExecutionDecisionAttributesValue.map(value => value.editable), failWorkflowExecutionDecisionAttributesValue.map(value => value.editable), cancelWorkflowExecutionDecisionAttributesValue.map(value => value.editable), continueAsNewWorkflowExecutionDecisionAttributesValue.map(value => value.editable), recordMarkerDecisionAttributesValue.map(value => value.editable), startTimerDecisionAttributesValue.map(value => value.editable), cancelTimerDecisionAttributesValue.map(value => value.editable), signalExternalWorkflowExecutionDecisionAttributesValue.map(value => value.editable), requestCancelExternalWorkflowExecutionDecisionAttributesValue.map(value => value.editable), startChildWorkflowExecutionDecisionAttributesValue.map(value => value.editable), scheduleLambdaFunctionDecisionAttributesValue.map(value => value.editable))
      def decisionTypeValue: DecisionType
      def scheduleActivityTaskDecisionAttributesValue: scala.Option[ScheduleActivityTaskDecisionAttributes.ReadOnly]
      def requestCancelActivityTaskDecisionAttributesValue: scala.Option[RequestCancelActivityTaskDecisionAttributes.ReadOnly]
      def completeWorkflowExecutionDecisionAttributesValue: scala.Option[CompleteWorkflowExecutionDecisionAttributes.ReadOnly]
      def failWorkflowExecutionDecisionAttributesValue: scala.Option[FailWorkflowExecutionDecisionAttributes.ReadOnly]
      def cancelWorkflowExecutionDecisionAttributesValue: scala.Option[CancelWorkflowExecutionDecisionAttributes.ReadOnly]
      def continueAsNewWorkflowExecutionDecisionAttributesValue: scala.Option[ContinueAsNewWorkflowExecutionDecisionAttributes.ReadOnly]
      def recordMarkerDecisionAttributesValue: scala.Option[RecordMarkerDecisionAttributes.ReadOnly]
      def startTimerDecisionAttributesValue: scala.Option[StartTimerDecisionAttributes.ReadOnly]
      def cancelTimerDecisionAttributesValue: scala.Option[CancelTimerDecisionAttributes.ReadOnly]
      def signalExternalWorkflowExecutionDecisionAttributesValue: scala.Option[SignalExternalWorkflowExecutionDecisionAttributes.ReadOnly]
      def requestCancelExternalWorkflowExecutionDecisionAttributesValue: scala.Option[RequestCancelExternalWorkflowExecutionDecisionAttributes.ReadOnly]
      def startChildWorkflowExecutionDecisionAttributesValue: scala.Option[StartChildWorkflowExecutionDecisionAttributes.ReadOnly]
      def scheduleLambdaFunctionDecisionAttributesValue: scala.Option[ScheduleLambdaFunctionDecisionAttributes.ReadOnly]
      def decisionType: ZIO[Any, Nothing, DecisionType] = ZIO.succeed(decisionTypeValue)
      def scheduleActivityTaskDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ScheduleActivityTaskDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleActivityTaskDecisionAttributes", scheduleActivityTaskDecisionAttributesValue)
      def requestCancelActivityTaskDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RequestCancelActivityTaskDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("requestCancelActivityTaskDecisionAttributes", requestCancelActivityTaskDecisionAttributesValue)
      def completeWorkflowExecutionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CompleteWorkflowExecutionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("completeWorkflowExecutionDecisionAttributes", completeWorkflowExecutionDecisionAttributesValue)
      def failWorkflowExecutionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FailWorkflowExecutionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("failWorkflowExecutionDecisionAttributes", failWorkflowExecutionDecisionAttributesValue)
      def cancelWorkflowExecutionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CancelWorkflowExecutionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cancelWorkflowExecutionDecisionAttributes", cancelWorkflowExecutionDecisionAttributesValue)
      def continueAsNewWorkflowExecutionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContinueAsNewWorkflowExecutionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("continueAsNewWorkflowExecutionDecisionAttributes", continueAsNewWorkflowExecutionDecisionAttributesValue)
      def recordMarkerDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RecordMarkerDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("recordMarkerDecisionAttributes", recordMarkerDecisionAttributesValue)
      def startTimerDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StartTimerDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startTimerDecisionAttributes", startTimerDecisionAttributesValue)
      def cancelTimerDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CancelTimerDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cancelTimerDecisionAttributes", cancelTimerDecisionAttributesValue)
      def signalExternalWorkflowExecutionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SignalExternalWorkflowExecutionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("signalExternalWorkflowExecutionDecisionAttributes", signalExternalWorkflowExecutionDecisionAttributesValue)
      def requestCancelExternalWorkflowExecutionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RequestCancelExternalWorkflowExecutionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("requestCancelExternalWorkflowExecutionDecisionAttributes", requestCancelExternalWorkflowExecutionDecisionAttributesValue)
      def startChildWorkflowExecutionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StartChildWorkflowExecutionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startChildWorkflowExecutionDecisionAttributes", startChildWorkflowExecutionDecisionAttributesValue)
      def scheduleLambdaFunctionDecisionAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ScheduleLambdaFunctionDecisionAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleLambdaFunctionDecisionAttributes", scheduleLambdaFunctionDecisionAttributesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.Decision) extends Decision.ReadOnly {
      override def decisionTypeValue: DecisionType = DecisionType.wrap(impl.decisionType())
      override def scheduleActivityTaskDecisionAttributesValue: scala.Option[ScheduleActivityTaskDecisionAttributes.ReadOnly] = scala.Option(impl.scheduleActivityTaskDecisionAttributes()).map(value => ScheduleActivityTaskDecisionAttributes.wrap(value))
      override def requestCancelActivityTaskDecisionAttributesValue: scala.Option[RequestCancelActivityTaskDecisionAttributes.ReadOnly] = scala.Option(impl.requestCancelActivityTaskDecisionAttributes()).map(value => RequestCancelActivityTaskDecisionAttributes.wrap(value))
      override def completeWorkflowExecutionDecisionAttributesValue: scala.Option[CompleteWorkflowExecutionDecisionAttributes.ReadOnly] = scala.Option(impl.completeWorkflowExecutionDecisionAttributes()).map(value => CompleteWorkflowExecutionDecisionAttributes.wrap(value))
      override def failWorkflowExecutionDecisionAttributesValue: scala.Option[FailWorkflowExecutionDecisionAttributes.ReadOnly] = scala.Option(impl.failWorkflowExecutionDecisionAttributes()).map(value => FailWorkflowExecutionDecisionAttributes.wrap(value))
      override def cancelWorkflowExecutionDecisionAttributesValue: scala.Option[CancelWorkflowExecutionDecisionAttributes.ReadOnly] = scala.Option(impl.cancelWorkflowExecutionDecisionAttributes()).map(value => CancelWorkflowExecutionDecisionAttributes.wrap(value))
      override def continueAsNewWorkflowExecutionDecisionAttributesValue: scala.Option[ContinueAsNewWorkflowExecutionDecisionAttributes.ReadOnly] = scala.Option(impl.continueAsNewWorkflowExecutionDecisionAttributes()).map(value => ContinueAsNewWorkflowExecutionDecisionAttributes.wrap(value))
      override def recordMarkerDecisionAttributesValue: scala.Option[RecordMarkerDecisionAttributes.ReadOnly] = scala.Option(impl.recordMarkerDecisionAttributes()).map(value => RecordMarkerDecisionAttributes.wrap(value))
      override def startTimerDecisionAttributesValue: scala.Option[StartTimerDecisionAttributes.ReadOnly] = scala.Option(impl.startTimerDecisionAttributes()).map(value => StartTimerDecisionAttributes.wrap(value))
      override def cancelTimerDecisionAttributesValue: scala.Option[CancelTimerDecisionAttributes.ReadOnly] = scala.Option(impl.cancelTimerDecisionAttributes()).map(value => CancelTimerDecisionAttributes.wrap(value))
      override def signalExternalWorkflowExecutionDecisionAttributesValue: scala.Option[SignalExternalWorkflowExecutionDecisionAttributes.ReadOnly] = scala.Option(impl.signalExternalWorkflowExecutionDecisionAttributes()).map(value => SignalExternalWorkflowExecutionDecisionAttributes.wrap(value))
      override def requestCancelExternalWorkflowExecutionDecisionAttributesValue: scala.Option[RequestCancelExternalWorkflowExecutionDecisionAttributes.ReadOnly] = scala.Option(impl.requestCancelExternalWorkflowExecutionDecisionAttributes()).map(value => RequestCancelExternalWorkflowExecutionDecisionAttributes.wrap(value))
      override def startChildWorkflowExecutionDecisionAttributesValue: scala.Option[StartChildWorkflowExecutionDecisionAttributes.ReadOnly] = scala.Option(impl.startChildWorkflowExecutionDecisionAttributes()).map(value => StartChildWorkflowExecutionDecisionAttributes.wrap(value))
      override def scheduleLambdaFunctionDecisionAttributesValue: scala.Option[ScheduleLambdaFunctionDecisionAttributes.ReadOnly] = scala.Option(impl.scheduleLambdaFunctionDecisionAttributes()).map(value => ScheduleLambdaFunctionDecisionAttributes.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.Decision): ReadOnly = new Wrapper(impl)
  }
  type DecisionList = List[Decision]
  case class DecisionTaskCompletedEventAttributes(executionContext: scala.Option[primitives.Data] = None, scheduledEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DecisionTaskCompletedEventAttributes = {
      import DecisionTaskCompletedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DecisionTaskCompletedEventAttributes.builder().optionallyWith(executionContext.map(value => value: java.lang.String))(_.executionContext).scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: DecisionTaskCompletedEventAttributes.ReadOnly = DecisionTaskCompletedEventAttributes.wrap(buildAwsValue())
  }
  object DecisionTaskCompletedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DecisionTaskCompletedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DecisionTaskCompletedEventAttributes = DecisionTaskCompletedEventAttributes(executionContextValue.map(value => value), scheduledEventIdValue, startedEventIdValue)
      def executionContextValue: scala.Option[primitives.Data]
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def executionContext: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionContext", executionContextValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DecisionTaskCompletedEventAttributes) extends DecisionTaskCompletedEventAttributes.ReadOnly {
      override def executionContextValue: scala.Option[primitives.Data] = scala.Option(impl.executionContext()).map(value => value: primitives.Data)
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DecisionTaskCompletedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class DecisionTaskScheduledEventAttributes(taskList: TaskList, taskPriority: scala.Option[primitives.TaskPriority] = None, startToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DecisionTaskScheduledEventAttributes = {
      import DecisionTaskScheduledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DecisionTaskScheduledEventAttributes.builder().taskList(taskList.buildAwsValue()).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).optionallyWith(startToCloseTimeout.map(value => value: java.lang.String))(_.startToCloseTimeout).build()
    }
    def asReadOnly: DecisionTaskScheduledEventAttributes.ReadOnly = DecisionTaskScheduledEventAttributes.wrap(buildAwsValue())
  }
  object DecisionTaskScheduledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DecisionTaskScheduledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DecisionTaskScheduledEventAttributes = DecisionTaskScheduledEventAttributes(taskListValue.editable, taskPriorityValue.map(value => value), startToCloseTimeoutValue.map(value => value))
      def taskListValue: TaskList.ReadOnly
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def startToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startToCloseTimeout", startToCloseTimeoutValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DecisionTaskScheduledEventAttributes) extends DecisionTaskScheduledEventAttributes.ReadOnly {
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.startToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DecisionTaskScheduledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class DecisionTaskStartedEventAttributes(identity: scala.Option[primitives.Identity] = None, scheduledEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DecisionTaskStartedEventAttributes = {
      import DecisionTaskStartedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DecisionTaskStartedEventAttributes.builder().optionallyWith(identity.map(value => value: java.lang.String))(_.identity).scheduledEventId(scheduledEventId: java.lang.Long).build()
    }
    def asReadOnly: DecisionTaskStartedEventAttributes.ReadOnly = DecisionTaskStartedEventAttributes.wrap(buildAwsValue())
  }
  object DecisionTaskStartedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DecisionTaskStartedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DecisionTaskStartedEventAttributes = DecisionTaskStartedEventAttributes(identityValue.map(value => value), scheduledEventIdValue)
      def identityValue: scala.Option[primitives.Identity]
      def scheduledEventIdValue: primitives.EventId
      def identity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Identity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("identity", identityValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DecisionTaskStartedEventAttributes) extends DecisionTaskStartedEventAttributes.ReadOnly {
      override def identityValue: scala.Option[primitives.Identity] = scala.Option(impl.identity()).map(value => value: primitives.Identity)
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DecisionTaskStartedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class DecisionTaskTimedOutEventAttributes(timeoutType: DecisionTaskTimeoutType, scheduledEventId: primitives.EventId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DecisionTaskTimedOutEventAttributes = {
      import DecisionTaskTimedOutEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DecisionTaskTimedOutEventAttributes.builder().timeoutType(timeoutType.unwrap).scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: DecisionTaskTimedOutEventAttributes.ReadOnly = DecisionTaskTimedOutEventAttributes.wrap(buildAwsValue())
  }
  object DecisionTaskTimedOutEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DecisionTaskTimedOutEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DecisionTaskTimedOutEventAttributes = DecisionTaskTimedOutEventAttributes(timeoutTypeValue, scheduledEventIdValue, startedEventIdValue)
      def timeoutTypeValue: DecisionTaskTimeoutType
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def timeoutType: ZIO[Any, Nothing, DecisionTaskTimeoutType] = ZIO.succeed(timeoutTypeValue)
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DecisionTaskTimedOutEventAttributes) extends DecisionTaskTimedOutEventAttributes.ReadOnly {
      override def timeoutTypeValue: DecisionTaskTimeoutType = DecisionTaskTimeoutType.wrap(impl.timeoutType())
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DecisionTaskTimedOutEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait DecisionTaskTimeoutType { def unwrap: software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType }
  object DecisionTaskTimeoutType {
    def wrap(value: software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType): DecisionTaskTimeoutType = value match {
      case software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType.START_TO_CLOSE => START_TO_CLOSE
    }
    final case object unknownToSdkVersion extends DecisionTaskTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType = software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType.UNKNOWN_TO_SDK_VERSION }
    final case object START_TO_CLOSE extends DecisionTaskTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType = software.amazon.awssdk.services.swf.model.DecisionTaskTimeoutType.START_TO_CLOSE }
  }
  sealed trait DecisionType { def unwrap: software.amazon.awssdk.services.swf.model.DecisionType }
  object DecisionType {
    def wrap(value: software.amazon.awssdk.services.swf.model.DecisionType): DecisionType = value match {
      case software.amazon.awssdk.services.swf.model.DecisionType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.DecisionType.SCHEDULE_ACTIVITY_TASK => ScheduleActivityTask
      case software.amazon.awssdk.services.swf.model.DecisionType.REQUEST_CANCEL_ACTIVITY_TASK => RequestCancelActivityTask
      case software.amazon.awssdk.services.swf.model.DecisionType.COMPLETE_WORKFLOW_EXECUTION => CompleteWorkflowExecution
      case software.amazon.awssdk.services.swf.model.DecisionType.FAIL_WORKFLOW_EXECUTION => FailWorkflowExecution
      case software.amazon.awssdk.services.swf.model.DecisionType.CANCEL_WORKFLOW_EXECUTION => CancelWorkflowExecution
      case software.amazon.awssdk.services.swf.model.DecisionType.CONTINUE_AS_NEW_WORKFLOW_EXECUTION => ContinueAsNewWorkflowExecution
      case software.amazon.awssdk.services.swf.model.DecisionType.RECORD_MARKER => RecordMarker
      case software.amazon.awssdk.services.swf.model.DecisionType.START_TIMER => StartTimer
      case software.amazon.awssdk.services.swf.model.DecisionType.CANCEL_TIMER => CancelTimer
      case software.amazon.awssdk.services.swf.model.DecisionType.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION => SignalExternalWorkflowExecution
      case software.amazon.awssdk.services.swf.model.DecisionType.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION => RequestCancelExternalWorkflowExecution
      case software.amazon.awssdk.services.swf.model.DecisionType.START_CHILD_WORKFLOW_EXECUTION => StartChildWorkflowExecution
      case software.amazon.awssdk.services.swf.model.DecisionType.SCHEDULE_LAMBDA_FUNCTION => ScheduleLambdaFunction
    }
    final case object unknownToSdkVersion extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.UNKNOWN_TO_SDK_VERSION }
    final case object ScheduleActivityTask extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.SCHEDULE_ACTIVITY_TASK }
    final case object RequestCancelActivityTask extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.REQUEST_CANCEL_ACTIVITY_TASK }
    final case object CompleteWorkflowExecution extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.COMPLETE_WORKFLOW_EXECUTION }
    final case object FailWorkflowExecution extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.FAIL_WORKFLOW_EXECUTION }
    final case object CancelWorkflowExecution extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.CANCEL_WORKFLOW_EXECUTION }
    final case object ContinueAsNewWorkflowExecution extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.CONTINUE_AS_NEW_WORKFLOW_EXECUTION }
    final case object RecordMarker extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.RECORD_MARKER }
    final case object StartTimer extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.START_TIMER }
    final case object CancelTimer extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.CANCEL_TIMER }
    final case object SignalExternalWorkflowExecution extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION }
    final case object RequestCancelExternalWorkflowExecution extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION }
    final case object StartChildWorkflowExecution extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.START_CHILD_WORKFLOW_EXECUTION }
    final case object ScheduleLambdaFunction extends DecisionType { override def unwrap: software.amazon.awssdk.services.swf.model.DecisionType = software.amazon.awssdk.services.swf.model.DecisionType.SCHEDULE_LAMBDA_FUNCTION }
  }
  case class DeprecateActivityTypeRequest(domain: primitives.DomainName, activityType: ActivityType) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DeprecateActivityTypeRequest = {
      import DeprecateActivityTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DeprecateActivityTypeRequest.builder().domain(domain: java.lang.String).activityType(activityType.buildAwsValue()).build()
    }
    def asReadOnly: DeprecateActivityTypeRequest.ReadOnly = DeprecateActivityTypeRequest.wrap(buildAwsValue())
  }
  object DeprecateActivityTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DeprecateActivityTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeprecateActivityTypeRequest = DeprecateActivityTypeRequest(domainValue, activityTypeValue.editable)
      def domainValue: primitives.DomainName
      def activityTypeValue: ActivityType.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DeprecateActivityTypeRequest) extends DeprecateActivityTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DeprecateActivityTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeprecateDomainRequest(name: primitives.DomainName) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DeprecateDomainRequest = {
      import DeprecateDomainRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DeprecateDomainRequest.builder().name(name: java.lang.String).build()
    }
    def asReadOnly: DeprecateDomainRequest.ReadOnly = DeprecateDomainRequest.wrap(buildAwsValue())
  }
  object DeprecateDomainRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DeprecateDomainRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeprecateDomainRequest = DeprecateDomainRequest(nameValue)
      def nameValue: primitives.DomainName
      def name: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(nameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DeprecateDomainRequest) extends DeprecateDomainRequest.ReadOnly { override def nameValue: primitives.DomainName = impl.name(): primitives.DomainName }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DeprecateDomainRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeprecateWorkflowTypeRequest(domain: primitives.DomainName, workflowType: WorkflowType) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeRequest = {
      import DeprecateWorkflowTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeRequest.builder().domain(domain: java.lang.String).workflowType(workflowType.buildAwsValue()).build()
    }
    def asReadOnly: DeprecateWorkflowTypeRequest.ReadOnly = DeprecateWorkflowTypeRequest.wrap(buildAwsValue())
  }
  object DeprecateWorkflowTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeprecateWorkflowTypeRequest = DeprecateWorkflowTypeRequest(domainValue, workflowTypeValue.editable)
      def domainValue: primitives.DomainName
      def workflowTypeValue: WorkflowType.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeRequest) extends DeprecateWorkflowTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeActivityTypeRequest(domain: primitives.DomainName, activityType: ActivityType) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeActivityTypeRequest = {
      import DescribeActivityTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeActivityTypeRequest.builder().domain(domain: java.lang.String).activityType(activityType.buildAwsValue()).build()
    }
    def asReadOnly: DescribeActivityTypeRequest.ReadOnly = DescribeActivityTypeRequest.wrap(buildAwsValue())
  }
  object DescribeActivityTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeActivityTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeActivityTypeRequest = DescribeActivityTypeRequest(domainValue, activityTypeValue.editable)
      def domainValue: primitives.DomainName
      def activityTypeValue: ActivityType.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeActivityTypeRequest) extends DescribeActivityTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeActivityTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeActivityTypeResponse(typeInfo: ActivityTypeInfo, configuration: ActivityTypeConfiguration) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeActivityTypeResponse = {
      import DescribeActivityTypeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeActivityTypeResponse.builder().typeInfo(typeInfo.buildAwsValue()).configuration(configuration.buildAwsValue()).build()
    }
    def asReadOnly: DescribeActivityTypeResponse.ReadOnly = DescribeActivityTypeResponse.wrap(buildAwsValue())
  }
  object DescribeActivityTypeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeActivityTypeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeActivityTypeResponse = DescribeActivityTypeResponse(typeInfoValue.editable, configurationValue.editable)
      def typeInfoValue: ActivityTypeInfo.ReadOnly
      def configurationValue: ActivityTypeConfiguration.ReadOnly
      def typeInfo: ZIO[Any, Nothing, ActivityTypeInfo.ReadOnly] = ZIO.succeed(typeInfoValue)
      def configuration: ZIO[Any, Nothing, ActivityTypeConfiguration.ReadOnly] = ZIO.succeed(configurationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeActivityTypeResponse) extends DescribeActivityTypeResponse.ReadOnly {
      override def typeInfoValue: ActivityTypeInfo.ReadOnly = ActivityTypeInfo.wrap(impl.typeInfo())
      override def configurationValue: ActivityTypeConfiguration.ReadOnly = ActivityTypeConfiguration.wrap(impl.configuration())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeActivityTypeResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeDomainRequest(name: primitives.DomainName) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeDomainRequest = {
      import DescribeDomainRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeDomainRequest.builder().name(name: java.lang.String).build()
    }
    def asReadOnly: DescribeDomainRequest.ReadOnly = DescribeDomainRequest.wrap(buildAwsValue())
  }
  object DescribeDomainRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeDomainRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeDomainRequest = DescribeDomainRequest(nameValue)
      def nameValue: primitives.DomainName
      def name: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(nameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeDomainRequest) extends DescribeDomainRequest.ReadOnly { override def nameValue: primitives.DomainName = impl.name(): primitives.DomainName }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeDomainRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeDomainResponse(domainInfo: DomainInfo, configuration: DomainConfiguration) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeDomainResponse = {
      import DescribeDomainResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeDomainResponse.builder().domainInfo(domainInfo.buildAwsValue()).configuration(configuration.buildAwsValue()).build()
    }
    def asReadOnly: DescribeDomainResponse.ReadOnly = DescribeDomainResponse.wrap(buildAwsValue())
  }
  object DescribeDomainResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeDomainResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeDomainResponse = DescribeDomainResponse(domainInfoValue.editable, configurationValue.editable)
      def domainInfoValue: DomainInfo.ReadOnly
      def configurationValue: DomainConfiguration.ReadOnly
      def domainInfo: ZIO[Any, Nothing, DomainInfo.ReadOnly] = ZIO.succeed(domainInfoValue)
      def configuration: ZIO[Any, Nothing, DomainConfiguration.ReadOnly] = ZIO.succeed(configurationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeDomainResponse) extends DescribeDomainResponse.ReadOnly {
      override def domainInfoValue: DomainInfo.ReadOnly = DomainInfo.wrap(impl.domainInfo())
      override def configurationValue: DomainConfiguration.ReadOnly = DomainConfiguration.wrap(impl.configuration())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeDomainResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeWorkflowExecutionRequest(domain: primitives.DomainName, execution: WorkflowExecution) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionRequest = {
      import DescribeWorkflowExecutionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionRequest.builder().domain(domain: java.lang.String).execution(execution.buildAwsValue()).build()
    }
    def asReadOnly: DescribeWorkflowExecutionRequest.ReadOnly = DescribeWorkflowExecutionRequest.wrap(buildAwsValue())
  }
  object DescribeWorkflowExecutionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeWorkflowExecutionRequest = DescribeWorkflowExecutionRequest(domainValue, executionValue.editable)
      def domainValue: primitives.DomainName
      def executionValue: WorkflowExecution.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def execution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(executionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionRequest) extends DescribeWorkflowExecutionRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def executionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.execution())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeWorkflowExecutionResponse(executionInfo: WorkflowExecutionInfo, executionConfiguration: WorkflowExecutionConfiguration, openCounts: WorkflowExecutionOpenCounts, latestActivityTaskTimestamp: scala.Option[primitives.Timestamp] = None, latestExecutionContext: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionResponse = {
      import DescribeWorkflowExecutionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionResponse.builder().executionInfo(executionInfo.buildAwsValue()).executionConfiguration(executionConfiguration.buildAwsValue()).openCounts(openCounts.buildAwsValue()).optionallyWith(latestActivityTaskTimestamp.map(value => value: java.time.Instant))(_.latestActivityTaskTimestamp).optionallyWith(latestExecutionContext.map(value => value: java.lang.String))(_.latestExecutionContext).build()
    }
    def asReadOnly: DescribeWorkflowExecutionResponse.ReadOnly = DescribeWorkflowExecutionResponse.wrap(buildAwsValue())
  }
  object DescribeWorkflowExecutionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeWorkflowExecutionResponse = DescribeWorkflowExecutionResponse(executionInfoValue.editable, executionConfigurationValue.editable, openCountsValue.editable, latestActivityTaskTimestampValue.map(value => value), latestExecutionContextValue.map(value => value))
      def executionInfoValue: WorkflowExecutionInfo.ReadOnly
      def executionConfigurationValue: WorkflowExecutionConfiguration.ReadOnly
      def openCountsValue: WorkflowExecutionOpenCounts.ReadOnly
      def latestActivityTaskTimestampValue: scala.Option[primitives.Timestamp]
      def latestExecutionContextValue: scala.Option[primitives.Data]
      def executionInfo: ZIO[Any, Nothing, WorkflowExecutionInfo.ReadOnly] = ZIO.succeed(executionInfoValue)
      def executionConfiguration: ZIO[Any, Nothing, WorkflowExecutionConfiguration.ReadOnly] = ZIO.succeed(executionConfigurationValue)
      def openCounts: ZIO[Any, Nothing, WorkflowExecutionOpenCounts.ReadOnly] = ZIO.succeed(openCountsValue)
      def latestActivityTaskTimestamp: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Timestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestActivityTaskTimestamp", latestActivityTaskTimestampValue)
      def latestExecutionContext: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestExecutionContext", latestExecutionContextValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionResponse) extends DescribeWorkflowExecutionResponse.ReadOnly {
      override def executionInfoValue: WorkflowExecutionInfo.ReadOnly = WorkflowExecutionInfo.wrap(impl.executionInfo())
      override def executionConfigurationValue: WorkflowExecutionConfiguration.ReadOnly = WorkflowExecutionConfiguration.wrap(impl.executionConfiguration())
      override def openCountsValue: WorkflowExecutionOpenCounts.ReadOnly = WorkflowExecutionOpenCounts.wrap(impl.openCounts())
      override def latestActivityTaskTimestampValue: scala.Option[primitives.Timestamp] = scala.Option(impl.latestActivityTaskTimestamp()).map(value => value: primitives.Timestamp)
      override def latestExecutionContextValue: scala.Option[primitives.Data] = scala.Option(impl.latestExecutionContext()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeWorkflowTypeRequest(domain: primitives.DomainName, workflowType: WorkflowType) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeRequest = {
      import DescribeWorkflowTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeRequest.builder().domain(domain: java.lang.String).workflowType(workflowType.buildAwsValue()).build()
    }
    def asReadOnly: DescribeWorkflowTypeRequest.ReadOnly = DescribeWorkflowTypeRequest.wrap(buildAwsValue())
  }
  object DescribeWorkflowTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeWorkflowTypeRequest = DescribeWorkflowTypeRequest(domainValue, workflowTypeValue.editable)
      def domainValue: primitives.DomainName
      def workflowTypeValue: WorkflowType.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeRequest) extends DescribeWorkflowTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeWorkflowTypeResponse(typeInfo: WorkflowTypeInfo, configuration: WorkflowTypeConfiguration) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeResponse = {
      import DescribeWorkflowTypeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeResponse.builder().typeInfo(typeInfo.buildAwsValue()).configuration(configuration.buildAwsValue()).build()
    }
    def asReadOnly: DescribeWorkflowTypeResponse.ReadOnly = DescribeWorkflowTypeResponse.wrap(buildAwsValue())
  }
  object DescribeWorkflowTypeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeWorkflowTypeResponse = DescribeWorkflowTypeResponse(typeInfoValue.editable, configurationValue.editable)
      def typeInfoValue: WorkflowTypeInfo.ReadOnly
      def configurationValue: WorkflowTypeConfiguration.ReadOnly
      def typeInfo: ZIO[Any, Nothing, WorkflowTypeInfo.ReadOnly] = ZIO.succeed(typeInfoValue)
      def configuration: ZIO[Any, Nothing, WorkflowTypeConfiguration.ReadOnly] = ZIO.succeed(configurationValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeResponse) extends DescribeWorkflowTypeResponse.ReadOnly {
      override def typeInfoValue: WorkflowTypeInfo.ReadOnly = WorkflowTypeInfo.wrap(impl.typeInfo())
      override def configurationValue: WorkflowTypeConfiguration.ReadOnly = WorkflowTypeConfiguration.wrap(impl.configuration())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeResponse): ReadOnly = new Wrapper(impl)
  }
  case class DomainConfiguration(workflowExecutionRetentionPeriodInDays: primitives.DurationInDays) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DomainConfiguration = {
      import DomainConfiguration.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DomainConfiguration.builder().workflowExecutionRetentionPeriodInDays(workflowExecutionRetentionPeriodInDays: java.lang.String).build()
    }
    def asReadOnly: DomainConfiguration.ReadOnly = DomainConfiguration.wrap(buildAwsValue())
  }
  object DomainConfiguration {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DomainConfiguration] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DomainConfiguration = DomainConfiguration(workflowExecutionRetentionPeriodInDaysValue)
      def workflowExecutionRetentionPeriodInDaysValue: primitives.DurationInDays
      def workflowExecutionRetentionPeriodInDays: ZIO[Any, Nothing, primitives.DurationInDays] = ZIO.succeed(workflowExecutionRetentionPeriodInDaysValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DomainConfiguration) extends DomainConfiguration.ReadOnly { override def workflowExecutionRetentionPeriodInDaysValue: primitives.DurationInDays = impl.workflowExecutionRetentionPeriodInDays(): primitives.DurationInDays }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DomainConfiguration): ReadOnly = new Wrapper(impl)
  }
  case class DomainInfo(name: primitives.DomainName, status: RegistrationStatus, description: scala.Option[primitives.Description] = None, arn: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.DomainInfo = {
      import DomainInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.DomainInfo.builder().name(name: java.lang.String).status(status.unwrap).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).build()
    }
    def asReadOnly: DomainInfo.ReadOnly = DomainInfo.wrap(buildAwsValue())
  }
  object DomainInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.DomainInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DomainInfo = DomainInfo(nameValue, statusValue, descriptionValue.map(value => value), arnValue.map(value => value))
      def nameValue: primitives.DomainName
      def statusValue: RegistrationStatus
      def descriptionValue: scala.Option[primitives.Description]
      def arnValue: scala.Option[primitives.Arn]
      def name: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(nameValue)
      def status: ZIO[Any, Nothing, RegistrationStatus] = ZIO.succeed(statusValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Description] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.DomainInfo) extends DomainInfo.ReadOnly {
      override def nameValue: primitives.DomainName = impl.name(): primitives.DomainName
      override def statusValue: RegistrationStatus = RegistrationStatus.wrap(impl.status())
      override def descriptionValue: scala.Option[primitives.Description] = scala.Option(impl.description()).map(value => value: primitives.Description)
      override def arnValue: scala.Option[primitives.Arn] = scala.Option(impl.arn()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.DomainInfo): ReadOnly = new Wrapper(impl)
  }
  type DomainInfoList = List[DomainInfo]
  sealed trait EventType { def unwrap: software.amazon.awssdk.services.swf.model.EventType }
  object EventType {
    def wrap(value: software.amazon.awssdk.services.swf.model.EventType): EventType = value match {
      case software.amazon.awssdk.services.swf.model.EventType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_STARTED => WorkflowExecutionStarted
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_CANCEL_REQUESTED => WorkflowExecutionCancelRequested
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_COMPLETED => WorkflowExecutionCompleted
      case software.amazon.awssdk.services.swf.model.EventType.COMPLETE_WORKFLOW_EXECUTION_FAILED => CompleteWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_FAILED => WorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.FAIL_WORKFLOW_EXECUTION_FAILED => FailWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_TIMED_OUT => WorkflowExecutionTimedOut
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_CANCELED => WorkflowExecutionCanceled
      case software.amazon.awssdk.services.swf.model.EventType.CANCEL_WORKFLOW_EXECUTION_FAILED => CancelWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_CONTINUED_AS_NEW => WorkflowExecutionContinuedAsNew
      case software.amazon.awssdk.services.swf.model.EventType.CONTINUE_AS_NEW_WORKFLOW_EXECUTION_FAILED => ContinueAsNewWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_TERMINATED => WorkflowExecutionTerminated
      case software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_SCHEDULED => DecisionTaskScheduled
      case software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_STARTED => DecisionTaskStarted
      case software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_COMPLETED => DecisionTaskCompleted
      case software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_TIMED_OUT => DecisionTaskTimedOut
      case software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_SCHEDULED => ActivityTaskScheduled
      case software.amazon.awssdk.services.swf.model.EventType.SCHEDULE_ACTIVITY_TASK_FAILED => ScheduleActivityTaskFailed
      case software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_STARTED => ActivityTaskStarted
      case software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_COMPLETED => ActivityTaskCompleted
      case software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_FAILED => ActivityTaskFailed
      case software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_TIMED_OUT => ActivityTaskTimedOut
      case software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_CANCELED => ActivityTaskCanceled
      case software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_CANCEL_REQUESTED => ActivityTaskCancelRequested
      case software.amazon.awssdk.services.swf.model.EventType.REQUEST_CANCEL_ACTIVITY_TASK_FAILED => RequestCancelActivityTaskFailed
      case software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_SIGNALED => WorkflowExecutionSignaled
      case software.amazon.awssdk.services.swf.model.EventType.MARKER_RECORDED => MarkerRecorded
      case software.amazon.awssdk.services.swf.model.EventType.RECORD_MARKER_FAILED => RecordMarkerFailed
      case software.amazon.awssdk.services.swf.model.EventType.TIMER_STARTED => TimerStarted
      case software.amazon.awssdk.services.swf.model.EventType.START_TIMER_FAILED => StartTimerFailed
      case software.amazon.awssdk.services.swf.model.EventType.TIMER_FIRED => TimerFired
      case software.amazon.awssdk.services.swf.model.EventType.TIMER_CANCELED => TimerCanceled
      case software.amazon.awssdk.services.swf.model.EventType.CANCEL_TIMER_FAILED => CancelTimerFailed
      case software.amazon.awssdk.services.swf.model.EventType.START_CHILD_WORKFLOW_EXECUTION_INITIATED => StartChildWorkflowExecutionInitiated
      case software.amazon.awssdk.services.swf.model.EventType.START_CHILD_WORKFLOW_EXECUTION_FAILED => StartChildWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_STARTED => ChildWorkflowExecutionStarted
      case software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_COMPLETED => ChildWorkflowExecutionCompleted
      case software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_FAILED => ChildWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_TIMED_OUT => ChildWorkflowExecutionTimedOut
      case software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_CANCELED => ChildWorkflowExecutionCanceled
      case software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_TERMINATED => ChildWorkflowExecutionTerminated
      case software.amazon.awssdk.services.swf.model.EventType.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED => SignalExternalWorkflowExecutionInitiated
      case software.amazon.awssdk.services.swf.model.EventType.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED => SignalExternalWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.EXTERNAL_WORKFLOW_EXECUTION_SIGNALED => ExternalWorkflowExecutionSignaled
      case software.amazon.awssdk.services.swf.model.EventType.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED => RequestCancelExternalWorkflowExecutionInitiated
      case software.amazon.awssdk.services.swf.model.EventType.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED => RequestCancelExternalWorkflowExecutionFailed
      case software.amazon.awssdk.services.swf.model.EventType.EXTERNAL_WORKFLOW_EXECUTION_CANCEL_REQUESTED => ExternalWorkflowExecutionCancelRequested
      case software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_SCHEDULED => LambdaFunctionScheduled
      case software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_STARTED => LambdaFunctionStarted
      case software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_COMPLETED => LambdaFunctionCompleted
      case software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_FAILED => LambdaFunctionFailed
      case software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_TIMED_OUT => LambdaFunctionTimedOut
      case software.amazon.awssdk.services.swf.model.EventType.SCHEDULE_LAMBDA_FUNCTION_FAILED => ScheduleLambdaFunctionFailed
      case software.amazon.awssdk.services.swf.model.EventType.START_LAMBDA_FUNCTION_FAILED => StartLambdaFunctionFailed
    }
    final case object unknownToSdkVersion extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.UNKNOWN_TO_SDK_VERSION }
    final case object WorkflowExecutionStarted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_STARTED }
    final case object WorkflowExecutionCancelRequested extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_CANCEL_REQUESTED }
    final case object WorkflowExecutionCompleted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_COMPLETED }
    final case object CompleteWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.COMPLETE_WORKFLOW_EXECUTION_FAILED }
    final case object WorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_FAILED }
    final case object FailWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.FAIL_WORKFLOW_EXECUTION_FAILED }
    final case object WorkflowExecutionTimedOut extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_TIMED_OUT }
    final case object WorkflowExecutionCanceled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_CANCELED }
    final case object CancelWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CANCEL_WORKFLOW_EXECUTION_FAILED }
    final case object WorkflowExecutionContinuedAsNew extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_CONTINUED_AS_NEW }
    final case object ContinueAsNewWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CONTINUE_AS_NEW_WORKFLOW_EXECUTION_FAILED }
    final case object WorkflowExecutionTerminated extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_TERMINATED }
    final case object DecisionTaskScheduled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_SCHEDULED }
    final case object DecisionTaskStarted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_STARTED }
    final case object DecisionTaskCompleted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_COMPLETED }
    final case object DecisionTaskTimedOut extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.DECISION_TASK_TIMED_OUT }
    final case object ActivityTaskScheduled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_SCHEDULED }
    final case object ScheduleActivityTaskFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.SCHEDULE_ACTIVITY_TASK_FAILED }
    final case object ActivityTaskStarted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_STARTED }
    final case object ActivityTaskCompleted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_COMPLETED }
    final case object ActivityTaskFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_FAILED }
    final case object ActivityTaskTimedOut extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_TIMED_OUT }
    final case object ActivityTaskCanceled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_CANCELED }
    final case object ActivityTaskCancelRequested extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.ACTIVITY_TASK_CANCEL_REQUESTED }
    final case object RequestCancelActivityTaskFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.REQUEST_CANCEL_ACTIVITY_TASK_FAILED }
    final case object WorkflowExecutionSignaled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.WORKFLOW_EXECUTION_SIGNALED }
    final case object MarkerRecorded extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.MARKER_RECORDED }
    final case object RecordMarkerFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.RECORD_MARKER_FAILED }
    final case object TimerStarted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.TIMER_STARTED }
    final case object StartTimerFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.START_TIMER_FAILED }
    final case object TimerFired extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.TIMER_FIRED }
    final case object TimerCanceled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.TIMER_CANCELED }
    final case object CancelTimerFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CANCEL_TIMER_FAILED }
    final case object StartChildWorkflowExecutionInitiated extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.START_CHILD_WORKFLOW_EXECUTION_INITIATED }
    final case object StartChildWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.START_CHILD_WORKFLOW_EXECUTION_FAILED }
    final case object ChildWorkflowExecutionStarted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_STARTED }
    final case object ChildWorkflowExecutionCompleted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_COMPLETED }
    final case object ChildWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_FAILED }
    final case object ChildWorkflowExecutionTimedOut extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_TIMED_OUT }
    final case object ChildWorkflowExecutionCanceled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_CANCELED }
    final case object ChildWorkflowExecutionTerminated extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.CHILD_WORKFLOW_EXECUTION_TERMINATED }
    final case object SignalExternalWorkflowExecutionInitiated extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED }
    final case object SignalExternalWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED }
    final case object ExternalWorkflowExecutionSignaled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.EXTERNAL_WORKFLOW_EXECUTION_SIGNALED }
    final case object RequestCancelExternalWorkflowExecutionInitiated extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED }
    final case object RequestCancelExternalWorkflowExecutionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED }
    final case object ExternalWorkflowExecutionCancelRequested extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.EXTERNAL_WORKFLOW_EXECUTION_CANCEL_REQUESTED }
    final case object LambdaFunctionScheduled extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_SCHEDULED }
    final case object LambdaFunctionStarted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_STARTED }
    final case object LambdaFunctionCompleted extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_COMPLETED }
    final case object LambdaFunctionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_FAILED }
    final case object LambdaFunctionTimedOut extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.LAMBDA_FUNCTION_TIMED_OUT }
    final case object ScheduleLambdaFunctionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.SCHEDULE_LAMBDA_FUNCTION_FAILED }
    final case object StartLambdaFunctionFailed extends EventType { override def unwrap: software.amazon.awssdk.services.swf.model.EventType = software.amazon.awssdk.services.swf.model.EventType.START_LAMBDA_FUNCTION_FAILED }
  }
  sealed trait ExecutionStatus { def unwrap: software.amazon.awssdk.services.swf.model.ExecutionStatus }
  object ExecutionStatus {
    def wrap(value: software.amazon.awssdk.services.swf.model.ExecutionStatus): ExecutionStatus = value match {
      case software.amazon.awssdk.services.swf.model.ExecutionStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.ExecutionStatus.OPEN => OPEN
      case software.amazon.awssdk.services.swf.model.ExecutionStatus.CLOSED => CLOSED
    }
    final case object unknownToSdkVersion extends ExecutionStatus { override def unwrap: software.amazon.awssdk.services.swf.model.ExecutionStatus = software.amazon.awssdk.services.swf.model.ExecutionStatus.UNKNOWN_TO_SDK_VERSION }
    final case object OPEN extends ExecutionStatus { override def unwrap: software.amazon.awssdk.services.swf.model.ExecutionStatus = software.amazon.awssdk.services.swf.model.ExecutionStatus.OPEN }
    final case object CLOSED extends ExecutionStatus { override def unwrap: software.amazon.awssdk.services.swf.model.ExecutionStatus = software.amazon.awssdk.services.swf.model.ExecutionStatus.CLOSED }
  }
  case class ExecutionTimeFilter(oldestDate: primitives.Timestamp, latestDate: scala.Option[primitives.Timestamp] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ExecutionTimeFilter = {
      import ExecutionTimeFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ExecutionTimeFilter.builder().oldestDate(oldestDate: java.time.Instant).optionallyWith(latestDate.map(value => value: java.time.Instant))(_.latestDate).build()
    }
    def asReadOnly: ExecutionTimeFilter.ReadOnly = ExecutionTimeFilter.wrap(buildAwsValue())
  }
  object ExecutionTimeFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ExecutionTimeFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecutionTimeFilter = ExecutionTimeFilter(oldestDateValue, latestDateValue.map(value => value))
      def oldestDateValue: primitives.Timestamp
      def latestDateValue: scala.Option[primitives.Timestamp]
      def oldestDate: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(oldestDateValue)
      def latestDate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Timestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("latestDate", latestDateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ExecutionTimeFilter) extends ExecutionTimeFilter.ReadOnly {
      override def oldestDateValue: primitives.Timestamp = impl.oldestDate(): primitives.Timestamp
      override def latestDateValue: scala.Option[primitives.Timestamp] = scala.Option(impl.latestDate()).map(value => value: primitives.Timestamp)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ExecutionTimeFilter): ReadOnly = new Wrapper(impl)
  }
  case class ExternalWorkflowExecutionCancelRequestedEventAttributes(workflowExecution: WorkflowExecution, initiatedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionCancelRequestedEventAttributes = {
      import ExternalWorkflowExecutionCancelRequestedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionCancelRequestedEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).initiatedEventId(initiatedEventId: java.lang.Long).build()
    }
    def asReadOnly: ExternalWorkflowExecutionCancelRequestedEventAttributes.ReadOnly = ExternalWorkflowExecutionCancelRequestedEventAttributes.wrap(buildAwsValue())
  }
  object ExternalWorkflowExecutionCancelRequestedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionCancelRequestedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExternalWorkflowExecutionCancelRequestedEventAttributes = ExternalWorkflowExecutionCancelRequestedEventAttributes(workflowExecutionValue.editable, initiatedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def initiatedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionCancelRequestedEventAttributes) extends ExternalWorkflowExecutionCancelRequestedEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionCancelRequestedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ExternalWorkflowExecutionSignaledEventAttributes(workflowExecution: WorkflowExecution, initiatedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionSignaledEventAttributes = {
      import ExternalWorkflowExecutionSignaledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionSignaledEventAttributes.builder().workflowExecution(workflowExecution.buildAwsValue()).initiatedEventId(initiatedEventId: java.lang.Long).build()
    }
    def asReadOnly: ExternalWorkflowExecutionSignaledEventAttributes.ReadOnly = ExternalWorkflowExecutionSignaledEventAttributes.wrap(buildAwsValue())
  }
  object ExternalWorkflowExecutionSignaledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionSignaledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExternalWorkflowExecutionSignaledEventAttributes = ExternalWorkflowExecutionSignaledEventAttributes(workflowExecutionValue.editable, initiatedEventIdValue)
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def initiatedEventIdValue: primitives.EventId
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionSignaledEventAttributes) extends ExternalWorkflowExecutionSignaledEventAttributes.ReadOnly {
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ExternalWorkflowExecutionSignaledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class FailWorkflowExecutionDecisionAttributes(reason: scala.Option[primitives.FailureReason] = None, details: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.FailWorkflowExecutionDecisionAttributes = {
      import FailWorkflowExecutionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.FailWorkflowExecutionDecisionAttributes.builder().optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: FailWorkflowExecutionDecisionAttributes.ReadOnly = FailWorkflowExecutionDecisionAttributes.wrap(buildAwsValue())
  }
  object FailWorkflowExecutionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.FailWorkflowExecutionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: FailWorkflowExecutionDecisionAttributes = FailWorkflowExecutionDecisionAttributes(reasonValue.map(value => value), detailsValue.map(value => value))
      def reasonValue: scala.Option[primitives.FailureReason]
      def detailsValue: scala.Option[primitives.Data]
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionDecisionAttributes) extends FailWorkflowExecutionDecisionAttributes.ReadOnly {
      override def reasonValue: scala.Option[primitives.FailureReason] = scala.Option(impl.reason()).map(value => value: primitives.FailureReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait FailWorkflowExecutionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause }
  object FailWorkflowExecutionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause): FailWorkflowExecutionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause.UNHANDLED_DECISION => UNHANDLED_DECISION
      case software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends FailWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object UNHANDLED_DECISION extends FailWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause.UNHANDLED_DECISION }
    final case object OPERATION_NOT_PERMITTED extends FailWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class FailWorkflowExecutionFailedEventAttributes(cause: FailWorkflowExecutionFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedEventAttributes = {
      import FailWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedEventAttributes.builder().cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: FailWorkflowExecutionFailedEventAttributes.ReadOnly = FailWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object FailWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: FailWorkflowExecutionFailedEventAttributes = FailWorkflowExecutionFailedEventAttributes(causeValue, decisionTaskCompletedEventIdValue)
      def causeValue: FailWorkflowExecutionFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def cause: ZIO[Any, Nothing, FailWorkflowExecutionFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedEventAttributes) extends FailWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def causeValue: FailWorkflowExecutionFailedCause = FailWorkflowExecutionFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.FailWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class GetWorkflowExecutionHistoryRequest(domain: primitives.DomainName, execution: WorkflowExecution, nextPageToken: scala.Option[primitives.PageToken] = None, maximumPageSize: scala.Option[primitives.PageSize] = None, reverseOrder: scala.Option[primitives.ReverseOrder] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest = {
      import GetWorkflowExecutionHistoryRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest.builder().domain(domain: java.lang.String).execution(execution.buildAwsValue()).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).optionallyWith(maximumPageSize.map(value => value: java.lang.Integer))(_.maximumPageSize).optionallyWith(reverseOrder.map(value => value: java.lang.Boolean))(_.reverseOrder).build()
    }
    def asReadOnly: GetWorkflowExecutionHistoryRequest.ReadOnly = GetWorkflowExecutionHistoryRequest.wrap(buildAwsValue())
  }
  object GetWorkflowExecutionHistoryRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetWorkflowExecutionHistoryRequest = GetWorkflowExecutionHistoryRequest(domainValue, executionValue.editable, nextPageTokenValue.map(value => value), maximumPageSizeValue.map(value => value), reverseOrderValue.map(value => value))
      def domainValue: primitives.DomainName
      def executionValue: WorkflowExecution.ReadOnly
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def maximumPageSizeValue: scala.Option[primitives.PageSize]
      def reverseOrderValue: scala.Option[primitives.ReverseOrder]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def execution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(executionValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def maximumPageSize: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageSize] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumPageSize", maximumPageSizeValue)
      def reverseOrder: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReverseOrder] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reverseOrder", reverseOrderValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest) extends GetWorkflowExecutionHistoryRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def executionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.execution())
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def maximumPageSizeValue: scala.Option[primitives.PageSize] = scala.Option(impl.maximumPageSize()).map(value => value: primitives.PageSize)
      override def reverseOrderValue: scala.Option[primitives.ReverseOrder] = scala.Option(impl.reverseOrder()).map(value => value: primitives.ReverseOrder)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetWorkflowExecutionHistoryResponse(events: Iterable[HistoryEvent], nextPageToken: scala.Option[primitives.PageToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse = {
      import GetWorkflowExecutionHistoryResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse.builder().events(events.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: GetWorkflowExecutionHistoryResponse.ReadOnly = GetWorkflowExecutionHistoryResponse.wrap(buildAwsValue())
  }
  object GetWorkflowExecutionHistoryResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetWorkflowExecutionHistoryResponse = GetWorkflowExecutionHistoryResponse(eventsValue.map { item => 
        item.editable
      }, nextPageTokenValue.map(value => value))
      def eventsValue: List[HistoryEvent.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def events: ZIO[Any, Nothing, List[HistoryEvent.ReadOnly]] = ZIO.succeed(eventsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse) extends GetWorkflowExecutionHistoryResponse.ReadOnly {
      override def eventsValue: List[HistoryEvent.ReadOnly] = impl.events().asScala.map { item => 
        HistoryEvent.wrap(item)
      }.toList
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse): ReadOnly = new Wrapper(impl)
  }
  case class HistoryEvent(eventTimestamp: primitives.Timestamp, eventType: EventType, eventId: primitives.EventId, workflowExecutionStartedEventAttributes: scala.Option[WorkflowExecutionStartedEventAttributes] = None, workflowExecutionCompletedEventAttributes: scala.Option[WorkflowExecutionCompletedEventAttributes] = None, completeWorkflowExecutionFailedEventAttributes: scala.Option[CompleteWorkflowExecutionFailedEventAttributes] = None, workflowExecutionFailedEventAttributes: scala.Option[WorkflowExecutionFailedEventAttributes] = None, failWorkflowExecutionFailedEventAttributes: scala.Option[FailWorkflowExecutionFailedEventAttributes] = None, workflowExecutionTimedOutEventAttributes: scala.Option[WorkflowExecutionTimedOutEventAttributes] = None, workflowExecutionCanceledEventAttributes: scala.Option[WorkflowExecutionCanceledEventAttributes] = None, cancelWorkflowExecutionFailedEventAttributes: scala.Option[CancelWorkflowExecutionFailedEventAttributes] = None, workflowExecutionContinuedAsNewEventAttributes: scala.Option[WorkflowExecutionContinuedAsNewEventAttributes] = None, continueAsNewWorkflowExecutionFailedEventAttributes: scala.Option[ContinueAsNewWorkflowExecutionFailedEventAttributes] = None, workflowExecutionTerminatedEventAttributes: scala.Option[WorkflowExecutionTerminatedEventAttributes] = None, workflowExecutionCancelRequestedEventAttributes: scala.Option[WorkflowExecutionCancelRequestedEventAttributes] = None, decisionTaskScheduledEventAttributes: scala.Option[DecisionTaskScheduledEventAttributes] = None, decisionTaskStartedEventAttributes: scala.Option[DecisionTaskStartedEventAttributes] = None, decisionTaskCompletedEventAttributes: scala.Option[DecisionTaskCompletedEventAttributes] = None, decisionTaskTimedOutEventAttributes: scala.Option[DecisionTaskTimedOutEventAttributes] = None, activityTaskScheduledEventAttributes: scala.Option[ActivityTaskScheduledEventAttributes] = None, activityTaskStartedEventAttributes: scala.Option[ActivityTaskStartedEventAttributes] = None, activityTaskCompletedEventAttributes: scala.Option[ActivityTaskCompletedEventAttributes] = None, activityTaskFailedEventAttributes: scala.Option[ActivityTaskFailedEventAttributes] = None, activityTaskTimedOutEventAttributes: scala.Option[ActivityTaskTimedOutEventAttributes] = None, activityTaskCanceledEventAttributes: scala.Option[ActivityTaskCanceledEventAttributes] = None, activityTaskCancelRequestedEventAttributes: scala.Option[ActivityTaskCancelRequestedEventAttributes] = None, workflowExecutionSignaledEventAttributes: scala.Option[WorkflowExecutionSignaledEventAttributes] = None, markerRecordedEventAttributes: scala.Option[MarkerRecordedEventAttributes] = None, recordMarkerFailedEventAttributes: scala.Option[RecordMarkerFailedEventAttributes] = None, timerStartedEventAttributes: scala.Option[TimerStartedEventAttributes] = None, timerFiredEventAttributes: scala.Option[TimerFiredEventAttributes] = None, timerCanceledEventAttributes: scala.Option[TimerCanceledEventAttributes] = None, startChildWorkflowExecutionInitiatedEventAttributes: scala.Option[StartChildWorkflowExecutionInitiatedEventAttributes] = None, childWorkflowExecutionStartedEventAttributes: scala.Option[ChildWorkflowExecutionStartedEventAttributes] = None, childWorkflowExecutionCompletedEventAttributes: scala.Option[ChildWorkflowExecutionCompletedEventAttributes] = None, childWorkflowExecutionFailedEventAttributes: scala.Option[ChildWorkflowExecutionFailedEventAttributes] = None, childWorkflowExecutionTimedOutEventAttributes: scala.Option[ChildWorkflowExecutionTimedOutEventAttributes] = None, childWorkflowExecutionCanceledEventAttributes: scala.Option[ChildWorkflowExecutionCanceledEventAttributes] = None, childWorkflowExecutionTerminatedEventAttributes: scala.Option[ChildWorkflowExecutionTerminatedEventAttributes] = None, signalExternalWorkflowExecutionInitiatedEventAttributes: scala.Option[SignalExternalWorkflowExecutionInitiatedEventAttributes] = None, externalWorkflowExecutionSignaledEventAttributes: scala.Option[ExternalWorkflowExecutionSignaledEventAttributes] = None, signalExternalWorkflowExecutionFailedEventAttributes: scala.Option[SignalExternalWorkflowExecutionFailedEventAttributes] = None, externalWorkflowExecutionCancelRequestedEventAttributes: scala.Option[ExternalWorkflowExecutionCancelRequestedEventAttributes] = None, requestCancelExternalWorkflowExecutionInitiatedEventAttributes: scala.Option[RequestCancelExternalWorkflowExecutionInitiatedEventAttributes] = None, requestCancelExternalWorkflowExecutionFailedEventAttributes: scala.Option[RequestCancelExternalWorkflowExecutionFailedEventAttributes] = None, scheduleActivityTaskFailedEventAttributes: scala.Option[ScheduleActivityTaskFailedEventAttributes] = None, requestCancelActivityTaskFailedEventAttributes: scala.Option[RequestCancelActivityTaskFailedEventAttributes] = None, startTimerFailedEventAttributes: scala.Option[StartTimerFailedEventAttributes] = None, cancelTimerFailedEventAttributes: scala.Option[CancelTimerFailedEventAttributes] = None, startChildWorkflowExecutionFailedEventAttributes: scala.Option[StartChildWorkflowExecutionFailedEventAttributes] = None, lambdaFunctionScheduledEventAttributes: scala.Option[LambdaFunctionScheduledEventAttributes] = None, lambdaFunctionStartedEventAttributes: scala.Option[LambdaFunctionStartedEventAttributes] = None, lambdaFunctionCompletedEventAttributes: scala.Option[LambdaFunctionCompletedEventAttributes] = None, lambdaFunctionFailedEventAttributes: scala.Option[LambdaFunctionFailedEventAttributes] = None, lambdaFunctionTimedOutEventAttributes: scala.Option[LambdaFunctionTimedOutEventAttributes] = None, scheduleLambdaFunctionFailedEventAttributes: scala.Option[ScheduleLambdaFunctionFailedEventAttributes] = None, startLambdaFunctionFailedEventAttributes: scala.Option[StartLambdaFunctionFailedEventAttributes] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.HistoryEvent = {
      import HistoryEvent.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.HistoryEvent.builder().eventTimestamp(eventTimestamp: java.time.Instant).eventType(eventType.unwrap).eventId(eventId: java.lang.Long).optionallyWith(workflowExecutionStartedEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionStartedEventAttributes).optionallyWith(workflowExecutionCompletedEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionCompletedEventAttributes).optionallyWith(completeWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.completeWorkflowExecutionFailedEventAttributes).optionallyWith(workflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionFailedEventAttributes).optionallyWith(failWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.failWorkflowExecutionFailedEventAttributes).optionallyWith(workflowExecutionTimedOutEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionTimedOutEventAttributes).optionallyWith(workflowExecutionCanceledEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionCanceledEventAttributes).optionallyWith(cancelWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.cancelWorkflowExecutionFailedEventAttributes).optionallyWith(workflowExecutionContinuedAsNewEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionContinuedAsNewEventAttributes).optionallyWith(continueAsNewWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.continueAsNewWorkflowExecutionFailedEventAttributes).optionallyWith(workflowExecutionTerminatedEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionTerminatedEventAttributes).optionallyWith(workflowExecutionCancelRequestedEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionCancelRequestedEventAttributes).optionallyWith(decisionTaskScheduledEventAttributes.map(value => value.buildAwsValue()))(_.decisionTaskScheduledEventAttributes).optionallyWith(decisionTaskStartedEventAttributes.map(value => value.buildAwsValue()))(_.decisionTaskStartedEventAttributes).optionallyWith(decisionTaskCompletedEventAttributes.map(value => value.buildAwsValue()))(_.decisionTaskCompletedEventAttributes).optionallyWith(decisionTaskTimedOutEventAttributes.map(value => value.buildAwsValue()))(_.decisionTaskTimedOutEventAttributes).optionallyWith(activityTaskScheduledEventAttributes.map(value => value.buildAwsValue()))(_.activityTaskScheduledEventAttributes).optionallyWith(activityTaskStartedEventAttributes.map(value => value.buildAwsValue()))(_.activityTaskStartedEventAttributes).optionallyWith(activityTaskCompletedEventAttributes.map(value => value.buildAwsValue()))(_.activityTaskCompletedEventAttributes).optionallyWith(activityTaskFailedEventAttributes.map(value => value.buildAwsValue()))(_.activityTaskFailedEventAttributes).optionallyWith(activityTaskTimedOutEventAttributes.map(value => value.buildAwsValue()))(_.activityTaskTimedOutEventAttributes).optionallyWith(activityTaskCanceledEventAttributes.map(value => value.buildAwsValue()))(_.activityTaskCanceledEventAttributes).optionallyWith(activityTaskCancelRequestedEventAttributes.map(value => value.buildAwsValue()))(_.activityTaskCancelRequestedEventAttributes).optionallyWith(workflowExecutionSignaledEventAttributes.map(value => value.buildAwsValue()))(_.workflowExecutionSignaledEventAttributes).optionallyWith(markerRecordedEventAttributes.map(value => value.buildAwsValue()))(_.markerRecordedEventAttributes).optionallyWith(recordMarkerFailedEventAttributes.map(value => value.buildAwsValue()))(_.recordMarkerFailedEventAttributes).optionallyWith(timerStartedEventAttributes.map(value => value.buildAwsValue()))(_.timerStartedEventAttributes).optionallyWith(timerFiredEventAttributes.map(value => value.buildAwsValue()))(_.timerFiredEventAttributes).optionallyWith(timerCanceledEventAttributes.map(value => value.buildAwsValue()))(_.timerCanceledEventAttributes).optionallyWith(startChildWorkflowExecutionInitiatedEventAttributes.map(value => value.buildAwsValue()))(_.startChildWorkflowExecutionInitiatedEventAttributes).optionallyWith(childWorkflowExecutionStartedEventAttributes.map(value => value.buildAwsValue()))(_.childWorkflowExecutionStartedEventAttributes).optionallyWith(childWorkflowExecutionCompletedEventAttributes.map(value => value.buildAwsValue()))(_.childWorkflowExecutionCompletedEventAttributes).optionallyWith(childWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.childWorkflowExecutionFailedEventAttributes).optionallyWith(childWorkflowExecutionTimedOutEventAttributes.map(value => value.buildAwsValue()))(_.childWorkflowExecutionTimedOutEventAttributes).optionallyWith(childWorkflowExecutionCanceledEventAttributes.map(value => value.buildAwsValue()))(_.childWorkflowExecutionCanceledEventAttributes).optionallyWith(childWorkflowExecutionTerminatedEventAttributes.map(value => value.buildAwsValue()))(_.childWorkflowExecutionTerminatedEventAttributes).optionallyWith(signalExternalWorkflowExecutionInitiatedEventAttributes.map(value => value.buildAwsValue()))(_.signalExternalWorkflowExecutionInitiatedEventAttributes).optionallyWith(externalWorkflowExecutionSignaledEventAttributes.map(value => value.buildAwsValue()))(_.externalWorkflowExecutionSignaledEventAttributes).optionallyWith(signalExternalWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.signalExternalWorkflowExecutionFailedEventAttributes).optionallyWith(externalWorkflowExecutionCancelRequestedEventAttributes.map(value => value.buildAwsValue()))(_.externalWorkflowExecutionCancelRequestedEventAttributes).optionallyWith(requestCancelExternalWorkflowExecutionInitiatedEventAttributes.map(value => value.buildAwsValue()))(_.requestCancelExternalWorkflowExecutionInitiatedEventAttributes).optionallyWith(requestCancelExternalWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.requestCancelExternalWorkflowExecutionFailedEventAttributes).optionallyWith(scheduleActivityTaskFailedEventAttributes.map(value => value.buildAwsValue()))(_.scheduleActivityTaskFailedEventAttributes).optionallyWith(requestCancelActivityTaskFailedEventAttributes.map(value => value.buildAwsValue()))(_.requestCancelActivityTaskFailedEventAttributes).optionallyWith(startTimerFailedEventAttributes.map(value => value.buildAwsValue()))(_.startTimerFailedEventAttributes).optionallyWith(cancelTimerFailedEventAttributes.map(value => value.buildAwsValue()))(_.cancelTimerFailedEventAttributes).optionallyWith(startChildWorkflowExecutionFailedEventAttributes.map(value => value.buildAwsValue()))(_.startChildWorkflowExecutionFailedEventAttributes).optionallyWith(lambdaFunctionScheduledEventAttributes.map(value => value.buildAwsValue()))(_.lambdaFunctionScheduledEventAttributes).optionallyWith(lambdaFunctionStartedEventAttributes.map(value => value.buildAwsValue()))(_.lambdaFunctionStartedEventAttributes).optionallyWith(lambdaFunctionCompletedEventAttributes.map(value => value.buildAwsValue()))(_.lambdaFunctionCompletedEventAttributes).optionallyWith(lambdaFunctionFailedEventAttributes.map(value => value.buildAwsValue()))(_.lambdaFunctionFailedEventAttributes).optionallyWith(lambdaFunctionTimedOutEventAttributes.map(value => value.buildAwsValue()))(_.lambdaFunctionTimedOutEventAttributes).optionallyWith(scheduleLambdaFunctionFailedEventAttributes.map(value => value.buildAwsValue()))(_.scheduleLambdaFunctionFailedEventAttributes).optionallyWith(startLambdaFunctionFailedEventAttributes.map(value => value.buildAwsValue()))(_.startLambdaFunctionFailedEventAttributes).build()
    }
    def asReadOnly: HistoryEvent.ReadOnly = HistoryEvent.wrap(buildAwsValue())
  }
  object HistoryEvent {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.HistoryEvent] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: HistoryEvent = HistoryEvent(eventTimestampValue, eventTypeValue, eventIdValue, workflowExecutionStartedEventAttributesValue.map(value => value.editable), workflowExecutionCompletedEventAttributesValue.map(value => value.editable), completeWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), workflowExecutionFailedEventAttributesValue.map(value => value.editable), failWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), workflowExecutionTimedOutEventAttributesValue.map(value => value.editable), workflowExecutionCanceledEventAttributesValue.map(value => value.editable), cancelWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), workflowExecutionContinuedAsNewEventAttributesValue.map(value => value.editable), continueAsNewWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), workflowExecutionTerminatedEventAttributesValue.map(value => value.editable), workflowExecutionCancelRequestedEventAttributesValue.map(value => value.editable), decisionTaskScheduledEventAttributesValue.map(value => value.editable), decisionTaskStartedEventAttributesValue.map(value => value.editable), decisionTaskCompletedEventAttributesValue.map(value => value.editable), decisionTaskTimedOutEventAttributesValue.map(value => value.editable), activityTaskScheduledEventAttributesValue.map(value => value.editable), activityTaskStartedEventAttributesValue.map(value => value.editable), activityTaskCompletedEventAttributesValue.map(value => value.editable), activityTaskFailedEventAttributesValue.map(value => value.editable), activityTaskTimedOutEventAttributesValue.map(value => value.editable), activityTaskCanceledEventAttributesValue.map(value => value.editable), activityTaskCancelRequestedEventAttributesValue.map(value => value.editable), workflowExecutionSignaledEventAttributesValue.map(value => value.editable), markerRecordedEventAttributesValue.map(value => value.editable), recordMarkerFailedEventAttributesValue.map(value => value.editable), timerStartedEventAttributesValue.map(value => value.editable), timerFiredEventAttributesValue.map(value => value.editable), timerCanceledEventAttributesValue.map(value => value.editable), startChildWorkflowExecutionInitiatedEventAttributesValue.map(value => value.editable), childWorkflowExecutionStartedEventAttributesValue.map(value => value.editable), childWorkflowExecutionCompletedEventAttributesValue.map(value => value.editable), childWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), childWorkflowExecutionTimedOutEventAttributesValue.map(value => value.editable), childWorkflowExecutionCanceledEventAttributesValue.map(value => value.editable), childWorkflowExecutionTerminatedEventAttributesValue.map(value => value.editable), signalExternalWorkflowExecutionInitiatedEventAttributesValue.map(value => value.editable), externalWorkflowExecutionSignaledEventAttributesValue.map(value => value.editable), signalExternalWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), externalWorkflowExecutionCancelRequestedEventAttributesValue.map(value => value.editable), requestCancelExternalWorkflowExecutionInitiatedEventAttributesValue.map(value => value.editable), requestCancelExternalWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), scheduleActivityTaskFailedEventAttributesValue.map(value => value.editable), requestCancelActivityTaskFailedEventAttributesValue.map(value => value.editable), startTimerFailedEventAttributesValue.map(value => value.editable), cancelTimerFailedEventAttributesValue.map(value => value.editable), startChildWorkflowExecutionFailedEventAttributesValue.map(value => value.editable), lambdaFunctionScheduledEventAttributesValue.map(value => value.editable), lambdaFunctionStartedEventAttributesValue.map(value => value.editable), lambdaFunctionCompletedEventAttributesValue.map(value => value.editable), lambdaFunctionFailedEventAttributesValue.map(value => value.editable), lambdaFunctionTimedOutEventAttributesValue.map(value => value.editable), scheduleLambdaFunctionFailedEventAttributesValue.map(value => value.editable), startLambdaFunctionFailedEventAttributesValue.map(value => value.editable))
      def eventTimestampValue: primitives.Timestamp
      def eventTypeValue: EventType
      def eventIdValue: primitives.EventId
      def workflowExecutionStartedEventAttributesValue: scala.Option[WorkflowExecutionStartedEventAttributes.ReadOnly]
      def workflowExecutionCompletedEventAttributesValue: scala.Option[WorkflowExecutionCompletedEventAttributes.ReadOnly]
      def completeWorkflowExecutionFailedEventAttributesValue: scala.Option[CompleteWorkflowExecutionFailedEventAttributes.ReadOnly]
      def workflowExecutionFailedEventAttributesValue: scala.Option[WorkflowExecutionFailedEventAttributes.ReadOnly]
      def failWorkflowExecutionFailedEventAttributesValue: scala.Option[FailWorkflowExecutionFailedEventAttributes.ReadOnly]
      def workflowExecutionTimedOutEventAttributesValue: scala.Option[WorkflowExecutionTimedOutEventAttributes.ReadOnly]
      def workflowExecutionCanceledEventAttributesValue: scala.Option[WorkflowExecutionCanceledEventAttributes.ReadOnly]
      def cancelWorkflowExecutionFailedEventAttributesValue: scala.Option[CancelWorkflowExecutionFailedEventAttributes.ReadOnly]
      def workflowExecutionContinuedAsNewEventAttributesValue: scala.Option[WorkflowExecutionContinuedAsNewEventAttributes.ReadOnly]
      def continueAsNewWorkflowExecutionFailedEventAttributesValue: scala.Option[ContinueAsNewWorkflowExecutionFailedEventAttributes.ReadOnly]
      def workflowExecutionTerminatedEventAttributesValue: scala.Option[WorkflowExecutionTerminatedEventAttributes.ReadOnly]
      def workflowExecutionCancelRequestedEventAttributesValue: scala.Option[WorkflowExecutionCancelRequestedEventAttributes.ReadOnly]
      def decisionTaskScheduledEventAttributesValue: scala.Option[DecisionTaskScheduledEventAttributes.ReadOnly]
      def decisionTaskStartedEventAttributesValue: scala.Option[DecisionTaskStartedEventAttributes.ReadOnly]
      def decisionTaskCompletedEventAttributesValue: scala.Option[DecisionTaskCompletedEventAttributes.ReadOnly]
      def decisionTaskTimedOutEventAttributesValue: scala.Option[DecisionTaskTimedOutEventAttributes.ReadOnly]
      def activityTaskScheduledEventAttributesValue: scala.Option[ActivityTaskScheduledEventAttributes.ReadOnly]
      def activityTaskStartedEventAttributesValue: scala.Option[ActivityTaskStartedEventAttributes.ReadOnly]
      def activityTaskCompletedEventAttributesValue: scala.Option[ActivityTaskCompletedEventAttributes.ReadOnly]
      def activityTaskFailedEventAttributesValue: scala.Option[ActivityTaskFailedEventAttributes.ReadOnly]
      def activityTaskTimedOutEventAttributesValue: scala.Option[ActivityTaskTimedOutEventAttributes.ReadOnly]
      def activityTaskCanceledEventAttributesValue: scala.Option[ActivityTaskCanceledEventAttributes.ReadOnly]
      def activityTaskCancelRequestedEventAttributesValue: scala.Option[ActivityTaskCancelRequestedEventAttributes.ReadOnly]
      def workflowExecutionSignaledEventAttributesValue: scala.Option[WorkflowExecutionSignaledEventAttributes.ReadOnly]
      def markerRecordedEventAttributesValue: scala.Option[MarkerRecordedEventAttributes.ReadOnly]
      def recordMarkerFailedEventAttributesValue: scala.Option[RecordMarkerFailedEventAttributes.ReadOnly]
      def timerStartedEventAttributesValue: scala.Option[TimerStartedEventAttributes.ReadOnly]
      def timerFiredEventAttributesValue: scala.Option[TimerFiredEventAttributes.ReadOnly]
      def timerCanceledEventAttributesValue: scala.Option[TimerCanceledEventAttributes.ReadOnly]
      def startChildWorkflowExecutionInitiatedEventAttributesValue: scala.Option[StartChildWorkflowExecutionInitiatedEventAttributes.ReadOnly]
      def childWorkflowExecutionStartedEventAttributesValue: scala.Option[ChildWorkflowExecutionStartedEventAttributes.ReadOnly]
      def childWorkflowExecutionCompletedEventAttributesValue: scala.Option[ChildWorkflowExecutionCompletedEventAttributes.ReadOnly]
      def childWorkflowExecutionFailedEventAttributesValue: scala.Option[ChildWorkflowExecutionFailedEventAttributes.ReadOnly]
      def childWorkflowExecutionTimedOutEventAttributesValue: scala.Option[ChildWorkflowExecutionTimedOutEventAttributes.ReadOnly]
      def childWorkflowExecutionCanceledEventAttributesValue: scala.Option[ChildWorkflowExecutionCanceledEventAttributes.ReadOnly]
      def childWorkflowExecutionTerminatedEventAttributesValue: scala.Option[ChildWorkflowExecutionTerminatedEventAttributes.ReadOnly]
      def signalExternalWorkflowExecutionInitiatedEventAttributesValue: scala.Option[SignalExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly]
      def externalWorkflowExecutionSignaledEventAttributesValue: scala.Option[ExternalWorkflowExecutionSignaledEventAttributes.ReadOnly]
      def signalExternalWorkflowExecutionFailedEventAttributesValue: scala.Option[SignalExternalWorkflowExecutionFailedEventAttributes.ReadOnly]
      def externalWorkflowExecutionCancelRequestedEventAttributesValue: scala.Option[ExternalWorkflowExecutionCancelRequestedEventAttributes.ReadOnly]
      def requestCancelExternalWorkflowExecutionInitiatedEventAttributesValue: scala.Option[RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly]
      def requestCancelExternalWorkflowExecutionFailedEventAttributesValue: scala.Option[RequestCancelExternalWorkflowExecutionFailedEventAttributes.ReadOnly]
      def scheduleActivityTaskFailedEventAttributesValue: scala.Option[ScheduleActivityTaskFailedEventAttributes.ReadOnly]
      def requestCancelActivityTaskFailedEventAttributesValue: scala.Option[RequestCancelActivityTaskFailedEventAttributes.ReadOnly]
      def startTimerFailedEventAttributesValue: scala.Option[StartTimerFailedEventAttributes.ReadOnly]
      def cancelTimerFailedEventAttributesValue: scala.Option[CancelTimerFailedEventAttributes.ReadOnly]
      def startChildWorkflowExecutionFailedEventAttributesValue: scala.Option[StartChildWorkflowExecutionFailedEventAttributes.ReadOnly]
      def lambdaFunctionScheduledEventAttributesValue: scala.Option[LambdaFunctionScheduledEventAttributes.ReadOnly]
      def lambdaFunctionStartedEventAttributesValue: scala.Option[LambdaFunctionStartedEventAttributes.ReadOnly]
      def lambdaFunctionCompletedEventAttributesValue: scala.Option[LambdaFunctionCompletedEventAttributes.ReadOnly]
      def lambdaFunctionFailedEventAttributesValue: scala.Option[LambdaFunctionFailedEventAttributes.ReadOnly]
      def lambdaFunctionTimedOutEventAttributesValue: scala.Option[LambdaFunctionTimedOutEventAttributes.ReadOnly]
      def scheduleLambdaFunctionFailedEventAttributesValue: scala.Option[ScheduleLambdaFunctionFailedEventAttributes.ReadOnly]
      def startLambdaFunctionFailedEventAttributesValue: scala.Option[StartLambdaFunctionFailedEventAttributes.ReadOnly]
      def eventTimestamp: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(eventTimestampValue)
      def eventType: ZIO[Any, Nothing, EventType] = ZIO.succeed(eventTypeValue)
      def eventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(eventIdValue)
      def workflowExecutionStartedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionStartedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionStartedEventAttributes", workflowExecutionStartedEventAttributesValue)
      def workflowExecutionCompletedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionCompletedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionCompletedEventAttributes", workflowExecutionCompletedEventAttributesValue)
      def completeWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CompleteWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("completeWorkflowExecutionFailedEventAttributes", completeWorkflowExecutionFailedEventAttributesValue)
      def workflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionFailedEventAttributes", workflowExecutionFailedEventAttributesValue)
      def failWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FailWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("failWorkflowExecutionFailedEventAttributes", failWorkflowExecutionFailedEventAttributesValue)
      def workflowExecutionTimedOutEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionTimedOutEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionTimedOutEventAttributes", workflowExecutionTimedOutEventAttributesValue)
      def workflowExecutionCanceledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionCanceledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionCanceledEventAttributes", workflowExecutionCanceledEventAttributesValue)
      def cancelWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CancelWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cancelWorkflowExecutionFailedEventAttributes", cancelWorkflowExecutionFailedEventAttributesValue)
      def workflowExecutionContinuedAsNewEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionContinuedAsNewEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionContinuedAsNewEventAttributes", workflowExecutionContinuedAsNewEventAttributesValue)
      def continueAsNewWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ContinueAsNewWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("continueAsNewWorkflowExecutionFailedEventAttributes", continueAsNewWorkflowExecutionFailedEventAttributesValue)
      def workflowExecutionTerminatedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionTerminatedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionTerminatedEventAttributes", workflowExecutionTerminatedEventAttributesValue)
      def workflowExecutionCancelRequestedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionCancelRequestedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionCancelRequestedEventAttributes", workflowExecutionCancelRequestedEventAttributesValue)
      def decisionTaskScheduledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DecisionTaskScheduledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("decisionTaskScheduledEventAttributes", decisionTaskScheduledEventAttributesValue)
      def decisionTaskStartedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DecisionTaskStartedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("decisionTaskStartedEventAttributes", decisionTaskStartedEventAttributesValue)
      def decisionTaskCompletedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DecisionTaskCompletedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("decisionTaskCompletedEventAttributes", decisionTaskCompletedEventAttributesValue)
      def decisionTaskTimedOutEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DecisionTaskTimedOutEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("decisionTaskTimedOutEventAttributes", decisionTaskTimedOutEventAttributesValue)
      def activityTaskScheduledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ActivityTaskScheduledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activityTaskScheduledEventAttributes", activityTaskScheduledEventAttributesValue)
      def activityTaskStartedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ActivityTaskStartedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activityTaskStartedEventAttributes", activityTaskStartedEventAttributesValue)
      def activityTaskCompletedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ActivityTaskCompletedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activityTaskCompletedEventAttributes", activityTaskCompletedEventAttributesValue)
      def activityTaskFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ActivityTaskFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activityTaskFailedEventAttributes", activityTaskFailedEventAttributesValue)
      def activityTaskTimedOutEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ActivityTaskTimedOutEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activityTaskTimedOutEventAttributes", activityTaskTimedOutEventAttributesValue)
      def activityTaskCanceledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ActivityTaskCanceledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activityTaskCanceledEventAttributes", activityTaskCanceledEventAttributesValue)
      def activityTaskCancelRequestedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ActivityTaskCancelRequestedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("activityTaskCancelRequestedEventAttributes", activityTaskCancelRequestedEventAttributesValue)
      def workflowExecutionSignaledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionSignaledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("workflowExecutionSignaledEventAttributes", workflowExecutionSignaledEventAttributesValue)
      def markerRecordedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MarkerRecordedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("markerRecordedEventAttributes", markerRecordedEventAttributesValue)
      def recordMarkerFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RecordMarkerFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("recordMarkerFailedEventAttributes", recordMarkerFailedEventAttributesValue)
      def timerStartedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TimerStartedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timerStartedEventAttributes", timerStartedEventAttributesValue)
      def timerFiredEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TimerFiredEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timerFiredEventAttributes", timerFiredEventAttributesValue)
      def timerCanceledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TimerCanceledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timerCanceledEventAttributes", timerCanceledEventAttributesValue)
      def startChildWorkflowExecutionInitiatedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StartChildWorkflowExecutionInitiatedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startChildWorkflowExecutionInitiatedEventAttributes", startChildWorkflowExecutionInitiatedEventAttributesValue)
      def childWorkflowExecutionStartedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildWorkflowExecutionStartedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childWorkflowExecutionStartedEventAttributes", childWorkflowExecutionStartedEventAttributesValue)
      def childWorkflowExecutionCompletedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildWorkflowExecutionCompletedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childWorkflowExecutionCompletedEventAttributes", childWorkflowExecutionCompletedEventAttributesValue)
      def childWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childWorkflowExecutionFailedEventAttributes", childWorkflowExecutionFailedEventAttributesValue)
      def childWorkflowExecutionTimedOutEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildWorkflowExecutionTimedOutEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childWorkflowExecutionTimedOutEventAttributes", childWorkflowExecutionTimedOutEventAttributesValue)
      def childWorkflowExecutionCanceledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildWorkflowExecutionCanceledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childWorkflowExecutionCanceledEventAttributes", childWorkflowExecutionCanceledEventAttributesValue)
      def childWorkflowExecutionTerminatedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildWorkflowExecutionTerminatedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childWorkflowExecutionTerminatedEventAttributes", childWorkflowExecutionTerminatedEventAttributesValue)
      def signalExternalWorkflowExecutionInitiatedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SignalExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("signalExternalWorkflowExecutionInitiatedEventAttributes", signalExternalWorkflowExecutionInitiatedEventAttributesValue)
      def externalWorkflowExecutionSignaledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExternalWorkflowExecutionSignaledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("externalWorkflowExecutionSignaledEventAttributes", externalWorkflowExecutionSignaledEventAttributesValue)
      def signalExternalWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SignalExternalWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("signalExternalWorkflowExecutionFailedEventAttributes", signalExternalWorkflowExecutionFailedEventAttributesValue)
      def externalWorkflowExecutionCancelRequestedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExternalWorkflowExecutionCancelRequestedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("externalWorkflowExecutionCancelRequestedEventAttributes", externalWorkflowExecutionCancelRequestedEventAttributesValue)
      def requestCancelExternalWorkflowExecutionInitiatedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("requestCancelExternalWorkflowExecutionInitiatedEventAttributes", requestCancelExternalWorkflowExecutionInitiatedEventAttributesValue)
      def requestCancelExternalWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RequestCancelExternalWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("requestCancelExternalWorkflowExecutionFailedEventAttributes", requestCancelExternalWorkflowExecutionFailedEventAttributesValue)
      def scheduleActivityTaskFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ScheduleActivityTaskFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleActivityTaskFailedEventAttributes", scheduleActivityTaskFailedEventAttributesValue)
      def requestCancelActivityTaskFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RequestCancelActivityTaskFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("requestCancelActivityTaskFailedEventAttributes", requestCancelActivityTaskFailedEventAttributesValue)
      def startTimerFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StartTimerFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startTimerFailedEventAttributes", startTimerFailedEventAttributesValue)
      def cancelTimerFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CancelTimerFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cancelTimerFailedEventAttributes", cancelTimerFailedEventAttributesValue)
      def startChildWorkflowExecutionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StartChildWorkflowExecutionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startChildWorkflowExecutionFailedEventAttributes", startChildWorkflowExecutionFailedEventAttributesValue)
      def lambdaFunctionScheduledEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LambdaFunctionScheduledEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaFunctionScheduledEventAttributes", lambdaFunctionScheduledEventAttributesValue)
      def lambdaFunctionStartedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LambdaFunctionStartedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaFunctionStartedEventAttributes", lambdaFunctionStartedEventAttributesValue)
      def lambdaFunctionCompletedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LambdaFunctionCompletedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaFunctionCompletedEventAttributes", lambdaFunctionCompletedEventAttributesValue)
      def lambdaFunctionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LambdaFunctionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaFunctionFailedEventAttributes", lambdaFunctionFailedEventAttributesValue)
      def lambdaFunctionTimedOutEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LambdaFunctionTimedOutEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaFunctionTimedOutEventAttributes", lambdaFunctionTimedOutEventAttributesValue)
      def scheduleLambdaFunctionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ScheduleLambdaFunctionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleLambdaFunctionFailedEventAttributes", scheduleLambdaFunctionFailedEventAttributesValue)
      def startLambdaFunctionFailedEventAttributes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StartLambdaFunctionFailedEventAttributes.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startLambdaFunctionFailedEventAttributes", startLambdaFunctionFailedEventAttributesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.HistoryEvent) extends HistoryEvent.ReadOnly {
      override def eventTimestampValue: primitives.Timestamp = impl.eventTimestamp(): primitives.Timestamp
      override def eventTypeValue: EventType = EventType.wrap(impl.eventType())
      override def eventIdValue: primitives.EventId = impl.eventId(): primitives.EventId
      override def workflowExecutionStartedEventAttributesValue: scala.Option[WorkflowExecutionStartedEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionStartedEventAttributes()).map(value => WorkflowExecutionStartedEventAttributes.wrap(value))
      override def workflowExecutionCompletedEventAttributesValue: scala.Option[WorkflowExecutionCompletedEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionCompletedEventAttributes()).map(value => WorkflowExecutionCompletedEventAttributes.wrap(value))
      override def completeWorkflowExecutionFailedEventAttributesValue: scala.Option[CompleteWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.completeWorkflowExecutionFailedEventAttributes()).map(value => CompleteWorkflowExecutionFailedEventAttributes.wrap(value))
      override def workflowExecutionFailedEventAttributesValue: scala.Option[WorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionFailedEventAttributes()).map(value => WorkflowExecutionFailedEventAttributes.wrap(value))
      override def failWorkflowExecutionFailedEventAttributesValue: scala.Option[FailWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.failWorkflowExecutionFailedEventAttributes()).map(value => FailWorkflowExecutionFailedEventAttributes.wrap(value))
      override def workflowExecutionTimedOutEventAttributesValue: scala.Option[WorkflowExecutionTimedOutEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionTimedOutEventAttributes()).map(value => WorkflowExecutionTimedOutEventAttributes.wrap(value))
      override def workflowExecutionCanceledEventAttributesValue: scala.Option[WorkflowExecutionCanceledEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionCanceledEventAttributes()).map(value => WorkflowExecutionCanceledEventAttributes.wrap(value))
      override def cancelWorkflowExecutionFailedEventAttributesValue: scala.Option[CancelWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.cancelWorkflowExecutionFailedEventAttributes()).map(value => CancelWorkflowExecutionFailedEventAttributes.wrap(value))
      override def workflowExecutionContinuedAsNewEventAttributesValue: scala.Option[WorkflowExecutionContinuedAsNewEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionContinuedAsNewEventAttributes()).map(value => WorkflowExecutionContinuedAsNewEventAttributes.wrap(value))
      override def continueAsNewWorkflowExecutionFailedEventAttributesValue: scala.Option[ContinueAsNewWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.continueAsNewWorkflowExecutionFailedEventAttributes()).map(value => ContinueAsNewWorkflowExecutionFailedEventAttributes.wrap(value))
      override def workflowExecutionTerminatedEventAttributesValue: scala.Option[WorkflowExecutionTerminatedEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionTerminatedEventAttributes()).map(value => WorkflowExecutionTerminatedEventAttributes.wrap(value))
      override def workflowExecutionCancelRequestedEventAttributesValue: scala.Option[WorkflowExecutionCancelRequestedEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionCancelRequestedEventAttributes()).map(value => WorkflowExecutionCancelRequestedEventAttributes.wrap(value))
      override def decisionTaskScheduledEventAttributesValue: scala.Option[DecisionTaskScheduledEventAttributes.ReadOnly] = scala.Option(impl.decisionTaskScheduledEventAttributes()).map(value => DecisionTaskScheduledEventAttributes.wrap(value))
      override def decisionTaskStartedEventAttributesValue: scala.Option[DecisionTaskStartedEventAttributes.ReadOnly] = scala.Option(impl.decisionTaskStartedEventAttributes()).map(value => DecisionTaskStartedEventAttributes.wrap(value))
      override def decisionTaskCompletedEventAttributesValue: scala.Option[DecisionTaskCompletedEventAttributes.ReadOnly] = scala.Option(impl.decisionTaskCompletedEventAttributes()).map(value => DecisionTaskCompletedEventAttributes.wrap(value))
      override def decisionTaskTimedOutEventAttributesValue: scala.Option[DecisionTaskTimedOutEventAttributes.ReadOnly] = scala.Option(impl.decisionTaskTimedOutEventAttributes()).map(value => DecisionTaskTimedOutEventAttributes.wrap(value))
      override def activityTaskScheduledEventAttributesValue: scala.Option[ActivityTaskScheduledEventAttributes.ReadOnly] = scala.Option(impl.activityTaskScheduledEventAttributes()).map(value => ActivityTaskScheduledEventAttributes.wrap(value))
      override def activityTaskStartedEventAttributesValue: scala.Option[ActivityTaskStartedEventAttributes.ReadOnly] = scala.Option(impl.activityTaskStartedEventAttributes()).map(value => ActivityTaskStartedEventAttributes.wrap(value))
      override def activityTaskCompletedEventAttributesValue: scala.Option[ActivityTaskCompletedEventAttributes.ReadOnly] = scala.Option(impl.activityTaskCompletedEventAttributes()).map(value => ActivityTaskCompletedEventAttributes.wrap(value))
      override def activityTaskFailedEventAttributesValue: scala.Option[ActivityTaskFailedEventAttributes.ReadOnly] = scala.Option(impl.activityTaskFailedEventAttributes()).map(value => ActivityTaskFailedEventAttributes.wrap(value))
      override def activityTaskTimedOutEventAttributesValue: scala.Option[ActivityTaskTimedOutEventAttributes.ReadOnly] = scala.Option(impl.activityTaskTimedOutEventAttributes()).map(value => ActivityTaskTimedOutEventAttributes.wrap(value))
      override def activityTaskCanceledEventAttributesValue: scala.Option[ActivityTaskCanceledEventAttributes.ReadOnly] = scala.Option(impl.activityTaskCanceledEventAttributes()).map(value => ActivityTaskCanceledEventAttributes.wrap(value))
      override def activityTaskCancelRequestedEventAttributesValue: scala.Option[ActivityTaskCancelRequestedEventAttributes.ReadOnly] = scala.Option(impl.activityTaskCancelRequestedEventAttributes()).map(value => ActivityTaskCancelRequestedEventAttributes.wrap(value))
      override def workflowExecutionSignaledEventAttributesValue: scala.Option[WorkflowExecutionSignaledEventAttributes.ReadOnly] = scala.Option(impl.workflowExecutionSignaledEventAttributes()).map(value => WorkflowExecutionSignaledEventAttributes.wrap(value))
      override def markerRecordedEventAttributesValue: scala.Option[MarkerRecordedEventAttributes.ReadOnly] = scala.Option(impl.markerRecordedEventAttributes()).map(value => MarkerRecordedEventAttributes.wrap(value))
      override def recordMarkerFailedEventAttributesValue: scala.Option[RecordMarkerFailedEventAttributes.ReadOnly] = scala.Option(impl.recordMarkerFailedEventAttributes()).map(value => RecordMarkerFailedEventAttributes.wrap(value))
      override def timerStartedEventAttributesValue: scala.Option[TimerStartedEventAttributes.ReadOnly] = scala.Option(impl.timerStartedEventAttributes()).map(value => TimerStartedEventAttributes.wrap(value))
      override def timerFiredEventAttributesValue: scala.Option[TimerFiredEventAttributes.ReadOnly] = scala.Option(impl.timerFiredEventAttributes()).map(value => TimerFiredEventAttributes.wrap(value))
      override def timerCanceledEventAttributesValue: scala.Option[TimerCanceledEventAttributes.ReadOnly] = scala.Option(impl.timerCanceledEventAttributes()).map(value => TimerCanceledEventAttributes.wrap(value))
      override def startChildWorkflowExecutionInitiatedEventAttributesValue: scala.Option[StartChildWorkflowExecutionInitiatedEventAttributes.ReadOnly] = scala.Option(impl.startChildWorkflowExecutionInitiatedEventAttributes()).map(value => StartChildWorkflowExecutionInitiatedEventAttributes.wrap(value))
      override def childWorkflowExecutionStartedEventAttributesValue: scala.Option[ChildWorkflowExecutionStartedEventAttributes.ReadOnly] = scala.Option(impl.childWorkflowExecutionStartedEventAttributes()).map(value => ChildWorkflowExecutionStartedEventAttributes.wrap(value))
      override def childWorkflowExecutionCompletedEventAttributesValue: scala.Option[ChildWorkflowExecutionCompletedEventAttributes.ReadOnly] = scala.Option(impl.childWorkflowExecutionCompletedEventAttributes()).map(value => ChildWorkflowExecutionCompletedEventAttributes.wrap(value))
      override def childWorkflowExecutionFailedEventAttributesValue: scala.Option[ChildWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.childWorkflowExecutionFailedEventAttributes()).map(value => ChildWorkflowExecutionFailedEventAttributes.wrap(value))
      override def childWorkflowExecutionTimedOutEventAttributesValue: scala.Option[ChildWorkflowExecutionTimedOutEventAttributes.ReadOnly] = scala.Option(impl.childWorkflowExecutionTimedOutEventAttributes()).map(value => ChildWorkflowExecutionTimedOutEventAttributes.wrap(value))
      override def childWorkflowExecutionCanceledEventAttributesValue: scala.Option[ChildWorkflowExecutionCanceledEventAttributes.ReadOnly] = scala.Option(impl.childWorkflowExecutionCanceledEventAttributes()).map(value => ChildWorkflowExecutionCanceledEventAttributes.wrap(value))
      override def childWorkflowExecutionTerminatedEventAttributesValue: scala.Option[ChildWorkflowExecutionTerminatedEventAttributes.ReadOnly] = scala.Option(impl.childWorkflowExecutionTerminatedEventAttributes()).map(value => ChildWorkflowExecutionTerminatedEventAttributes.wrap(value))
      override def signalExternalWorkflowExecutionInitiatedEventAttributesValue: scala.Option[SignalExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly] = scala.Option(impl.signalExternalWorkflowExecutionInitiatedEventAttributes()).map(value => SignalExternalWorkflowExecutionInitiatedEventAttributes.wrap(value))
      override def externalWorkflowExecutionSignaledEventAttributesValue: scala.Option[ExternalWorkflowExecutionSignaledEventAttributes.ReadOnly] = scala.Option(impl.externalWorkflowExecutionSignaledEventAttributes()).map(value => ExternalWorkflowExecutionSignaledEventAttributes.wrap(value))
      override def signalExternalWorkflowExecutionFailedEventAttributesValue: scala.Option[SignalExternalWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.signalExternalWorkflowExecutionFailedEventAttributes()).map(value => SignalExternalWorkflowExecutionFailedEventAttributes.wrap(value))
      override def externalWorkflowExecutionCancelRequestedEventAttributesValue: scala.Option[ExternalWorkflowExecutionCancelRequestedEventAttributes.ReadOnly] = scala.Option(impl.externalWorkflowExecutionCancelRequestedEventAttributes()).map(value => ExternalWorkflowExecutionCancelRequestedEventAttributes.wrap(value))
      override def requestCancelExternalWorkflowExecutionInitiatedEventAttributesValue: scala.Option[RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly] = scala.Option(impl.requestCancelExternalWorkflowExecutionInitiatedEventAttributes()).map(value => RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.wrap(value))
      override def requestCancelExternalWorkflowExecutionFailedEventAttributesValue: scala.Option[RequestCancelExternalWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.requestCancelExternalWorkflowExecutionFailedEventAttributes()).map(value => RequestCancelExternalWorkflowExecutionFailedEventAttributes.wrap(value))
      override def scheduleActivityTaskFailedEventAttributesValue: scala.Option[ScheduleActivityTaskFailedEventAttributes.ReadOnly] = scala.Option(impl.scheduleActivityTaskFailedEventAttributes()).map(value => ScheduleActivityTaskFailedEventAttributes.wrap(value))
      override def requestCancelActivityTaskFailedEventAttributesValue: scala.Option[RequestCancelActivityTaskFailedEventAttributes.ReadOnly] = scala.Option(impl.requestCancelActivityTaskFailedEventAttributes()).map(value => RequestCancelActivityTaskFailedEventAttributes.wrap(value))
      override def startTimerFailedEventAttributesValue: scala.Option[StartTimerFailedEventAttributes.ReadOnly] = scala.Option(impl.startTimerFailedEventAttributes()).map(value => StartTimerFailedEventAttributes.wrap(value))
      override def cancelTimerFailedEventAttributesValue: scala.Option[CancelTimerFailedEventAttributes.ReadOnly] = scala.Option(impl.cancelTimerFailedEventAttributes()).map(value => CancelTimerFailedEventAttributes.wrap(value))
      override def startChildWorkflowExecutionFailedEventAttributesValue: scala.Option[StartChildWorkflowExecutionFailedEventAttributes.ReadOnly] = scala.Option(impl.startChildWorkflowExecutionFailedEventAttributes()).map(value => StartChildWorkflowExecutionFailedEventAttributes.wrap(value))
      override def lambdaFunctionScheduledEventAttributesValue: scala.Option[LambdaFunctionScheduledEventAttributes.ReadOnly] = scala.Option(impl.lambdaFunctionScheduledEventAttributes()).map(value => LambdaFunctionScheduledEventAttributes.wrap(value))
      override def lambdaFunctionStartedEventAttributesValue: scala.Option[LambdaFunctionStartedEventAttributes.ReadOnly] = scala.Option(impl.lambdaFunctionStartedEventAttributes()).map(value => LambdaFunctionStartedEventAttributes.wrap(value))
      override def lambdaFunctionCompletedEventAttributesValue: scala.Option[LambdaFunctionCompletedEventAttributes.ReadOnly] = scala.Option(impl.lambdaFunctionCompletedEventAttributes()).map(value => LambdaFunctionCompletedEventAttributes.wrap(value))
      override def lambdaFunctionFailedEventAttributesValue: scala.Option[LambdaFunctionFailedEventAttributes.ReadOnly] = scala.Option(impl.lambdaFunctionFailedEventAttributes()).map(value => LambdaFunctionFailedEventAttributes.wrap(value))
      override def lambdaFunctionTimedOutEventAttributesValue: scala.Option[LambdaFunctionTimedOutEventAttributes.ReadOnly] = scala.Option(impl.lambdaFunctionTimedOutEventAttributes()).map(value => LambdaFunctionTimedOutEventAttributes.wrap(value))
      override def scheduleLambdaFunctionFailedEventAttributesValue: scala.Option[ScheduleLambdaFunctionFailedEventAttributes.ReadOnly] = scala.Option(impl.scheduleLambdaFunctionFailedEventAttributes()).map(value => ScheduleLambdaFunctionFailedEventAttributes.wrap(value))
      override def startLambdaFunctionFailedEventAttributesValue: scala.Option[StartLambdaFunctionFailedEventAttributes.ReadOnly] = scala.Option(impl.startLambdaFunctionFailedEventAttributes()).map(value => StartLambdaFunctionFailedEventAttributes.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.HistoryEvent): ReadOnly = new Wrapper(impl)
  }
  type HistoryEventList = List[HistoryEvent]
  case class LambdaFunctionCompletedEventAttributes(scheduledEventId: primitives.EventId, startedEventId: primitives.EventId, result: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.LambdaFunctionCompletedEventAttributes = {
      import LambdaFunctionCompletedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.LambdaFunctionCompletedEventAttributes.builder().scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).optionallyWith(result.map(value => value: java.lang.String))(_.result).build()
    }
    def asReadOnly: LambdaFunctionCompletedEventAttributes.ReadOnly = LambdaFunctionCompletedEventAttributes.wrap(buildAwsValue())
  }
  object LambdaFunctionCompletedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.LambdaFunctionCompletedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LambdaFunctionCompletedEventAttributes = LambdaFunctionCompletedEventAttributes(scheduledEventIdValue, startedEventIdValue, resultValue.map(value => value))
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def resultValue: scala.Option[primitives.Data]
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def result: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("result", resultValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionCompletedEventAttributes) extends LambdaFunctionCompletedEventAttributes.ReadOnly {
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def resultValue: scala.Option[primitives.Data] = scala.Option(impl.result()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionCompletedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class LambdaFunctionFailedEventAttributes(scheduledEventId: primitives.EventId, startedEventId: primitives.EventId, reason: scala.Option[primitives.FailureReason] = None, details: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.LambdaFunctionFailedEventAttributes = {
      import LambdaFunctionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.LambdaFunctionFailedEventAttributes.builder().scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: LambdaFunctionFailedEventAttributes.ReadOnly = LambdaFunctionFailedEventAttributes.wrap(buildAwsValue())
  }
  object LambdaFunctionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.LambdaFunctionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LambdaFunctionFailedEventAttributes = LambdaFunctionFailedEventAttributes(scheduledEventIdValue, startedEventIdValue, reasonValue.map(value => value), detailsValue.map(value => value))
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def reasonValue: scala.Option[primitives.FailureReason]
      def detailsValue: scala.Option[primitives.Data]
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionFailedEventAttributes) extends LambdaFunctionFailedEventAttributes.ReadOnly {
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def reasonValue: scala.Option[primitives.FailureReason] = scala.Option(impl.reason()).map(value => value: primitives.FailureReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class LambdaFunctionScheduledEventAttributes(id: primitives.FunctionId, name: primitives.FunctionName, control: scala.Option[primitives.Data] = None, input: scala.Option[primitives.FunctionInput] = None, startToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.LambdaFunctionScheduledEventAttributes = {
      import LambdaFunctionScheduledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.LambdaFunctionScheduledEventAttributes.builder().id(id: java.lang.String).name(name: java.lang.String).optionallyWith(control.map(value => value: java.lang.String))(_.control).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(startToCloseTimeout.map(value => value: java.lang.String))(_.startToCloseTimeout).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: LambdaFunctionScheduledEventAttributes.ReadOnly = LambdaFunctionScheduledEventAttributes.wrap(buildAwsValue())
  }
  object LambdaFunctionScheduledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.LambdaFunctionScheduledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LambdaFunctionScheduledEventAttributes = LambdaFunctionScheduledEventAttributes(idValue, nameValue, controlValue.map(value => value), inputValue.map(value => value), startToCloseTimeoutValue.map(value => value), decisionTaskCompletedEventIdValue)
      def idValue: primitives.FunctionId
      def nameValue: primitives.FunctionName
      def controlValue: scala.Option[primitives.Data]
      def inputValue: scala.Option[primitives.FunctionInput]
      def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def id: ZIO[Any, Nothing, primitives.FunctionId] = ZIO.succeed(idValue)
      def name: ZIO[Any, Nothing, primitives.FunctionName] = ZIO.succeed(nameValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FunctionInput] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def startToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startToCloseTimeout", startToCloseTimeoutValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionScheduledEventAttributes) extends LambdaFunctionScheduledEventAttributes.ReadOnly {
      override def idValue: primitives.FunctionId = impl.id(): primitives.FunctionId
      override def nameValue: primitives.FunctionName = impl.name(): primitives.FunctionName
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def inputValue: scala.Option[primitives.FunctionInput] = scala.Option(impl.input()).map(value => value: primitives.FunctionInput)
      override def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.startToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionScheduledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class LambdaFunctionStartedEventAttributes(scheduledEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.LambdaFunctionStartedEventAttributes = {
      import LambdaFunctionStartedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.LambdaFunctionStartedEventAttributes.builder().scheduledEventId(scheduledEventId: java.lang.Long).build()
    }
    def asReadOnly: LambdaFunctionStartedEventAttributes.ReadOnly = LambdaFunctionStartedEventAttributes.wrap(buildAwsValue())
  }
  object LambdaFunctionStartedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.LambdaFunctionStartedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LambdaFunctionStartedEventAttributes = LambdaFunctionStartedEventAttributes(scheduledEventIdValue)
      def scheduledEventIdValue: primitives.EventId
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionStartedEventAttributes) extends LambdaFunctionStartedEventAttributes.ReadOnly { override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId }
    def wrap(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionStartedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class LambdaFunctionTimedOutEventAttributes(scheduledEventId: primitives.EventId, startedEventId: primitives.EventId, timeoutType: scala.Option[LambdaFunctionTimeoutType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.LambdaFunctionTimedOutEventAttributes = {
      import LambdaFunctionTimedOutEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.LambdaFunctionTimedOutEventAttributes.builder().scheduledEventId(scheduledEventId: java.lang.Long).startedEventId(startedEventId: java.lang.Long).optionallyWith(timeoutType.map(value => value.unwrap))(_.timeoutType).build()
    }
    def asReadOnly: LambdaFunctionTimedOutEventAttributes.ReadOnly = LambdaFunctionTimedOutEventAttributes.wrap(buildAwsValue())
  }
  object LambdaFunctionTimedOutEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.LambdaFunctionTimedOutEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: LambdaFunctionTimedOutEventAttributes = LambdaFunctionTimedOutEventAttributes(scheduledEventIdValue, startedEventIdValue, timeoutTypeValue.map(value => value))
      def scheduledEventIdValue: primitives.EventId
      def startedEventIdValue: primitives.EventId
      def timeoutTypeValue: scala.Option[LambdaFunctionTimeoutType]
      def scheduledEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(scheduledEventIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def timeoutType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, LambdaFunctionTimeoutType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timeoutType", timeoutTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionTimedOutEventAttributes) extends LambdaFunctionTimedOutEventAttributes.ReadOnly {
      override def scheduledEventIdValue: primitives.EventId = impl.scheduledEventId(): primitives.EventId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def timeoutTypeValue: scala.Option[LambdaFunctionTimeoutType] = scala.Option(impl.timeoutType()).map(value => LambdaFunctionTimeoutType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.LambdaFunctionTimedOutEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait LambdaFunctionTimeoutType { def unwrap: software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType }
  object LambdaFunctionTimeoutType {
    def wrap(value: software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType): LambdaFunctionTimeoutType = value match {
      case software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType.START_TO_CLOSE => START_TO_CLOSE
    }
    final case object unknownToSdkVersion extends LambdaFunctionTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType = software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType.UNKNOWN_TO_SDK_VERSION }
    final case object START_TO_CLOSE extends LambdaFunctionTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType = software.amazon.awssdk.services.swf.model.LambdaFunctionTimeoutType.START_TO_CLOSE }
  }
  case class ListActivityTypesRequest(domain: primitives.DomainName, name: scala.Option[primitives.Name] = None, registrationStatus: RegistrationStatus, nextPageToken: scala.Option[primitives.PageToken] = None, maximumPageSize: scala.Option[primitives.PageSize] = None, reverseOrder: scala.Option[primitives.ReverseOrder] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListActivityTypesRequest = {
      import ListActivityTypesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListActivityTypesRequest.builder().domain(domain: java.lang.String).optionallyWith(name.map(value => value: java.lang.String))(_.name).registrationStatus(registrationStatus.unwrap).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).optionallyWith(maximumPageSize.map(value => value: java.lang.Integer))(_.maximumPageSize).optionallyWith(reverseOrder.map(value => value: java.lang.Boolean))(_.reverseOrder).build()
    }
    def asReadOnly: ListActivityTypesRequest.ReadOnly = ListActivityTypesRequest.wrap(buildAwsValue())
  }
  object ListActivityTypesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListActivityTypesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListActivityTypesRequest = ListActivityTypesRequest(domainValue, nameValue.map(value => value), registrationStatusValue, nextPageTokenValue.map(value => value), maximumPageSizeValue.map(value => value), reverseOrderValue.map(value => value))
      def domainValue: primitives.DomainName
      def nameValue: scala.Option[primitives.Name]
      def registrationStatusValue: RegistrationStatus
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def maximumPageSizeValue: scala.Option[primitives.PageSize]
      def reverseOrderValue: scala.Option[primitives.ReverseOrder]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Name] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def registrationStatus: ZIO[Any, Nothing, RegistrationStatus] = ZIO.succeed(registrationStatusValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def maximumPageSize: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageSize] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumPageSize", maximumPageSizeValue)
      def reverseOrder: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReverseOrder] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reverseOrder", reverseOrderValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListActivityTypesRequest) extends ListActivityTypesRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def nameValue: scala.Option[primitives.Name] = scala.Option(impl.name()).map(value => value: primitives.Name)
      override def registrationStatusValue: RegistrationStatus = RegistrationStatus.wrap(impl.registrationStatus())
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def maximumPageSizeValue: scala.Option[primitives.PageSize] = scala.Option(impl.maximumPageSize()).map(value => value: primitives.PageSize)
      override def reverseOrderValue: scala.Option[primitives.ReverseOrder] = scala.Option(impl.reverseOrder()).map(value => value: primitives.ReverseOrder)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListActivityTypesRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListActivityTypesResponse(typeInfos: Iterable[ActivityTypeInfo], nextPageToken: scala.Option[primitives.PageToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListActivityTypesResponse = {
      import ListActivityTypesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListActivityTypesResponse.builder().typeInfos(typeInfos.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: ListActivityTypesResponse.ReadOnly = ListActivityTypesResponse.wrap(buildAwsValue())
  }
  object ListActivityTypesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListActivityTypesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListActivityTypesResponse = ListActivityTypesResponse(typeInfosValue.map { item => 
        item.editable
      }, nextPageTokenValue.map(value => value))
      def typeInfosValue: List[ActivityTypeInfo.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def typeInfos: ZIO[Any, Nothing, List[ActivityTypeInfo.ReadOnly]] = ZIO.succeed(typeInfosValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListActivityTypesResponse) extends ListActivityTypesResponse.ReadOnly {
      override def typeInfosValue: List[ActivityTypeInfo.ReadOnly] = impl.typeInfos().asScala.map { item => 
        ActivityTypeInfo.wrap(item)
      }.toList
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListActivityTypesResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListClosedWorkflowExecutionsRequest(domain: primitives.DomainName, startTimeFilter: scala.Option[ExecutionTimeFilter] = None, closeTimeFilter: scala.Option[ExecutionTimeFilter] = None, executionFilter: scala.Option[WorkflowExecutionFilter] = None, closeStatusFilter: scala.Option[CloseStatusFilter] = None, typeFilter: scala.Option[WorkflowTypeFilter] = None, tagFilter: scala.Option[TagFilter] = None, nextPageToken: scala.Option[primitives.PageToken] = None, maximumPageSize: scala.Option[primitives.PageSize] = None, reverseOrder: scala.Option[primitives.ReverseOrder] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest = {
      import ListClosedWorkflowExecutionsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest.builder().domain(domain: java.lang.String).optionallyWith(startTimeFilter.map(value => value.buildAwsValue()))(_.startTimeFilter).optionallyWith(closeTimeFilter.map(value => value.buildAwsValue()))(_.closeTimeFilter).optionallyWith(executionFilter.map(value => value.buildAwsValue()))(_.executionFilter).optionallyWith(closeStatusFilter.map(value => value.buildAwsValue()))(_.closeStatusFilter).optionallyWith(typeFilter.map(value => value.buildAwsValue()))(_.typeFilter).optionallyWith(tagFilter.map(value => value.buildAwsValue()))(_.tagFilter).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).optionallyWith(maximumPageSize.map(value => value: java.lang.Integer))(_.maximumPageSize).optionallyWith(reverseOrder.map(value => value: java.lang.Boolean))(_.reverseOrder).build()
    }
    def asReadOnly: ListClosedWorkflowExecutionsRequest.ReadOnly = ListClosedWorkflowExecutionsRequest.wrap(buildAwsValue())
  }
  object ListClosedWorkflowExecutionsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListClosedWorkflowExecutionsRequest = ListClosedWorkflowExecutionsRequest(domainValue, startTimeFilterValue.map(value => value.editable), closeTimeFilterValue.map(value => value.editable), executionFilterValue.map(value => value.editable), closeStatusFilterValue.map(value => value.editable), typeFilterValue.map(value => value.editable), tagFilterValue.map(value => value.editable), nextPageTokenValue.map(value => value), maximumPageSizeValue.map(value => value), reverseOrderValue.map(value => value))
      def domainValue: primitives.DomainName
      def startTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly]
      def closeTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly]
      def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly]
      def closeStatusFilterValue: scala.Option[CloseStatusFilter.ReadOnly]
      def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly]
      def tagFilterValue: scala.Option[TagFilter.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def maximumPageSizeValue: scala.Option[primitives.PageSize]
      def reverseOrderValue: scala.Option[primitives.ReverseOrder]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def startTimeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionTimeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startTimeFilter", startTimeFilterValue)
      def closeTimeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionTimeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("closeTimeFilter", closeTimeFilterValue)
      def executionFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionFilter", executionFilterValue)
      def closeStatusFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CloseStatusFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("closeStatusFilter", closeStatusFilterValue)
      def typeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowTypeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("typeFilter", typeFilterValue)
      def tagFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TagFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagFilter", tagFilterValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def maximumPageSize: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageSize] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumPageSize", maximumPageSizeValue)
      def reverseOrder: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReverseOrder] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reverseOrder", reverseOrderValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest) extends ListClosedWorkflowExecutionsRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def startTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly] = scala.Option(impl.startTimeFilter()).map(value => ExecutionTimeFilter.wrap(value))
      override def closeTimeFilterValue: scala.Option[ExecutionTimeFilter.ReadOnly] = scala.Option(impl.closeTimeFilter()).map(value => ExecutionTimeFilter.wrap(value))
      override def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly] = scala.Option(impl.executionFilter()).map(value => WorkflowExecutionFilter.wrap(value))
      override def closeStatusFilterValue: scala.Option[CloseStatusFilter.ReadOnly] = scala.Option(impl.closeStatusFilter()).map(value => CloseStatusFilter.wrap(value))
      override def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly] = scala.Option(impl.typeFilter()).map(value => WorkflowTypeFilter.wrap(value))
      override def tagFilterValue: scala.Option[TagFilter.ReadOnly] = scala.Option(impl.tagFilter()).map(value => TagFilter.wrap(value))
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def maximumPageSizeValue: scala.Option[primitives.PageSize] = scala.Option(impl.maximumPageSize()).map(value => value: primitives.PageSize)
      override def reverseOrderValue: scala.Option[primitives.ReverseOrder] = scala.Option(impl.reverseOrder()).map(value => value: primitives.ReverseOrder)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListClosedWorkflowExecutionsResponse(executionInfos: Iterable[WorkflowExecutionInfo], nextPageToken: scala.Option[primitives.PageToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse = {
      import ListClosedWorkflowExecutionsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse.builder().executionInfos(executionInfos.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: ListClosedWorkflowExecutionsResponse.ReadOnly = ListClosedWorkflowExecutionsResponse.wrap(buildAwsValue())
  }
  object ListClosedWorkflowExecutionsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListClosedWorkflowExecutionsResponse = ListClosedWorkflowExecutionsResponse(executionInfosValue.map { item => 
        item.editable
      }, nextPageTokenValue.map(value => value))
      def executionInfosValue: List[WorkflowExecutionInfo.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def executionInfos: ZIO[Any, Nothing, List[WorkflowExecutionInfo.ReadOnly]] = ZIO.succeed(executionInfosValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse) extends ListClosedWorkflowExecutionsResponse.ReadOnly {
      override def executionInfosValue: List[WorkflowExecutionInfo.ReadOnly] = impl.executionInfos().asScala.map { item => 
        WorkflowExecutionInfo.wrap(item)
      }.toList
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListDomainsRequest(nextPageToken: scala.Option[primitives.PageToken] = None, registrationStatus: RegistrationStatus, maximumPageSize: scala.Option[primitives.PageSize] = None, reverseOrder: scala.Option[primitives.ReverseOrder] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListDomainsRequest = {
      import ListDomainsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListDomainsRequest.builder().optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).registrationStatus(registrationStatus.unwrap).optionallyWith(maximumPageSize.map(value => value: java.lang.Integer))(_.maximumPageSize).optionallyWith(reverseOrder.map(value => value: java.lang.Boolean))(_.reverseOrder).build()
    }
    def asReadOnly: ListDomainsRequest.ReadOnly = ListDomainsRequest.wrap(buildAwsValue())
  }
  object ListDomainsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListDomainsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListDomainsRequest = ListDomainsRequest(nextPageTokenValue.map(value => value), registrationStatusValue, maximumPageSizeValue.map(value => value), reverseOrderValue.map(value => value))
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def registrationStatusValue: RegistrationStatus
      def maximumPageSizeValue: scala.Option[primitives.PageSize]
      def reverseOrderValue: scala.Option[primitives.ReverseOrder]
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def registrationStatus: ZIO[Any, Nothing, RegistrationStatus] = ZIO.succeed(registrationStatusValue)
      def maximumPageSize: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageSize] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumPageSize", maximumPageSizeValue)
      def reverseOrder: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReverseOrder] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reverseOrder", reverseOrderValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListDomainsRequest) extends ListDomainsRequest.ReadOnly {
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def registrationStatusValue: RegistrationStatus = RegistrationStatus.wrap(impl.registrationStatus())
      override def maximumPageSizeValue: scala.Option[primitives.PageSize] = scala.Option(impl.maximumPageSize()).map(value => value: primitives.PageSize)
      override def reverseOrderValue: scala.Option[primitives.ReverseOrder] = scala.Option(impl.reverseOrder()).map(value => value: primitives.ReverseOrder)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListDomainsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListDomainsResponse(domainInfos: Iterable[DomainInfo], nextPageToken: scala.Option[primitives.PageToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListDomainsResponse = {
      import ListDomainsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListDomainsResponse.builder().domainInfos(domainInfos.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: ListDomainsResponse.ReadOnly = ListDomainsResponse.wrap(buildAwsValue())
  }
  object ListDomainsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListDomainsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListDomainsResponse = ListDomainsResponse(domainInfosValue.map { item => 
        item.editable
      }, nextPageTokenValue.map(value => value))
      def domainInfosValue: List[DomainInfo.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def domainInfos: ZIO[Any, Nothing, List[DomainInfo.ReadOnly]] = ZIO.succeed(domainInfosValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListDomainsResponse) extends ListDomainsResponse.ReadOnly {
      override def domainInfosValue: List[DomainInfo.ReadOnly] = impl.domainInfos().asScala.map { item => 
        DomainInfo.wrap(item)
      }.toList
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListDomainsResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListOpenWorkflowExecutionsRequest(domain: primitives.DomainName, startTimeFilter: ExecutionTimeFilter, typeFilter: scala.Option[WorkflowTypeFilter] = None, tagFilter: scala.Option[TagFilter] = None, nextPageToken: scala.Option[primitives.PageToken] = None, maximumPageSize: scala.Option[primitives.PageSize] = None, reverseOrder: scala.Option[primitives.ReverseOrder] = None, executionFilter: scala.Option[WorkflowExecutionFilter] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest = {
      import ListOpenWorkflowExecutionsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest.builder().domain(domain: java.lang.String).startTimeFilter(startTimeFilter.buildAwsValue()).optionallyWith(typeFilter.map(value => value.buildAwsValue()))(_.typeFilter).optionallyWith(tagFilter.map(value => value.buildAwsValue()))(_.tagFilter).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).optionallyWith(maximumPageSize.map(value => value: java.lang.Integer))(_.maximumPageSize).optionallyWith(reverseOrder.map(value => value: java.lang.Boolean))(_.reverseOrder).optionallyWith(executionFilter.map(value => value.buildAwsValue()))(_.executionFilter).build()
    }
    def asReadOnly: ListOpenWorkflowExecutionsRequest.ReadOnly = ListOpenWorkflowExecutionsRequest.wrap(buildAwsValue())
  }
  object ListOpenWorkflowExecutionsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListOpenWorkflowExecutionsRequest = ListOpenWorkflowExecutionsRequest(domainValue, startTimeFilterValue.editable, typeFilterValue.map(value => value.editable), tagFilterValue.map(value => value.editable), nextPageTokenValue.map(value => value), maximumPageSizeValue.map(value => value), reverseOrderValue.map(value => value), executionFilterValue.map(value => value.editable))
      def domainValue: primitives.DomainName
      def startTimeFilterValue: ExecutionTimeFilter.ReadOnly
      def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly]
      def tagFilterValue: scala.Option[TagFilter.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def maximumPageSizeValue: scala.Option[primitives.PageSize]
      def reverseOrderValue: scala.Option[primitives.ReverseOrder]
      def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def startTimeFilter: ZIO[Any, Nothing, ExecutionTimeFilter.ReadOnly] = ZIO.succeed(startTimeFilterValue)
      def typeFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowTypeFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("typeFilter", typeFilterValue)
      def tagFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TagFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagFilter", tagFilterValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def maximumPageSize: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageSize] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumPageSize", maximumPageSizeValue)
      def reverseOrder: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReverseOrder] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reverseOrder", reverseOrderValue)
      def executionFilter: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionFilter.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionFilter", executionFilterValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest) extends ListOpenWorkflowExecutionsRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def startTimeFilterValue: ExecutionTimeFilter.ReadOnly = ExecutionTimeFilter.wrap(impl.startTimeFilter())
      override def typeFilterValue: scala.Option[WorkflowTypeFilter.ReadOnly] = scala.Option(impl.typeFilter()).map(value => WorkflowTypeFilter.wrap(value))
      override def tagFilterValue: scala.Option[TagFilter.ReadOnly] = scala.Option(impl.tagFilter()).map(value => TagFilter.wrap(value))
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def maximumPageSizeValue: scala.Option[primitives.PageSize] = scala.Option(impl.maximumPageSize()).map(value => value: primitives.PageSize)
      override def reverseOrderValue: scala.Option[primitives.ReverseOrder] = scala.Option(impl.reverseOrder()).map(value => value: primitives.ReverseOrder)
      override def executionFilterValue: scala.Option[WorkflowExecutionFilter.ReadOnly] = scala.Option(impl.executionFilter()).map(value => WorkflowExecutionFilter.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListOpenWorkflowExecutionsResponse(executionInfos: Iterable[WorkflowExecutionInfo], nextPageToken: scala.Option[primitives.PageToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse = {
      import ListOpenWorkflowExecutionsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse.builder().executionInfos(executionInfos.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: ListOpenWorkflowExecutionsResponse.ReadOnly = ListOpenWorkflowExecutionsResponse.wrap(buildAwsValue())
  }
  object ListOpenWorkflowExecutionsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListOpenWorkflowExecutionsResponse = ListOpenWorkflowExecutionsResponse(executionInfosValue.map { item => 
        item.editable
      }, nextPageTokenValue.map(value => value))
      def executionInfosValue: List[WorkflowExecutionInfo.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def executionInfos: ZIO[Any, Nothing, List[WorkflowExecutionInfo.ReadOnly]] = ZIO.succeed(executionInfosValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse) extends ListOpenWorkflowExecutionsResponse.ReadOnly {
      override def executionInfosValue: List[WorkflowExecutionInfo.ReadOnly] = impl.executionInfos().asScala.map { item => 
        WorkflowExecutionInfo.wrap(item)
      }.toList
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListTagsForResourceRequest(resourceArn: primitives.Arn) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListTagsForResourceRequest = {
      import ListTagsForResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListTagsForResourceRequest.builder().resourceArn(resourceArn: java.lang.String).build()
    }
    def asReadOnly: ListTagsForResourceRequest.ReadOnly = ListTagsForResourceRequest.wrap(buildAwsValue())
  }
  object ListTagsForResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListTagsForResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTagsForResourceRequest = ListTagsForResourceRequest(resourceArnValue)
      def resourceArnValue: primitives.Arn
      def resourceArn: ZIO[Any, Nothing, primitives.Arn] = ZIO.succeed(resourceArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListTagsForResourceRequest) extends ListTagsForResourceRequest.ReadOnly { override def resourceArnValue: primitives.Arn = impl.resourceArn(): primitives.Arn }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListTagsForResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListTagsForResourceResponse(tags: scala.Option[Iterable[ResourceTag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListTagsForResourceResponse = {
      import ListTagsForResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListTagsForResourceResponse.builder().optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: ListTagsForResourceResponse.ReadOnly = ListTagsForResourceResponse.wrap(buildAwsValue())
  }
  object ListTagsForResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListTagsForResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTagsForResourceResponse = ListTagsForResourceResponse(tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def tagsValue: scala.Option[List[ResourceTag.ReadOnly]]
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ResourceTag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListTagsForResourceResponse) extends ListTagsForResourceResponse.ReadOnly {
      override def tagsValue: scala.Option[List[ResourceTag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        ResourceTag.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListTagsForResourceResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListWorkflowTypesRequest(domain: primitives.DomainName, name: scala.Option[primitives.Name] = None, registrationStatus: RegistrationStatus, nextPageToken: scala.Option[primitives.PageToken] = None, maximumPageSize: scala.Option[primitives.PageSize] = None, reverseOrder: scala.Option[primitives.ReverseOrder] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest = {
      import ListWorkflowTypesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest.builder().domain(domain: java.lang.String).optionallyWith(name.map(value => value: java.lang.String))(_.name).registrationStatus(registrationStatus.unwrap).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).optionallyWith(maximumPageSize.map(value => value: java.lang.Integer))(_.maximumPageSize).optionallyWith(reverseOrder.map(value => value: java.lang.Boolean))(_.reverseOrder).build()
    }
    def asReadOnly: ListWorkflowTypesRequest.ReadOnly = ListWorkflowTypesRequest.wrap(buildAwsValue())
  }
  object ListWorkflowTypesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListWorkflowTypesRequest = ListWorkflowTypesRequest(domainValue, nameValue.map(value => value), registrationStatusValue, nextPageTokenValue.map(value => value), maximumPageSizeValue.map(value => value), reverseOrderValue.map(value => value))
      def domainValue: primitives.DomainName
      def nameValue: scala.Option[primitives.Name]
      def registrationStatusValue: RegistrationStatus
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def maximumPageSizeValue: scala.Option[primitives.PageSize]
      def reverseOrderValue: scala.Option[primitives.ReverseOrder]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Name] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def registrationStatus: ZIO[Any, Nothing, RegistrationStatus] = ZIO.succeed(registrationStatusValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def maximumPageSize: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageSize] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumPageSize", maximumPageSizeValue)
      def reverseOrder: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReverseOrder] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reverseOrder", reverseOrderValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest) extends ListWorkflowTypesRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def nameValue: scala.Option[primitives.Name] = scala.Option(impl.name()).map(value => value: primitives.Name)
      override def registrationStatusValue: RegistrationStatus = RegistrationStatus.wrap(impl.registrationStatus())
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def maximumPageSizeValue: scala.Option[primitives.PageSize] = scala.Option(impl.maximumPageSize()).map(value => value: primitives.PageSize)
      override def reverseOrderValue: scala.Option[primitives.ReverseOrder] = scala.Option(impl.reverseOrder()).map(value => value: primitives.ReverseOrder)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListWorkflowTypesResponse(typeInfos: Iterable[WorkflowTypeInfo], nextPageToken: scala.Option[primitives.PageToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse = {
      import ListWorkflowTypesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse.builder().typeInfos(typeInfos.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).build()
    }
    def asReadOnly: ListWorkflowTypesResponse.ReadOnly = ListWorkflowTypesResponse.wrap(buildAwsValue())
  }
  object ListWorkflowTypesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListWorkflowTypesResponse = ListWorkflowTypesResponse(typeInfosValue.map { item => 
        item.editable
      }, nextPageTokenValue.map(value => value))
      def typeInfosValue: List[WorkflowTypeInfo.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def typeInfos: ZIO[Any, Nothing, List[WorkflowTypeInfo.ReadOnly]] = ZIO.succeed(typeInfosValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse) extends ListWorkflowTypesResponse.ReadOnly {
      override def typeInfosValue: List[WorkflowTypeInfo.ReadOnly] = impl.typeInfos().asScala.map { item => 
        WorkflowTypeInfo.wrap(item)
      }.toList
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse): ReadOnly = new Wrapper(impl)
  }
  case class MarkerRecordedEventAttributes(markerName: primitives.MarkerName, details: scala.Option[primitives.Data] = None, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.MarkerRecordedEventAttributes = {
      import MarkerRecordedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.MarkerRecordedEventAttributes.builder().markerName(markerName: java.lang.String).optionallyWith(details.map(value => value: java.lang.String))(_.details).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: MarkerRecordedEventAttributes.ReadOnly = MarkerRecordedEventAttributes.wrap(buildAwsValue())
  }
  object MarkerRecordedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.MarkerRecordedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: MarkerRecordedEventAttributes = MarkerRecordedEventAttributes(markerNameValue, detailsValue.map(value => value), decisionTaskCompletedEventIdValue)
      def markerNameValue: primitives.MarkerName
      def detailsValue: scala.Option[primitives.Data]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def markerName: ZIO[Any, Nothing, primitives.MarkerName] = ZIO.succeed(markerNameValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.MarkerRecordedEventAttributes) extends MarkerRecordedEventAttributes.ReadOnly {
      override def markerNameValue: primitives.MarkerName = impl.markerName(): primitives.MarkerName
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.MarkerRecordedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class PollForActivityTaskRequest(domain: primitives.DomainName, taskList: TaskList, identity: scala.Option[primitives.Identity] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.PollForActivityTaskRequest = {
      import PollForActivityTaskRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.PollForActivityTaskRequest.builder().domain(domain: java.lang.String).taskList(taskList.buildAwsValue()).optionallyWith(identity.map(value => value: java.lang.String))(_.identity).build()
    }
    def asReadOnly: PollForActivityTaskRequest.ReadOnly = PollForActivityTaskRequest.wrap(buildAwsValue())
  }
  object PollForActivityTaskRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.PollForActivityTaskRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PollForActivityTaskRequest = PollForActivityTaskRequest(domainValue, taskListValue.editable, identityValue.map(value => value))
      def domainValue: primitives.DomainName
      def taskListValue: TaskList.ReadOnly
      def identityValue: scala.Option[primitives.Identity]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def identity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Identity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("identity", identityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.PollForActivityTaskRequest) extends PollForActivityTaskRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def identityValue: scala.Option[primitives.Identity] = scala.Option(impl.identity()).map(value => value: primitives.Identity)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.PollForActivityTaskRequest): ReadOnly = new Wrapper(impl)
  }
  case class PollForActivityTaskResponse(taskToken: primitives.TaskToken, activityId: primitives.ActivityId, startedEventId: primitives.EventId, workflowExecution: WorkflowExecution, activityType: ActivityType, input: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.PollForActivityTaskResponse = {
      import PollForActivityTaskResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.PollForActivityTaskResponse.builder().taskToken(taskToken: java.lang.String).activityId(activityId: java.lang.String).startedEventId(startedEventId: java.lang.Long).workflowExecution(workflowExecution.buildAwsValue()).activityType(activityType.buildAwsValue()).optionallyWith(input.map(value => value: java.lang.String))(_.input).build()
    }
    def asReadOnly: PollForActivityTaskResponse.ReadOnly = PollForActivityTaskResponse.wrap(buildAwsValue())
  }
  object PollForActivityTaskResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.PollForActivityTaskResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PollForActivityTaskResponse = PollForActivityTaskResponse(taskTokenValue, activityIdValue, startedEventIdValue, workflowExecutionValue.editable, activityTypeValue.editable, inputValue.map(value => value))
      def taskTokenValue: primitives.TaskToken
      def activityIdValue: primitives.ActivityId
      def startedEventIdValue: primitives.EventId
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def activityTypeValue: ActivityType.ReadOnly
      def inputValue: scala.Option[primitives.Data]
      def taskToken: ZIO[Any, Nothing, primitives.TaskToken] = ZIO.succeed(taskTokenValue)
      def activityId: ZIO[Any, Nothing, primitives.ActivityId] = ZIO.succeed(activityIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.PollForActivityTaskResponse) extends PollForActivityTaskResponse.ReadOnly {
      override def taskTokenValue: primitives.TaskToken = impl.taskToken(): primitives.TaskToken
      override def activityIdValue: primitives.ActivityId = impl.activityId(): primitives.ActivityId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.PollForActivityTaskResponse): ReadOnly = new Wrapper(impl)
  }
  case class PollForDecisionTaskRequest(domain: primitives.DomainName, taskList: TaskList, identity: scala.Option[primitives.Identity] = None, nextPageToken: scala.Option[primitives.PageToken] = None, maximumPageSize: scala.Option[primitives.PageSize] = None, reverseOrder: scala.Option[primitives.ReverseOrder] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest = {
      import PollForDecisionTaskRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest.builder().domain(domain: java.lang.String).taskList(taskList.buildAwsValue()).optionallyWith(identity.map(value => value: java.lang.String))(_.identity).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).optionallyWith(maximumPageSize.map(value => value: java.lang.Integer))(_.maximumPageSize).optionallyWith(reverseOrder.map(value => value: java.lang.Boolean))(_.reverseOrder).build()
    }
    def asReadOnly: PollForDecisionTaskRequest.ReadOnly = PollForDecisionTaskRequest.wrap(buildAwsValue())
  }
  object PollForDecisionTaskRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PollForDecisionTaskRequest = PollForDecisionTaskRequest(domainValue, taskListValue.editable, identityValue.map(value => value), nextPageTokenValue.map(value => value), maximumPageSizeValue.map(value => value), reverseOrderValue.map(value => value))
      def domainValue: primitives.DomainName
      def taskListValue: TaskList.ReadOnly
      def identityValue: scala.Option[primitives.Identity]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def maximumPageSizeValue: scala.Option[primitives.PageSize]
      def reverseOrderValue: scala.Option[primitives.ReverseOrder]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def identity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Identity] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("identity", identityValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def maximumPageSize: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageSize] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maximumPageSize", maximumPageSizeValue)
      def reverseOrder: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ReverseOrder] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reverseOrder", reverseOrderValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest) extends PollForDecisionTaskRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def identityValue: scala.Option[primitives.Identity] = scala.Option(impl.identity()).map(value => value: primitives.Identity)
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def maximumPageSizeValue: scala.Option[primitives.PageSize] = scala.Option(impl.maximumPageSize()).map(value => value: primitives.PageSize)
      override def reverseOrderValue: scala.Option[primitives.ReverseOrder] = scala.Option(impl.reverseOrder()).map(value => value: primitives.ReverseOrder)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest): ReadOnly = new Wrapper(impl)
  }
  case class PollForDecisionTaskResponse(taskToken: primitives.TaskToken, startedEventId: primitives.EventId, workflowExecution: WorkflowExecution, workflowType: WorkflowType, events: Iterable[HistoryEvent], nextPageToken: scala.Option[primitives.PageToken] = None, previousStartedEventId: scala.Option[primitives.EventId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse = {
      import PollForDecisionTaskResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse.builder().taskToken(taskToken: java.lang.String).startedEventId(startedEventId: java.lang.Long).workflowExecution(workflowExecution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).events(events.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(nextPageToken.map(value => value: java.lang.String))(_.nextPageToken).optionallyWith(previousStartedEventId.map(value => value: java.lang.Long))(_.previousStartedEventId).build()
    }
    def asReadOnly: PollForDecisionTaskResponse.ReadOnly = PollForDecisionTaskResponse.wrap(buildAwsValue())
  }
  object PollForDecisionTaskResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PollForDecisionTaskResponse = PollForDecisionTaskResponse(taskTokenValue, startedEventIdValue, workflowExecutionValue.editable, workflowTypeValue.editable, eventsValue.map { item => 
        item.editable
      }, nextPageTokenValue.map(value => value), previousStartedEventIdValue.map(value => value))
      def taskTokenValue: primitives.TaskToken
      def startedEventIdValue: primitives.EventId
      def workflowExecutionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def eventsValue: List[HistoryEvent.ReadOnly]
      def nextPageTokenValue: scala.Option[primitives.PageToken]
      def previousStartedEventIdValue: scala.Option[primitives.EventId]
      def taskToken: ZIO[Any, Nothing, primitives.TaskToken] = ZIO.succeed(taskTokenValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def workflowExecution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(workflowExecutionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def events: ZIO[Any, Nothing, List[HistoryEvent.ReadOnly]] = ZIO.succeed(eventsValue)
      def nextPageToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PageToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextPageToken", nextPageTokenValue)
      def previousStartedEventId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("previousStartedEventId", previousStartedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse) extends PollForDecisionTaskResponse.ReadOnly {
      override def taskTokenValue: primitives.TaskToken = impl.taskToken(): primitives.TaskToken
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def workflowExecutionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.workflowExecution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def eventsValue: List[HistoryEvent.ReadOnly] = impl.events().asScala.map { item => 
        HistoryEvent.wrap(item)
      }.toList
      override def nextPageTokenValue: scala.Option[primitives.PageToken] = scala.Option(impl.nextPageToken()).map(value => value: primitives.PageToken)
      override def previousStartedEventIdValue: scala.Option[primitives.EventId] = scala.Option(impl.previousStartedEventId()).map(value => value: primitives.EventId)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse): ReadOnly = new Wrapper(impl)
  }
  case class RecordActivityTaskHeartbeatRequest(taskToken: primitives.TaskToken, details: scala.Option[primitives.LimitedData] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatRequest = {
      import RecordActivityTaskHeartbeatRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatRequest.builder().taskToken(taskToken: java.lang.String).optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: RecordActivityTaskHeartbeatRequest.ReadOnly = RecordActivityTaskHeartbeatRequest.wrap(buildAwsValue())
  }
  object RecordActivityTaskHeartbeatRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RecordActivityTaskHeartbeatRequest = RecordActivityTaskHeartbeatRequest(taskTokenValue, detailsValue.map(value => value))
      def taskTokenValue: primitives.TaskToken
      def detailsValue: scala.Option[primitives.LimitedData]
      def taskToken: ZIO[Any, Nothing, primitives.TaskToken] = ZIO.succeed(taskTokenValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.LimitedData] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatRequest) extends RecordActivityTaskHeartbeatRequest.ReadOnly {
      override def taskTokenValue: primitives.TaskToken = impl.taskToken(): primitives.TaskToken
      override def detailsValue: scala.Option[primitives.LimitedData] = scala.Option(impl.details()).map(value => value: primitives.LimitedData)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatRequest): ReadOnly = new Wrapper(impl)
  }
  case class RecordActivityTaskHeartbeatResponse(cancelRequested: primitives.Canceled) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatResponse = {
      import RecordActivityTaskHeartbeatResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatResponse.builder().cancelRequested(cancelRequested: java.lang.Boolean).build()
    }
    def asReadOnly: RecordActivityTaskHeartbeatResponse.ReadOnly = RecordActivityTaskHeartbeatResponse.wrap(buildAwsValue())
  }
  object RecordActivityTaskHeartbeatResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RecordActivityTaskHeartbeatResponse = RecordActivityTaskHeartbeatResponse(cancelRequestedValue)
      def cancelRequestedValue: primitives.Canceled
      def cancelRequested: ZIO[Any, Nothing, primitives.Canceled] = ZIO.succeed(cancelRequestedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatResponse) extends RecordActivityTaskHeartbeatResponse.ReadOnly { override def cancelRequestedValue: primitives.Canceled = impl.cancelRequested(): primitives.Canceled }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatResponse): ReadOnly = new Wrapper(impl)
  }
  case class RecordMarkerDecisionAttributes(markerName: primitives.MarkerName, details: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RecordMarkerDecisionAttributes = {
      import RecordMarkerDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RecordMarkerDecisionAttributes.builder().markerName(markerName: java.lang.String).optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: RecordMarkerDecisionAttributes.ReadOnly = RecordMarkerDecisionAttributes.wrap(buildAwsValue())
  }
  object RecordMarkerDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RecordMarkerDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RecordMarkerDecisionAttributes = RecordMarkerDecisionAttributes(markerNameValue, detailsValue.map(value => value))
      def markerNameValue: primitives.MarkerName
      def detailsValue: scala.Option[primitives.Data]
      def markerName: ZIO[Any, Nothing, primitives.MarkerName] = ZIO.succeed(markerNameValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RecordMarkerDecisionAttributes) extends RecordMarkerDecisionAttributes.ReadOnly {
      override def markerNameValue: primitives.MarkerName = impl.markerName(): primitives.MarkerName
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RecordMarkerDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait RecordMarkerFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause }
  object RecordMarkerFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause): RecordMarkerFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends RecordMarkerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause = software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object OPERATION_NOT_PERMITTED extends RecordMarkerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause = software.amazon.awssdk.services.swf.model.RecordMarkerFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class RecordMarkerFailedEventAttributes(markerName: primitives.MarkerName, cause: RecordMarkerFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RecordMarkerFailedEventAttributes = {
      import RecordMarkerFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RecordMarkerFailedEventAttributes.builder().markerName(markerName: java.lang.String).cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: RecordMarkerFailedEventAttributes.ReadOnly = RecordMarkerFailedEventAttributes.wrap(buildAwsValue())
  }
  object RecordMarkerFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RecordMarkerFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RecordMarkerFailedEventAttributes = RecordMarkerFailedEventAttributes(markerNameValue, causeValue, decisionTaskCompletedEventIdValue)
      def markerNameValue: primitives.MarkerName
      def causeValue: RecordMarkerFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def markerName: ZIO[Any, Nothing, primitives.MarkerName] = ZIO.succeed(markerNameValue)
      def cause: ZIO[Any, Nothing, RecordMarkerFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RecordMarkerFailedEventAttributes) extends RecordMarkerFailedEventAttributes.ReadOnly {
      override def markerNameValue: primitives.MarkerName = impl.markerName(): primitives.MarkerName
      override def causeValue: RecordMarkerFailedCause = RecordMarkerFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RecordMarkerFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class RegisterActivityTypeRequest(domain: primitives.DomainName, name: primitives.Name, version: primitives.Version, description: scala.Option[primitives.Description] = None, defaultTaskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskHeartbeatTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskList: scala.Option[TaskList] = None, defaultTaskPriority: scala.Option[primitives.TaskPriority] = None, defaultTaskScheduleToStartTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskScheduleToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RegisterActivityTypeRequest = {
      import RegisterActivityTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RegisterActivityTypeRequest.builder().domain(domain: java.lang.String).name(name: java.lang.String).version(version: java.lang.String).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(defaultTaskStartToCloseTimeout.map(value => value: java.lang.String))(_.defaultTaskStartToCloseTimeout).optionallyWith(defaultTaskHeartbeatTimeout.map(value => value: java.lang.String))(_.defaultTaskHeartbeatTimeout).optionallyWith(defaultTaskList.map(value => value.buildAwsValue()))(_.defaultTaskList).optionallyWith(defaultTaskPriority.map(value => value: java.lang.String))(_.defaultTaskPriority).optionallyWith(defaultTaskScheduleToStartTimeout.map(value => value: java.lang.String))(_.defaultTaskScheduleToStartTimeout).optionallyWith(defaultTaskScheduleToCloseTimeout.map(value => value: java.lang.String))(_.defaultTaskScheduleToCloseTimeout).build()
    }
    def asReadOnly: RegisterActivityTypeRequest.ReadOnly = RegisterActivityTypeRequest.wrap(buildAwsValue())
  }
  object RegisterActivityTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RegisterActivityTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RegisterActivityTypeRequest = RegisterActivityTypeRequest(domainValue, nameValue, versionValue, descriptionValue.map(value => value), defaultTaskStartToCloseTimeoutValue.map(value => value), defaultTaskHeartbeatTimeoutValue.map(value => value), defaultTaskListValue.map(value => value.editable), defaultTaskPriorityValue.map(value => value), defaultTaskScheduleToStartTimeoutValue.map(value => value), defaultTaskScheduleToCloseTimeoutValue.map(value => value))
      def domainValue: primitives.DomainName
      def nameValue: primitives.Name
      def versionValue: primitives.Version
      def descriptionValue: scala.Option[primitives.Description]
      def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskHeartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskListValue: scala.Option[TaskList.ReadOnly]
      def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority]
      def defaultTaskScheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskScheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def name: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(nameValue)
      def version: ZIO[Any, Nothing, primitives.Version] = ZIO.succeed(versionValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Description] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def defaultTaskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskStartToCloseTimeout", defaultTaskStartToCloseTimeoutValue)
      def defaultTaskHeartbeatTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskHeartbeatTimeout", defaultTaskHeartbeatTimeoutValue)
      def defaultTaskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskList", defaultTaskListValue)
      def defaultTaskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskPriority", defaultTaskPriorityValue)
      def defaultTaskScheduleToStartTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskScheduleToStartTimeout", defaultTaskScheduleToStartTimeoutValue)
      def defaultTaskScheduleToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskScheduleToCloseTimeout", defaultTaskScheduleToCloseTimeoutValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RegisterActivityTypeRequest) extends RegisterActivityTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def nameValue: primitives.Name = impl.name(): primitives.Name
      override def versionValue: primitives.Version = impl.version(): primitives.Version
      override def descriptionValue: scala.Option[primitives.Description] = scala.Option(impl.description()).map(value => value: primitives.Description)
      override def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskHeartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskHeartbeatTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.defaultTaskList()).map(value => TaskList.wrap(value))
      override def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.defaultTaskPriority()).map(value => value: primitives.TaskPriority)
      override def defaultTaskScheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskScheduleToStartTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskScheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskScheduleToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RegisterActivityTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class RegisterDomainRequest(name: primitives.DomainName, description: scala.Option[primitives.Description] = None, workflowExecutionRetentionPeriodInDays: primitives.DurationInDays, tags: scala.Option[Iterable[ResourceTag]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RegisterDomainRequest = {
      import RegisterDomainRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RegisterDomainRequest.builder().name(name: java.lang.String).optionallyWith(description.map(value => value: java.lang.String))(_.description).workflowExecutionRetentionPeriodInDays(workflowExecutionRetentionPeriodInDays: java.lang.String).optionallyWith(tags.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tags).build()
    }
    def asReadOnly: RegisterDomainRequest.ReadOnly = RegisterDomainRequest.wrap(buildAwsValue())
  }
  object RegisterDomainRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RegisterDomainRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RegisterDomainRequest = RegisterDomainRequest(nameValue, descriptionValue.map(value => value), workflowExecutionRetentionPeriodInDaysValue, tagsValue.map(value => value.map { item => 
        item.editable
      }))
      def nameValue: primitives.DomainName
      def descriptionValue: scala.Option[primitives.Description]
      def workflowExecutionRetentionPeriodInDaysValue: primitives.DurationInDays
      def tagsValue: scala.Option[List[ResourceTag.ReadOnly]]
      def name: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(nameValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Description] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def workflowExecutionRetentionPeriodInDays: ZIO[Any, Nothing, primitives.DurationInDays] = ZIO.succeed(workflowExecutionRetentionPeriodInDaysValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ResourceTag.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RegisterDomainRequest) extends RegisterDomainRequest.ReadOnly {
      override def nameValue: primitives.DomainName = impl.name(): primitives.DomainName
      override def descriptionValue: scala.Option[primitives.Description] = scala.Option(impl.description()).map(value => value: primitives.Description)
      override def workflowExecutionRetentionPeriodInDaysValue: primitives.DurationInDays = impl.workflowExecutionRetentionPeriodInDays(): primitives.DurationInDays
      override def tagsValue: scala.Option[List[ResourceTag.ReadOnly]] = scala.Option(impl.tags()).map(value => value.asScala.map { item => 
        ResourceTag.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RegisterDomainRequest): ReadOnly = new Wrapper(impl)
  }
  case class RegisterWorkflowTypeRequest(domain: primitives.DomainName, name: primitives.Name, version: primitives.Version, description: scala.Option[primitives.Description] = None, defaultTaskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultExecutionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskList: scala.Option[TaskList] = None, defaultTaskPriority: scala.Option[primitives.TaskPriority] = None, defaultChildPolicy: scala.Option[ChildPolicy] = None, defaultLambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeRequest = {
      import RegisterWorkflowTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeRequest.builder().domain(domain: java.lang.String).name(name: java.lang.String).version(version: java.lang.String).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(defaultTaskStartToCloseTimeout.map(value => value: java.lang.String))(_.defaultTaskStartToCloseTimeout).optionallyWith(defaultExecutionStartToCloseTimeout.map(value => value: java.lang.String))(_.defaultExecutionStartToCloseTimeout).optionallyWith(defaultTaskList.map(value => value.buildAwsValue()))(_.defaultTaskList).optionallyWith(defaultTaskPriority.map(value => value: java.lang.String))(_.defaultTaskPriority).optionallyWith(defaultChildPolicy.map(value => value.unwrap))(_.defaultChildPolicy).optionallyWith(defaultLambdaRole.map(value => value: java.lang.String))(_.defaultLambdaRole).build()
    }
    def asReadOnly: RegisterWorkflowTypeRequest.ReadOnly = RegisterWorkflowTypeRequest.wrap(buildAwsValue())
  }
  object RegisterWorkflowTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RegisterWorkflowTypeRequest = RegisterWorkflowTypeRequest(domainValue, nameValue, versionValue, descriptionValue.map(value => value), defaultTaskStartToCloseTimeoutValue.map(value => value), defaultExecutionStartToCloseTimeoutValue.map(value => value), defaultTaskListValue.map(value => value.editable), defaultTaskPriorityValue.map(value => value), defaultChildPolicyValue.map(value => value), defaultLambdaRoleValue.map(value => value))
      def domainValue: primitives.DomainName
      def nameValue: primitives.Name
      def versionValue: primitives.Version
      def descriptionValue: scala.Option[primitives.Description]
      def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultExecutionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskListValue: scala.Option[TaskList.ReadOnly]
      def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority]
      def defaultChildPolicyValue: scala.Option[ChildPolicy]
      def defaultLambdaRoleValue: scala.Option[primitives.Arn]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def name: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(nameValue)
      def version: ZIO[Any, Nothing, primitives.Version] = ZIO.succeed(versionValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Description] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def defaultTaskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskStartToCloseTimeout", defaultTaskStartToCloseTimeoutValue)
      def defaultExecutionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultExecutionStartToCloseTimeout", defaultExecutionStartToCloseTimeoutValue)
      def defaultTaskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskList", defaultTaskListValue)
      def defaultTaskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskPriority", defaultTaskPriorityValue)
      def defaultChildPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildPolicy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultChildPolicy", defaultChildPolicyValue)
      def defaultLambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultLambdaRole", defaultLambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeRequest) extends RegisterWorkflowTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def nameValue: primitives.Name = impl.name(): primitives.Name
      override def versionValue: primitives.Version = impl.version(): primitives.Version
      override def descriptionValue: scala.Option[primitives.Description] = scala.Option(impl.description()).map(value => value: primitives.Description)
      override def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultExecutionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultExecutionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.defaultTaskList()).map(value => TaskList.wrap(value))
      override def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.defaultTaskPriority()).map(value => value: primitives.TaskPriority)
      override def defaultChildPolicyValue: scala.Option[ChildPolicy] = scala.Option(impl.defaultChildPolicy()).map(value => ChildPolicy.wrap(value))
      override def defaultLambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.defaultLambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeRequest): ReadOnly = new Wrapper(impl)
  }
  sealed trait RegistrationStatus { def unwrap: software.amazon.awssdk.services.swf.model.RegistrationStatus }
  object RegistrationStatus {
    def wrap(value: software.amazon.awssdk.services.swf.model.RegistrationStatus): RegistrationStatus = value match {
      case software.amazon.awssdk.services.swf.model.RegistrationStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.RegistrationStatus.REGISTERED => REGISTERED
      case software.amazon.awssdk.services.swf.model.RegistrationStatus.DEPRECATED => DEPRECATED
    }
    final case object unknownToSdkVersion extends RegistrationStatus { override def unwrap: software.amazon.awssdk.services.swf.model.RegistrationStatus = software.amazon.awssdk.services.swf.model.RegistrationStatus.UNKNOWN_TO_SDK_VERSION }
    final case object REGISTERED extends RegistrationStatus { override def unwrap: software.amazon.awssdk.services.swf.model.RegistrationStatus = software.amazon.awssdk.services.swf.model.RegistrationStatus.REGISTERED }
    final case object DEPRECATED extends RegistrationStatus { override def unwrap: software.amazon.awssdk.services.swf.model.RegistrationStatus = software.amazon.awssdk.services.swf.model.RegistrationStatus.DEPRECATED }
  }
  case class RequestCancelActivityTaskDecisionAttributes(activityId: primitives.ActivityId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskDecisionAttributes = {
      import RequestCancelActivityTaskDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskDecisionAttributes.builder().activityId(activityId: java.lang.String).build()
    }
    def asReadOnly: RequestCancelActivityTaskDecisionAttributes.ReadOnly = RequestCancelActivityTaskDecisionAttributes.wrap(buildAwsValue())
  }
  object RequestCancelActivityTaskDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RequestCancelActivityTaskDecisionAttributes = RequestCancelActivityTaskDecisionAttributes(activityIdValue)
      def activityIdValue: primitives.ActivityId
      def activityId: ZIO[Any, Nothing, primitives.ActivityId] = ZIO.succeed(activityIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskDecisionAttributes) extends RequestCancelActivityTaskDecisionAttributes.ReadOnly { override def activityIdValue: primitives.ActivityId = impl.activityId(): primitives.ActivityId }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait RequestCancelActivityTaskFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause }
  object RequestCancelActivityTaskFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause): RequestCancelActivityTaskFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause.ACTIVITY_ID_UNKNOWN => ACTIVITY_ID_UNKNOWN
      case software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends RequestCancelActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object ACTIVITY_ID_UNKNOWN extends RequestCancelActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause.ACTIVITY_ID_UNKNOWN }
    final case object OPERATION_NOT_PERMITTED extends RequestCancelActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class RequestCancelActivityTaskFailedEventAttributes(activityId: primitives.ActivityId, cause: RequestCancelActivityTaskFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedEventAttributes = {
      import RequestCancelActivityTaskFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedEventAttributes.builder().activityId(activityId: java.lang.String).cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: RequestCancelActivityTaskFailedEventAttributes.ReadOnly = RequestCancelActivityTaskFailedEventAttributes.wrap(buildAwsValue())
  }
  object RequestCancelActivityTaskFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RequestCancelActivityTaskFailedEventAttributes = RequestCancelActivityTaskFailedEventAttributes(activityIdValue, causeValue, decisionTaskCompletedEventIdValue)
      def activityIdValue: primitives.ActivityId
      def causeValue: RequestCancelActivityTaskFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def activityId: ZIO[Any, Nothing, primitives.ActivityId] = ZIO.succeed(activityIdValue)
      def cause: ZIO[Any, Nothing, RequestCancelActivityTaskFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedEventAttributes) extends RequestCancelActivityTaskFailedEventAttributes.ReadOnly {
      override def activityIdValue: primitives.ActivityId = impl.activityId(): primitives.ActivityId
      override def causeValue: RequestCancelActivityTaskFailedCause = RequestCancelActivityTaskFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RequestCancelActivityTaskFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class RequestCancelExternalWorkflowExecutionDecisionAttributes(workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, control: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionDecisionAttributes = {
      import RequestCancelExternalWorkflowExecutionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionDecisionAttributes.builder().workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).optionallyWith(control.map(value => value: java.lang.String))(_.control).build()
    }
    def asReadOnly: RequestCancelExternalWorkflowExecutionDecisionAttributes.ReadOnly = RequestCancelExternalWorkflowExecutionDecisionAttributes.wrap(buildAwsValue())
  }
  object RequestCancelExternalWorkflowExecutionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RequestCancelExternalWorkflowExecutionDecisionAttributes = RequestCancelExternalWorkflowExecutionDecisionAttributes(workflowIdValue, runIdValue.map(value => value), controlValue.map(value => value))
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def controlValue: scala.Option[primitives.Data]
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionDecisionAttributes) extends RequestCancelExternalWorkflowExecutionDecisionAttributes.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait RequestCancelExternalWorkflowExecutionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause }
  object RequestCancelExternalWorkflowExecutionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause): RequestCancelExternalWorkflowExecutionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION => UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION
      case software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED => REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED
      case software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends RequestCancelExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION extends RequestCancelExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION }
    final case object REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED extends RequestCancelExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED }
    final case object OPERATION_NOT_PERMITTED extends RequestCancelExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class RequestCancelExternalWorkflowExecutionFailedEventAttributes(workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, cause: RequestCancelExternalWorkflowExecutionFailedCause, initiatedEventId: primitives.EventId, decisionTaskCompletedEventId: primitives.EventId, control: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedEventAttributes = {
      import RequestCancelExternalWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedEventAttributes.builder().workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).cause(cause.unwrap).initiatedEventId(initiatedEventId: java.lang.Long).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).optionallyWith(control.map(value => value: java.lang.String))(_.control).build()
    }
    def asReadOnly: RequestCancelExternalWorkflowExecutionFailedEventAttributes.ReadOnly = RequestCancelExternalWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object RequestCancelExternalWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RequestCancelExternalWorkflowExecutionFailedEventAttributes = RequestCancelExternalWorkflowExecutionFailedEventAttributes(workflowIdValue, runIdValue.map(value => value), causeValue, initiatedEventIdValue, decisionTaskCompletedEventIdValue, controlValue.map(value => value))
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def causeValue: RequestCancelExternalWorkflowExecutionFailedCause
      def initiatedEventIdValue: primitives.EventId
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def controlValue: scala.Option[primitives.Data]
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def cause: ZIO[Any, Nothing, RequestCancelExternalWorkflowExecutionFailedCause] = ZIO.succeed(causeValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedEventAttributes) extends RequestCancelExternalWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def causeValue: RequestCancelExternalWorkflowExecutionFailedCause = RequestCancelExternalWorkflowExecutionFailedCause.wrap(impl.cause())
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class RequestCancelExternalWorkflowExecutionInitiatedEventAttributes(workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, decisionTaskCompletedEventId: primitives.EventId, control: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes = {
      import RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.builder().workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).optionallyWith(control.map(value => value: java.lang.String))(_.control).build()
    }
    def asReadOnly: RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly = RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.wrap(buildAwsValue())
  }
  object RequestCancelExternalWorkflowExecutionInitiatedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RequestCancelExternalWorkflowExecutionInitiatedEventAttributes = RequestCancelExternalWorkflowExecutionInitiatedEventAttributes(workflowIdValue, runIdValue.map(value => value), decisionTaskCompletedEventIdValue, controlValue.map(value => value))
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def controlValue: scala.Option[primitives.Data]
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes) extends RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class RequestCancelWorkflowExecutionRequest(domain: primitives.DomainName, workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionRequest = {
      import RequestCancelWorkflowExecutionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionRequest.builder().domain(domain: java.lang.String).workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).build()
    }
    def asReadOnly: RequestCancelWorkflowExecutionRequest.ReadOnly = RequestCancelWorkflowExecutionRequest.wrap(buildAwsValue())
  }
  object RequestCancelWorkflowExecutionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RequestCancelWorkflowExecutionRequest = RequestCancelWorkflowExecutionRequest(domainValue, workflowIdValue, runIdValue.map(value => value))
      def domainValue: primitives.DomainName
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionRequest) extends RequestCancelWorkflowExecutionRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionRequest): ReadOnly = new Wrapper(impl)
  }
  case class ResourceTag(key: primitives.ResourceTagKey, value: scala.Option[primitives.ResourceTagValue] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ResourceTag = {
      import ResourceTag.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ResourceTag.builder().key(key: java.lang.String).optionallyWith(value.map(value => value: java.lang.String))(_.value).build()
    }
    def asReadOnly: ResourceTag.ReadOnly = ResourceTag.wrap(buildAwsValue())
  }
  object ResourceTag {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ResourceTag] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ResourceTag = ResourceTag(keyValue, valueValue.map(value => value))
      def keyValue: primitives.ResourceTagKey
      def valueValue: scala.Option[primitives.ResourceTagValue]
      def key: ZIO[Any, Nothing, primitives.ResourceTagKey] = ZIO.succeed(keyValue)
      def value: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceTagValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("value", valueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ResourceTag) extends ResourceTag.ReadOnly {
      override def keyValue: primitives.ResourceTagKey = impl.key(): primitives.ResourceTagKey
      override def valueValue: scala.Option[primitives.ResourceTagValue] = scala.Option(impl.value()).map(value => value: primitives.ResourceTagValue)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ResourceTag): ReadOnly = new Wrapper(impl)
  }
  type ResourceTagKeyList = List[primitives.ResourceTagKey]
  type ResourceTagList = List[ResourceTag]
  case class RespondActivityTaskCanceledRequest(taskToken: primitives.TaskToken, details: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledRequest = {
      import RespondActivityTaskCanceledRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledRequest.builder().taskToken(taskToken: java.lang.String).optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: RespondActivityTaskCanceledRequest.ReadOnly = RespondActivityTaskCanceledRequest.wrap(buildAwsValue())
  }
  object RespondActivityTaskCanceledRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RespondActivityTaskCanceledRequest = RespondActivityTaskCanceledRequest(taskTokenValue, detailsValue.map(value => value))
      def taskTokenValue: primitives.TaskToken
      def detailsValue: scala.Option[primitives.Data]
      def taskToken: ZIO[Any, Nothing, primitives.TaskToken] = ZIO.succeed(taskTokenValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledRequest) extends RespondActivityTaskCanceledRequest.ReadOnly {
      override def taskTokenValue: primitives.TaskToken = impl.taskToken(): primitives.TaskToken
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledRequest): ReadOnly = new Wrapper(impl)
  }
  case class RespondActivityTaskCompletedRequest(taskToken: primitives.TaskToken, result: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedRequest = {
      import RespondActivityTaskCompletedRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedRequest.builder().taskToken(taskToken: java.lang.String).optionallyWith(result.map(value => value: java.lang.String))(_.result).build()
    }
    def asReadOnly: RespondActivityTaskCompletedRequest.ReadOnly = RespondActivityTaskCompletedRequest.wrap(buildAwsValue())
  }
  object RespondActivityTaskCompletedRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RespondActivityTaskCompletedRequest = RespondActivityTaskCompletedRequest(taskTokenValue, resultValue.map(value => value))
      def taskTokenValue: primitives.TaskToken
      def resultValue: scala.Option[primitives.Data]
      def taskToken: ZIO[Any, Nothing, primitives.TaskToken] = ZIO.succeed(taskTokenValue)
      def result: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("result", resultValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedRequest) extends RespondActivityTaskCompletedRequest.ReadOnly {
      override def taskTokenValue: primitives.TaskToken = impl.taskToken(): primitives.TaskToken
      override def resultValue: scala.Option[primitives.Data] = scala.Option(impl.result()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedRequest): ReadOnly = new Wrapper(impl)
  }
  case class RespondActivityTaskFailedRequest(taskToken: primitives.TaskToken, reason: scala.Option[primitives.FailureReason] = None, details: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedRequest = {
      import RespondActivityTaskFailedRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedRequest.builder().taskToken(taskToken: java.lang.String).optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).build()
    }
    def asReadOnly: RespondActivityTaskFailedRequest.ReadOnly = RespondActivityTaskFailedRequest.wrap(buildAwsValue())
  }
  object RespondActivityTaskFailedRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RespondActivityTaskFailedRequest = RespondActivityTaskFailedRequest(taskTokenValue, reasonValue.map(value => value), detailsValue.map(value => value))
      def taskTokenValue: primitives.TaskToken
      def reasonValue: scala.Option[primitives.FailureReason]
      def detailsValue: scala.Option[primitives.Data]
      def taskToken: ZIO[Any, Nothing, primitives.TaskToken] = ZIO.succeed(taskTokenValue)
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedRequest) extends RespondActivityTaskFailedRequest.ReadOnly {
      override def taskTokenValue: primitives.TaskToken = impl.taskToken(): primitives.TaskToken
      override def reasonValue: scala.Option[primitives.FailureReason] = scala.Option(impl.reason()).map(value => value: primitives.FailureReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedRequest): ReadOnly = new Wrapper(impl)
  }
  case class RespondDecisionTaskCompletedRequest(taskToken: primitives.TaskToken, decisions: scala.Option[Iterable[Decision]] = None, executionContext: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedRequest = {
      import RespondDecisionTaskCompletedRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedRequest.builder().taskToken(taskToken: java.lang.String).optionallyWith(decisions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.decisions).optionallyWith(executionContext.map(value => value: java.lang.String))(_.executionContext).build()
    }
    def asReadOnly: RespondDecisionTaskCompletedRequest.ReadOnly = RespondDecisionTaskCompletedRequest.wrap(buildAwsValue())
  }
  object RespondDecisionTaskCompletedRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RespondDecisionTaskCompletedRequest = RespondDecisionTaskCompletedRequest(taskTokenValue, decisionsValue.map(value => value.map { item => 
        item.editable
      }), executionContextValue.map(value => value))
      def taskTokenValue: primitives.TaskToken
      def decisionsValue: scala.Option[List[Decision.ReadOnly]]
      def executionContextValue: scala.Option[primitives.Data]
      def taskToken: ZIO[Any, Nothing, primitives.TaskToken] = ZIO.succeed(taskTokenValue)
      def decisions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Decision.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("decisions", decisionsValue)
      def executionContext: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionContext", executionContextValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedRequest) extends RespondDecisionTaskCompletedRequest.ReadOnly {
      override def taskTokenValue: primitives.TaskToken = impl.taskToken(): primitives.TaskToken
      override def decisionsValue: scala.Option[List[Decision.ReadOnly]] = scala.Option(impl.decisions()).map(value => value.asScala.map { item => 
        Decision.wrap(item)
      }.toList)
      override def executionContextValue: scala.Option[primitives.Data] = scala.Option(impl.executionContext()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedRequest): ReadOnly = new Wrapper(impl)
  }
  case class ScheduleActivityTaskDecisionAttributes(activityType: ActivityType, activityId: primitives.ActivityId, control: scala.Option[primitives.Data] = None, input: scala.Option[primitives.Data] = None, scheduleToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, taskList: scala.Option[TaskList] = None, taskPriority: scala.Option[primitives.TaskPriority] = None, scheduleToStartTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, startToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, heartbeatTimeout: scala.Option[primitives.DurationInSecondsOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ScheduleActivityTaskDecisionAttributes = {
      import ScheduleActivityTaskDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ScheduleActivityTaskDecisionAttributes.builder().activityType(activityType.buildAwsValue()).activityId(activityId: java.lang.String).optionallyWith(control.map(value => value: java.lang.String))(_.control).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(scheduleToCloseTimeout.map(value => value: java.lang.String))(_.scheduleToCloseTimeout).optionallyWith(taskList.map(value => value.buildAwsValue()))(_.taskList).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).optionallyWith(scheduleToStartTimeout.map(value => value: java.lang.String))(_.scheduleToStartTimeout).optionallyWith(startToCloseTimeout.map(value => value: java.lang.String))(_.startToCloseTimeout).optionallyWith(heartbeatTimeout.map(value => value: java.lang.String))(_.heartbeatTimeout).build()
    }
    def asReadOnly: ScheduleActivityTaskDecisionAttributes.ReadOnly = ScheduleActivityTaskDecisionAttributes.wrap(buildAwsValue())
  }
  object ScheduleActivityTaskDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ScheduleActivityTaskDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ScheduleActivityTaskDecisionAttributes = ScheduleActivityTaskDecisionAttributes(activityTypeValue.editable, activityIdValue, controlValue.map(value => value), inputValue.map(value => value), scheduleToCloseTimeoutValue.map(value => value), taskListValue.map(value => value.editable), taskPriorityValue.map(value => value), scheduleToStartTimeoutValue.map(value => value), startToCloseTimeoutValue.map(value => value), heartbeatTimeoutValue.map(value => value))
      def activityTypeValue: ActivityType.ReadOnly
      def activityIdValue: primitives.ActivityId
      def controlValue: scala.Option[primitives.Data]
      def inputValue: scala.Option[primitives.Data]
      def scheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskListValue: scala.Option[TaskList.ReadOnly]
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def scheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def heartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
      def activityId: ZIO[Any, Nothing, primitives.ActivityId] = ZIO.succeed(activityIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def scheduleToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleToCloseTimeout", scheduleToCloseTimeoutValue)
      def taskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskList", taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def scheduleToStartTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleToStartTimeout", scheduleToStartTimeoutValue)
      def startToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startToCloseTimeout", startToCloseTimeoutValue)
      def heartbeatTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("heartbeatTimeout", heartbeatTimeoutValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskDecisionAttributes) extends ScheduleActivityTaskDecisionAttributes.ReadOnly {
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
      override def activityIdValue: primitives.ActivityId = impl.activityId(): primitives.ActivityId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def scheduleToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.scheduleToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def taskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.taskList()).map(value => TaskList.wrap(value))
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def scheduleToStartTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.scheduleToStartTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.startToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def heartbeatTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.heartbeatTimeout()).map(value => value: primitives.DurationInSecondsOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait ScheduleActivityTaskFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause }
  object ScheduleActivityTaskFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause): ScheduleActivityTaskFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_TYPE_DEPRECATED => ACTIVITY_TYPE_DEPRECATED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_TYPE_DOES_NOT_EXIST => ACTIVITY_TYPE_DOES_NOT_EXIST
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_ID_ALREADY_IN_USE => ACTIVITY_ID_ALREADY_IN_USE
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.OPEN_ACTIVITIES_LIMIT_EXCEEDED => OPEN_ACTIVITIES_LIMIT_EXCEEDED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_CREATION_RATE_EXCEEDED => ACTIVITY_CREATION_RATE_EXCEEDED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_SCHEDULE_TO_CLOSE_TIMEOUT_UNDEFINED => DEFAULT_SCHEDULE_TO_CLOSE_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_TASK_LIST_UNDEFINED => DEFAULT_TASK_LIST_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_SCHEDULE_TO_START_TIMEOUT_UNDEFINED => DEFAULT_SCHEDULE_TO_START_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_START_TO_CLOSE_TIMEOUT_UNDEFINED => DEFAULT_START_TO_CLOSE_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_HEARTBEAT_TIMEOUT_UNDEFINED => DEFAULT_HEARTBEAT_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object ACTIVITY_TYPE_DEPRECATED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_TYPE_DEPRECATED }
    final case object ACTIVITY_TYPE_DOES_NOT_EXIST extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_TYPE_DOES_NOT_EXIST }
    final case object ACTIVITY_ID_ALREADY_IN_USE extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_ID_ALREADY_IN_USE }
    final case object OPEN_ACTIVITIES_LIMIT_EXCEEDED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.OPEN_ACTIVITIES_LIMIT_EXCEEDED }
    final case object ACTIVITY_CREATION_RATE_EXCEEDED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.ACTIVITY_CREATION_RATE_EXCEEDED }
    final case object DEFAULT_SCHEDULE_TO_CLOSE_TIMEOUT_UNDEFINED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_SCHEDULE_TO_CLOSE_TIMEOUT_UNDEFINED }
    final case object DEFAULT_TASK_LIST_UNDEFINED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_TASK_LIST_UNDEFINED }
    final case object DEFAULT_SCHEDULE_TO_START_TIMEOUT_UNDEFINED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_SCHEDULE_TO_START_TIMEOUT_UNDEFINED }
    final case object DEFAULT_START_TO_CLOSE_TIMEOUT_UNDEFINED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_START_TO_CLOSE_TIMEOUT_UNDEFINED }
    final case object DEFAULT_HEARTBEAT_TIMEOUT_UNDEFINED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.DEFAULT_HEARTBEAT_TIMEOUT_UNDEFINED }
    final case object OPERATION_NOT_PERMITTED extends ScheduleActivityTaskFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause = software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class ScheduleActivityTaskFailedEventAttributes(activityType: ActivityType, activityId: primitives.ActivityId, cause: ScheduleActivityTaskFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedEventAttributes = {
      import ScheduleActivityTaskFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedEventAttributes.builder().activityType(activityType.buildAwsValue()).activityId(activityId: java.lang.String).cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: ScheduleActivityTaskFailedEventAttributes.ReadOnly = ScheduleActivityTaskFailedEventAttributes.wrap(buildAwsValue())
  }
  object ScheduleActivityTaskFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ScheduleActivityTaskFailedEventAttributes = ScheduleActivityTaskFailedEventAttributes(activityTypeValue.editable, activityIdValue, causeValue, decisionTaskCompletedEventIdValue)
      def activityTypeValue: ActivityType.ReadOnly
      def activityIdValue: primitives.ActivityId
      def causeValue: ScheduleActivityTaskFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
      def activityId: ZIO[Any, Nothing, primitives.ActivityId] = ZIO.succeed(activityIdValue)
      def cause: ZIO[Any, Nothing, ScheduleActivityTaskFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedEventAttributes) extends ScheduleActivityTaskFailedEventAttributes.ReadOnly {
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
      override def activityIdValue: primitives.ActivityId = impl.activityId(): primitives.ActivityId
      override def causeValue: ScheduleActivityTaskFailedCause = ScheduleActivityTaskFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ScheduleActivityTaskFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class ScheduleLambdaFunctionDecisionAttributes(id: primitives.FunctionId, name: primitives.FunctionName, control: scala.Option[primitives.Data] = None, input: scala.Option[primitives.FunctionInput] = None, startToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionDecisionAttributes = {
      import ScheduleLambdaFunctionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionDecisionAttributes.builder().id(id: java.lang.String).name(name: java.lang.String).optionallyWith(control.map(value => value: java.lang.String))(_.control).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(startToCloseTimeout.map(value => value: java.lang.String))(_.startToCloseTimeout).build()
    }
    def asReadOnly: ScheduleLambdaFunctionDecisionAttributes.ReadOnly = ScheduleLambdaFunctionDecisionAttributes.wrap(buildAwsValue())
  }
  object ScheduleLambdaFunctionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ScheduleLambdaFunctionDecisionAttributes = ScheduleLambdaFunctionDecisionAttributes(idValue, nameValue, controlValue.map(value => value), inputValue.map(value => value), startToCloseTimeoutValue.map(value => value))
      def idValue: primitives.FunctionId
      def nameValue: primitives.FunctionName
      def controlValue: scala.Option[primitives.Data]
      def inputValue: scala.Option[primitives.FunctionInput]
      def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def id: ZIO[Any, Nothing, primitives.FunctionId] = ZIO.succeed(idValue)
      def name: ZIO[Any, Nothing, primitives.FunctionName] = ZIO.succeed(nameValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FunctionInput] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def startToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startToCloseTimeout", startToCloseTimeoutValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionDecisionAttributes) extends ScheduleLambdaFunctionDecisionAttributes.ReadOnly {
      override def idValue: primitives.FunctionId = impl.id(): primitives.FunctionId
      override def nameValue: primitives.FunctionName = impl.name(): primitives.FunctionName
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def inputValue: scala.Option[primitives.FunctionInput] = scala.Option(impl.input()).map(value => value: primitives.FunctionInput)
      override def startToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.startToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait ScheduleLambdaFunctionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause }
  object ScheduleLambdaFunctionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause): ScheduleLambdaFunctionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.ID_ALREADY_IN_USE => ID_ALREADY_IN_USE
      case software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.OPEN_LAMBDA_FUNCTIONS_LIMIT_EXCEEDED => OPEN_LAMBDA_FUNCTIONS_LIMIT_EXCEEDED
      case software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.LAMBDA_FUNCTION_CREATION_RATE_EXCEEDED => LAMBDA_FUNCTION_CREATION_RATE_EXCEEDED
      case software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.LAMBDA_SERVICE_NOT_AVAILABLE_IN_REGION => LAMBDA_SERVICE_NOT_AVAILABLE_IN_REGION
    }
    final case object unknownToSdkVersion extends ScheduleLambdaFunctionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause = software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object ID_ALREADY_IN_USE extends ScheduleLambdaFunctionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause = software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.ID_ALREADY_IN_USE }
    final case object OPEN_LAMBDA_FUNCTIONS_LIMIT_EXCEEDED extends ScheduleLambdaFunctionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause = software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.OPEN_LAMBDA_FUNCTIONS_LIMIT_EXCEEDED }
    final case object LAMBDA_FUNCTION_CREATION_RATE_EXCEEDED extends ScheduleLambdaFunctionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause = software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.LAMBDA_FUNCTION_CREATION_RATE_EXCEEDED }
    final case object LAMBDA_SERVICE_NOT_AVAILABLE_IN_REGION extends ScheduleLambdaFunctionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause = software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedCause.LAMBDA_SERVICE_NOT_AVAILABLE_IN_REGION }
  }
  case class ScheduleLambdaFunctionFailedEventAttributes(id: primitives.FunctionId, name: primitives.FunctionName, cause: ScheduleLambdaFunctionFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedEventAttributes = {
      import ScheduleLambdaFunctionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedEventAttributes.builder().id(id: java.lang.String).name(name: java.lang.String).cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: ScheduleLambdaFunctionFailedEventAttributes.ReadOnly = ScheduleLambdaFunctionFailedEventAttributes.wrap(buildAwsValue())
  }
  object ScheduleLambdaFunctionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ScheduleLambdaFunctionFailedEventAttributes = ScheduleLambdaFunctionFailedEventAttributes(idValue, nameValue, causeValue, decisionTaskCompletedEventIdValue)
      def idValue: primitives.FunctionId
      def nameValue: primitives.FunctionName
      def causeValue: ScheduleLambdaFunctionFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def id: ZIO[Any, Nothing, primitives.FunctionId] = ZIO.succeed(idValue)
      def name: ZIO[Any, Nothing, primitives.FunctionName] = ZIO.succeed(nameValue)
      def cause: ZIO[Any, Nothing, ScheduleLambdaFunctionFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedEventAttributes) extends ScheduleLambdaFunctionFailedEventAttributes.ReadOnly {
      override def idValue: primitives.FunctionId = impl.id(): primitives.FunctionId
      override def nameValue: primitives.FunctionName = impl.name(): primitives.FunctionName
      override def causeValue: ScheduleLambdaFunctionFailedCause = ScheduleLambdaFunctionFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.ScheduleLambdaFunctionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class SignalExternalWorkflowExecutionDecisionAttributes(workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, signalName: primitives.SignalName, input: scala.Option[primitives.Data] = None, control: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionDecisionAttributes = {
      import SignalExternalWorkflowExecutionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionDecisionAttributes.builder().workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).signalName(signalName: java.lang.String).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(control.map(value => value: java.lang.String))(_.control).build()
    }
    def asReadOnly: SignalExternalWorkflowExecutionDecisionAttributes.ReadOnly = SignalExternalWorkflowExecutionDecisionAttributes.wrap(buildAwsValue())
  }
  object SignalExternalWorkflowExecutionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SignalExternalWorkflowExecutionDecisionAttributes = SignalExternalWorkflowExecutionDecisionAttributes(workflowIdValue, runIdValue.map(value => value), signalNameValue, inputValue.map(value => value), controlValue.map(value => value))
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def signalNameValue: primitives.SignalName
      def inputValue: scala.Option[primitives.Data]
      def controlValue: scala.Option[primitives.Data]
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def signalName: ZIO[Any, Nothing, primitives.SignalName] = ZIO.succeed(signalNameValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionDecisionAttributes) extends SignalExternalWorkflowExecutionDecisionAttributes.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def signalNameValue: primitives.SignalName = impl.signalName(): primitives.SignalName
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait SignalExternalWorkflowExecutionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause }
  object SignalExternalWorkflowExecutionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause): SignalExternalWorkflowExecutionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION => UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION
      case software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED => SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED
      case software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends SignalExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION extends SignalExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION }
    final case object SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED extends SignalExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED }
    final case object OPERATION_NOT_PERMITTED extends SignalExternalWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class SignalExternalWorkflowExecutionFailedEventAttributes(workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, cause: SignalExternalWorkflowExecutionFailedCause, initiatedEventId: primitives.EventId, decisionTaskCompletedEventId: primitives.EventId, control: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedEventAttributes = {
      import SignalExternalWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedEventAttributes.builder().workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).cause(cause.unwrap).initiatedEventId(initiatedEventId: java.lang.Long).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).optionallyWith(control.map(value => value: java.lang.String))(_.control).build()
    }
    def asReadOnly: SignalExternalWorkflowExecutionFailedEventAttributes.ReadOnly = SignalExternalWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object SignalExternalWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SignalExternalWorkflowExecutionFailedEventAttributes = SignalExternalWorkflowExecutionFailedEventAttributes(workflowIdValue, runIdValue.map(value => value), causeValue, initiatedEventIdValue, decisionTaskCompletedEventIdValue, controlValue.map(value => value))
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def causeValue: SignalExternalWorkflowExecutionFailedCause
      def initiatedEventIdValue: primitives.EventId
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def controlValue: scala.Option[primitives.Data]
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def cause: ZIO[Any, Nothing, SignalExternalWorkflowExecutionFailedCause] = ZIO.succeed(causeValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedEventAttributes) extends SignalExternalWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def causeValue: SignalExternalWorkflowExecutionFailedCause = SignalExternalWorkflowExecutionFailedCause.wrap(impl.cause())
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class SignalExternalWorkflowExecutionInitiatedEventAttributes(workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, signalName: primitives.SignalName, input: scala.Option[primitives.Data] = None, decisionTaskCompletedEventId: primitives.EventId, control: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionInitiatedEventAttributes = {
      import SignalExternalWorkflowExecutionInitiatedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionInitiatedEventAttributes.builder().workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).signalName(signalName: java.lang.String).optionallyWith(input.map(value => value: java.lang.String))(_.input).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).optionallyWith(control.map(value => value: java.lang.String))(_.control).build()
    }
    def asReadOnly: SignalExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly = SignalExternalWorkflowExecutionInitiatedEventAttributes.wrap(buildAwsValue())
  }
  object SignalExternalWorkflowExecutionInitiatedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionInitiatedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SignalExternalWorkflowExecutionInitiatedEventAttributes = SignalExternalWorkflowExecutionInitiatedEventAttributes(workflowIdValue, runIdValue.map(value => value), signalNameValue, inputValue.map(value => value), decisionTaskCompletedEventIdValue, controlValue.map(value => value))
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def signalNameValue: primitives.SignalName
      def inputValue: scala.Option[primitives.Data]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def controlValue: scala.Option[primitives.Data]
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def signalName: ZIO[Any, Nothing, primitives.SignalName] = ZIO.succeed(signalNameValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionInitiatedEventAttributes) extends SignalExternalWorkflowExecutionInitiatedEventAttributes.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def signalNameValue: primitives.SignalName = impl.signalName(): primitives.SignalName
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.SignalExternalWorkflowExecutionInitiatedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class SignalWorkflowExecutionRequest(domain: primitives.DomainName, workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, signalName: primitives.SignalName, input: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionRequest = {
      import SignalWorkflowExecutionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionRequest.builder().domain(domain: java.lang.String).workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).signalName(signalName: java.lang.String).optionallyWith(input.map(value => value: java.lang.String))(_.input).build()
    }
    def asReadOnly: SignalWorkflowExecutionRequest.ReadOnly = SignalWorkflowExecutionRequest.wrap(buildAwsValue())
  }
  object SignalWorkflowExecutionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SignalWorkflowExecutionRequest = SignalWorkflowExecutionRequest(domainValue, workflowIdValue, runIdValue.map(value => value), signalNameValue, inputValue.map(value => value))
      def domainValue: primitives.DomainName
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def signalNameValue: primitives.SignalName
      def inputValue: scala.Option[primitives.Data]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def signalName: ZIO[Any, Nothing, primitives.SignalName] = ZIO.succeed(signalNameValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionRequest) extends SignalWorkflowExecutionRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def signalNameValue: primitives.SignalName = impl.signalName(): primitives.SignalName
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionRequest): ReadOnly = new Wrapper(impl)
  }
  case class StartChildWorkflowExecutionDecisionAttributes(workflowType: WorkflowType, workflowId: primitives.WorkflowId, control: scala.Option[primitives.Data] = None, input: scala.Option[primitives.Data] = None, executionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, taskList: scala.Option[TaskList] = None, taskPriority: scala.Option[primitives.TaskPriority] = None, taskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, childPolicy: scala.Option[ChildPolicy] = None, tagList: scala.Option[Iterable[primitives.Tag]] = None, lambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionDecisionAttributes = {
      import StartChildWorkflowExecutionDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionDecisionAttributes.builder().workflowType(workflowType.buildAwsValue()).workflowId(workflowId: java.lang.String).optionallyWith(control.map(value => value: java.lang.String))(_.control).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(executionStartToCloseTimeout.map(value => value: java.lang.String))(_.executionStartToCloseTimeout).optionallyWith(taskList.map(value => value.buildAwsValue()))(_.taskList).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).optionallyWith(taskStartToCloseTimeout.map(value => value: java.lang.String))(_.taskStartToCloseTimeout).optionallyWith(childPolicy.map(value => value.unwrap))(_.childPolicy).optionallyWith(tagList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tagList).optionallyWith(lambdaRole.map(value => value: java.lang.String))(_.lambdaRole).build()
    }
    def asReadOnly: StartChildWorkflowExecutionDecisionAttributes.ReadOnly = StartChildWorkflowExecutionDecisionAttributes.wrap(buildAwsValue())
  }
  object StartChildWorkflowExecutionDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartChildWorkflowExecutionDecisionAttributes = StartChildWorkflowExecutionDecisionAttributes(workflowTypeValue.editable, workflowIdValue, controlValue.map(value => value), inputValue.map(value => value), executionStartToCloseTimeoutValue.map(value => value), taskListValue.map(value => value.editable), taskPriorityValue.map(value => value), taskStartToCloseTimeoutValue.map(value => value), childPolicyValue.map(value => value), tagListValue.map(value => value), lambdaRoleValue.map(value => value))
      def workflowTypeValue: WorkflowType.ReadOnly
      def workflowIdValue: primitives.WorkflowId
      def controlValue: scala.Option[primitives.Data]
      def inputValue: scala.Option[primitives.Data]
      def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskListValue: scala.Option[TaskList.ReadOnly]
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def childPolicyValue: scala.Option[ChildPolicy]
      def tagListValue: scala.Option[List[primitives.Tag]]
      def lambdaRoleValue: scala.Option[primitives.Arn]
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def executionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionStartToCloseTimeout", executionStartToCloseTimeoutValue)
      def taskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskList", taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def taskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskStartToCloseTimeout", taskStartToCloseTimeoutValue)
      def childPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildPolicy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childPolicy", childPolicyValue)
      def tagList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Tag]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagList", tagListValue)
      def lambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaRole", lambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionDecisionAttributes) extends StartChildWorkflowExecutionDecisionAttributes.ReadOnly {
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.executionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def taskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.taskList()).map(value => TaskList.wrap(value))
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.taskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def childPolicyValue: scala.Option[ChildPolicy] = scala.Option(impl.childPolicy()).map(value => ChildPolicy.wrap(value))
      override def tagListValue: scala.Option[List[primitives.Tag]] = scala.Option(impl.tagList()).map(value => value.asScala.map { item => 
        item: primitives.Tag
      }.toList)
      override def lambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.lambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait StartChildWorkflowExecutionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause }
  object StartChildWorkflowExecutionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause): StartChildWorkflowExecutionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.WORKFLOW_TYPE_DOES_NOT_EXIST => WORKFLOW_TYPE_DOES_NOT_EXIST
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.WORKFLOW_TYPE_DEPRECATED => WORKFLOW_TYPE_DEPRECATED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.OPEN_CHILDREN_LIMIT_EXCEEDED => OPEN_CHILDREN_LIMIT_EXCEEDED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.OPEN_WORKFLOWS_LIMIT_EXCEEDED => OPEN_WORKFLOWS_LIMIT_EXCEEDED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.CHILD_CREATION_RATE_EXCEEDED => CHILD_CREATION_RATE_EXCEEDED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.WORKFLOW_ALREADY_RUNNING => WORKFLOW_ALREADY_RUNNING
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED => DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_TASK_LIST_UNDEFINED => DEFAULT_TASK_LIST_UNDEFINED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED => DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_CHILD_POLICY_UNDEFINED => DEFAULT_CHILD_POLICY_UNDEFINED
      case software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object WORKFLOW_TYPE_DOES_NOT_EXIST extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.WORKFLOW_TYPE_DOES_NOT_EXIST }
    final case object WORKFLOW_TYPE_DEPRECATED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.WORKFLOW_TYPE_DEPRECATED }
    final case object OPEN_CHILDREN_LIMIT_EXCEEDED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.OPEN_CHILDREN_LIMIT_EXCEEDED }
    final case object OPEN_WORKFLOWS_LIMIT_EXCEEDED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.OPEN_WORKFLOWS_LIMIT_EXCEEDED }
    final case object CHILD_CREATION_RATE_EXCEEDED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.CHILD_CREATION_RATE_EXCEEDED }
    final case object WORKFLOW_ALREADY_RUNNING extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.WORKFLOW_ALREADY_RUNNING }
    final case object DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED }
    final case object DEFAULT_TASK_LIST_UNDEFINED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_TASK_LIST_UNDEFINED }
    final case object DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED }
    final case object DEFAULT_CHILD_POLICY_UNDEFINED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.DEFAULT_CHILD_POLICY_UNDEFINED }
    final case object OPERATION_NOT_PERMITTED extends StartChildWorkflowExecutionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause = software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class StartChildWorkflowExecutionFailedEventAttributes(workflowType: WorkflowType, cause: StartChildWorkflowExecutionFailedCause, workflowId: primitives.WorkflowId, initiatedEventId: primitives.EventId, decisionTaskCompletedEventId: primitives.EventId, control: scala.Option[primitives.Data] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedEventAttributes = {
      import StartChildWorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedEventAttributes.builder().workflowType(workflowType.buildAwsValue()).cause(cause.unwrap).workflowId(workflowId: java.lang.String).initiatedEventId(initiatedEventId: java.lang.Long).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).optionallyWith(control.map(value => value: java.lang.String))(_.control).build()
    }
    def asReadOnly: StartChildWorkflowExecutionFailedEventAttributes.ReadOnly = StartChildWorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object StartChildWorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartChildWorkflowExecutionFailedEventAttributes = StartChildWorkflowExecutionFailedEventAttributes(workflowTypeValue.editable, causeValue, workflowIdValue, initiatedEventIdValue, decisionTaskCompletedEventIdValue, controlValue.map(value => value))
      def workflowTypeValue: WorkflowType.ReadOnly
      def causeValue: StartChildWorkflowExecutionFailedCause
      def workflowIdValue: primitives.WorkflowId
      def initiatedEventIdValue: primitives.EventId
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def controlValue: scala.Option[primitives.Data]
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def cause: ZIO[Any, Nothing, StartChildWorkflowExecutionFailedCause] = ZIO.succeed(causeValue)
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def initiatedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(initiatedEventIdValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedEventAttributes) extends StartChildWorkflowExecutionFailedEventAttributes.ReadOnly {
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def causeValue: StartChildWorkflowExecutionFailedCause = StartChildWorkflowExecutionFailedCause.wrap(impl.cause())
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def initiatedEventIdValue: primitives.EventId = impl.initiatedEventId(): primitives.EventId
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class StartChildWorkflowExecutionInitiatedEventAttributes(workflowId: primitives.WorkflowId, workflowType: WorkflowType, control: scala.Option[primitives.Data] = None, input: scala.Option[primitives.Data] = None, executionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, taskList: TaskList, taskPriority: scala.Option[primitives.TaskPriority] = None, decisionTaskCompletedEventId: primitives.EventId, childPolicy: ChildPolicy, taskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, tagList: scala.Option[Iterable[primitives.Tag]] = None, lambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionInitiatedEventAttributes = {
      import StartChildWorkflowExecutionInitiatedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionInitiatedEventAttributes.builder().workflowId(workflowId: java.lang.String).workflowType(workflowType.buildAwsValue()).optionallyWith(control.map(value => value: java.lang.String))(_.control).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(executionStartToCloseTimeout.map(value => value: java.lang.String))(_.executionStartToCloseTimeout).taskList(taskList.buildAwsValue()).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).childPolicy(childPolicy.unwrap).optionallyWith(taskStartToCloseTimeout.map(value => value: java.lang.String))(_.taskStartToCloseTimeout).optionallyWith(tagList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tagList).optionallyWith(lambdaRole.map(value => value: java.lang.String))(_.lambdaRole).build()
    }
    def asReadOnly: StartChildWorkflowExecutionInitiatedEventAttributes.ReadOnly = StartChildWorkflowExecutionInitiatedEventAttributes.wrap(buildAwsValue())
  }
  object StartChildWorkflowExecutionInitiatedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionInitiatedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartChildWorkflowExecutionInitiatedEventAttributes = StartChildWorkflowExecutionInitiatedEventAttributes(workflowIdValue, workflowTypeValue.editable, controlValue.map(value => value), inputValue.map(value => value), executionStartToCloseTimeoutValue.map(value => value), taskListValue.editable, taskPriorityValue.map(value => value), decisionTaskCompletedEventIdValue, childPolicyValue, taskStartToCloseTimeoutValue.map(value => value), tagListValue.map(value => value), lambdaRoleValue.map(value => value))
      def workflowIdValue: primitives.WorkflowId
      def workflowTypeValue: WorkflowType.ReadOnly
      def controlValue: scala.Option[primitives.Data]
      def inputValue: scala.Option[primitives.Data]
      def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskListValue: TaskList.ReadOnly
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def childPolicyValue: ChildPolicy
      def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def tagListValue: scala.Option[List[primitives.Tag]]
      def lambdaRoleValue: scala.Option[primitives.Arn]
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def executionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionStartToCloseTimeout", executionStartToCloseTimeoutValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def childPolicy: ZIO[Any, Nothing, ChildPolicy] = ZIO.succeed(childPolicyValue)
      def taskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskStartToCloseTimeout", taskStartToCloseTimeoutValue)
      def tagList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Tag]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagList", tagListValue)
      def lambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaRole", lambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionInitiatedEventAttributes) extends StartChildWorkflowExecutionInitiatedEventAttributes.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.executionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def childPolicyValue: ChildPolicy = ChildPolicy.wrap(impl.childPolicy())
      override def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.taskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def tagListValue: scala.Option[List[primitives.Tag]] = scala.Option(impl.tagList()).map(value => value.asScala.map { item => 
        item: primitives.Tag
      }.toList)
      override def lambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.lambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartChildWorkflowExecutionInitiatedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait StartLambdaFunctionFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause }
  object StartLambdaFunctionFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause): StartLambdaFunctionFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause.ASSUME_ROLE_FAILED => ASSUME_ROLE_FAILED
    }
    final case object unknownToSdkVersion extends StartLambdaFunctionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause = software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object ASSUME_ROLE_FAILED extends StartLambdaFunctionFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause = software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedCause.ASSUME_ROLE_FAILED }
  }
  case class StartLambdaFunctionFailedEventAttributes(scheduledEventId: scala.Option[primitives.EventId] = None, cause: scala.Option[StartLambdaFunctionFailedCause] = None, message: scala.Option[primitives.CauseMessage] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedEventAttributes = {
      import StartLambdaFunctionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedEventAttributes.builder().optionallyWith(scheduledEventId.map(value => value: java.lang.Long))(_.scheduledEventId).optionallyWith(cause.map(value => value.unwrap))(_.cause).optionallyWith(message.map(value => value: java.lang.String))(_.message).build()
    }
    def asReadOnly: StartLambdaFunctionFailedEventAttributes.ReadOnly = StartLambdaFunctionFailedEventAttributes.wrap(buildAwsValue())
  }
  object StartLambdaFunctionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartLambdaFunctionFailedEventAttributes = StartLambdaFunctionFailedEventAttributes(scheduledEventIdValue.map(value => value), causeValue.map(value => value), messageValue.map(value => value))
      def scheduledEventIdValue: scala.Option[primitives.EventId]
      def causeValue: scala.Option[StartLambdaFunctionFailedCause]
      def messageValue: scala.Option[primitives.CauseMessage]
      def scheduledEventId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduledEventId", scheduledEventIdValue)
      def cause: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StartLambdaFunctionFailedCause] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cause", causeValue)
      def message: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.CauseMessage] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("message", messageValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedEventAttributes) extends StartLambdaFunctionFailedEventAttributes.ReadOnly {
      override def scheduledEventIdValue: scala.Option[primitives.EventId] = scala.Option(impl.scheduledEventId()).map(value => value: primitives.EventId)
      override def causeValue: scala.Option[StartLambdaFunctionFailedCause] = scala.Option(impl.cause()).map(value => StartLambdaFunctionFailedCause.wrap(value))
      override def messageValue: scala.Option[primitives.CauseMessage] = scala.Option(impl.message()).map(value => value: primitives.CauseMessage)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartLambdaFunctionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class StartTimerDecisionAttributes(timerId: primitives.TimerId, control: scala.Option[primitives.Data] = None, startToFireTimeout: primitives.DurationInSeconds) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartTimerDecisionAttributes = {
      import StartTimerDecisionAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartTimerDecisionAttributes.builder().timerId(timerId: java.lang.String).optionallyWith(control.map(value => value: java.lang.String))(_.control).startToFireTimeout(startToFireTimeout: java.lang.String).build()
    }
    def asReadOnly: StartTimerDecisionAttributes.ReadOnly = StartTimerDecisionAttributes.wrap(buildAwsValue())
  }
  object StartTimerDecisionAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartTimerDecisionAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartTimerDecisionAttributes = StartTimerDecisionAttributes(timerIdValue, controlValue.map(value => value), startToFireTimeoutValue)
      def timerIdValue: primitives.TimerId
      def controlValue: scala.Option[primitives.Data]
      def startToFireTimeoutValue: primitives.DurationInSeconds
      def timerId: ZIO[Any, Nothing, primitives.TimerId] = ZIO.succeed(timerIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def startToFireTimeout: ZIO[Any, Nothing, primitives.DurationInSeconds] = ZIO.succeed(startToFireTimeoutValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartTimerDecisionAttributes) extends StartTimerDecisionAttributes.ReadOnly {
      override def timerIdValue: primitives.TimerId = impl.timerId(): primitives.TimerId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def startToFireTimeoutValue: primitives.DurationInSeconds = impl.startToFireTimeout(): primitives.DurationInSeconds
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartTimerDecisionAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait StartTimerFailedCause { def unwrap: software.amazon.awssdk.services.swf.model.StartTimerFailedCause }
  object StartTimerFailedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.StartTimerFailedCause): StartTimerFailedCause = value match {
      case software.amazon.awssdk.services.swf.model.StartTimerFailedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.StartTimerFailedCause.TIMER_ID_ALREADY_IN_USE => TIMER_ID_ALREADY_IN_USE
      case software.amazon.awssdk.services.swf.model.StartTimerFailedCause.OPEN_TIMERS_LIMIT_EXCEEDED => OPEN_TIMERS_LIMIT_EXCEEDED
      case software.amazon.awssdk.services.swf.model.StartTimerFailedCause.TIMER_CREATION_RATE_EXCEEDED => TIMER_CREATION_RATE_EXCEEDED
      case software.amazon.awssdk.services.swf.model.StartTimerFailedCause.OPERATION_NOT_PERMITTED => OPERATION_NOT_PERMITTED
    }
    final case object unknownToSdkVersion extends StartTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartTimerFailedCause = software.amazon.awssdk.services.swf.model.StartTimerFailedCause.UNKNOWN_TO_SDK_VERSION }
    final case object TIMER_ID_ALREADY_IN_USE extends StartTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartTimerFailedCause = software.amazon.awssdk.services.swf.model.StartTimerFailedCause.TIMER_ID_ALREADY_IN_USE }
    final case object OPEN_TIMERS_LIMIT_EXCEEDED extends StartTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartTimerFailedCause = software.amazon.awssdk.services.swf.model.StartTimerFailedCause.OPEN_TIMERS_LIMIT_EXCEEDED }
    final case object TIMER_CREATION_RATE_EXCEEDED extends StartTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartTimerFailedCause = software.amazon.awssdk.services.swf.model.StartTimerFailedCause.TIMER_CREATION_RATE_EXCEEDED }
    final case object OPERATION_NOT_PERMITTED extends StartTimerFailedCause { override def unwrap: software.amazon.awssdk.services.swf.model.StartTimerFailedCause = software.amazon.awssdk.services.swf.model.StartTimerFailedCause.OPERATION_NOT_PERMITTED }
  }
  case class StartTimerFailedEventAttributes(timerId: primitives.TimerId, cause: StartTimerFailedCause, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartTimerFailedEventAttributes = {
      import StartTimerFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartTimerFailedEventAttributes.builder().timerId(timerId: java.lang.String).cause(cause.unwrap).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: StartTimerFailedEventAttributes.ReadOnly = StartTimerFailedEventAttributes.wrap(buildAwsValue())
  }
  object StartTimerFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartTimerFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartTimerFailedEventAttributes = StartTimerFailedEventAttributes(timerIdValue, causeValue, decisionTaskCompletedEventIdValue)
      def timerIdValue: primitives.TimerId
      def causeValue: StartTimerFailedCause
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def timerId: ZIO[Any, Nothing, primitives.TimerId] = ZIO.succeed(timerIdValue)
      def cause: ZIO[Any, Nothing, StartTimerFailedCause] = ZIO.succeed(causeValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartTimerFailedEventAttributes) extends StartTimerFailedEventAttributes.ReadOnly {
      override def timerIdValue: primitives.TimerId = impl.timerId(): primitives.TimerId
      override def causeValue: StartTimerFailedCause = StartTimerFailedCause.wrap(impl.cause())
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartTimerFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class StartWorkflowExecutionRequest(domain: primitives.DomainName, workflowId: primitives.WorkflowId, workflowType: WorkflowType, taskList: scala.Option[TaskList] = None, taskPriority: scala.Option[primitives.TaskPriority] = None, input: scala.Option[primitives.Data] = None, executionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, tagList: scala.Option[Iterable[primitives.Tag]] = None, taskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, childPolicy: scala.Option[ChildPolicy] = None, lambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartWorkflowExecutionRequest = {
      import StartWorkflowExecutionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartWorkflowExecutionRequest.builder().domain(domain: java.lang.String).workflowId(workflowId: java.lang.String).workflowType(workflowType.buildAwsValue()).optionallyWith(taskList.map(value => value.buildAwsValue()))(_.taskList).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(executionStartToCloseTimeout.map(value => value: java.lang.String))(_.executionStartToCloseTimeout).optionallyWith(tagList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tagList).optionallyWith(taskStartToCloseTimeout.map(value => value: java.lang.String))(_.taskStartToCloseTimeout).optionallyWith(childPolicy.map(value => value.unwrap))(_.childPolicy).optionallyWith(lambdaRole.map(value => value: java.lang.String))(_.lambdaRole).build()
    }
    def asReadOnly: StartWorkflowExecutionRequest.ReadOnly = StartWorkflowExecutionRequest.wrap(buildAwsValue())
  }
  object StartWorkflowExecutionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartWorkflowExecutionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartWorkflowExecutionRequest = StartWorkflowExecutionRequest(domainValue, workflowIdValue, workflowTypeValue.editable, taskListValue.map(value => value.editable), taskPriorityValue.map(value => value), inputValue.map(value => value), executionStartToCloseTimeoutValue.map(value => value), tagListValue.map(value => value), taskStartToCloseTimeoutValue.map(value => value), childPolicyValue.map(value => value), lambdaRoleValue.map(value => value))
      def domainValue: primitives.DomainName
      def workflowIdValue: primitives.WorkflowId
      def workflowTypeValue: WorkflowType.ReadOnly
      def taskListValue: scala.Option[TaskList.ReadOnly]
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def inputValue: scala.Option[primitives.Data]
      def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def tagListValue: scala.Option[List[primitives.Tag]]
      def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def childPolicyValue: scala.Option[ChildPolicy]
      def lambdaRoleValue: scala.Option[primitives.Arn]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def taskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskList", taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def executionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionStartToCloseTimeout", executionStartToCloseTimeoutValue)
      def tagList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Tag]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagList", tagListValue)
      def taskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskStartToCloseTimeout", taskStartToCloseTimeoutValue)
      def childPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildPolicy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childPolicy", childPolicyValue)
      def lambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaRole", lambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartWorkflowExecutionRequest) extends StartWorkflowExecutionRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def taskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.taskList()).map(value => TaskList.wrap(value))
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.executionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def tagListValue: scala.Option[List[primitives.Tag]] = scala.Option(impl.tagList()).map(value => value.asScala.map { item => 
        item: primitives.Tag
      }.toList)
      override def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.taskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def childPolicyValue: scala.Option[ChildPolicy] = scala.Option(impl.childPolicy()).map(value => ChildPolicy.wrap(value))
      override def lambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.lambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartWorkflowExecutionRequest): ReadOnly = new Wrapper(impl)
  }
  case class StartWorkflowExecutionResponse(runId: scala.Option[primitives.WorkflowRunId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.StartWorkflowExecutionResponse = {
      import StartWorkflowExecutionResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.StartWorkflowExecutionResponse.builder().optionallyWith(runId.map(value => value: java.lang.String))(_.runId).build()
    }
    def asReadOnly: StartWorkflowExecutionResponse.ReadOnly = StartWorkflowExecutionResponse.wrap(buildAwsValue())
  }
  object StartWorkflowExecutionResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.StartWorkflowExecutionResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartWorkflowExecutionResponse = StartWorkflowExecutionResponse(runIdValue.map(value => value))
      def runIdValue: scala.Option[primitives.WorkflowRunId]
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.StartWorkflowExecutionResponse) extends StartWorkflowExecutionResponse.ReadOnly { override def runIdValue: scala.Option[primitives.WorkflowRunId] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunId) }
    def wrap(impl: software.amazon.awssdk.services.swf.model.StartWorkflowExecutionResponse): ReadOnly = new Wrapper(impl)
  }
  case class TagFilter(tag: primitives.Tag) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.TagFilter = {
      import TagFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.TagFilter.builder().tag(tag: java.lang.String).build()
    }
    def asReadOnly: TagFilter.ReadOnly = TagFilter.wrap(buildAwsValue())
  }
  object TagFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.TagFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagFilter = TagFilter(tagValue)
      def tagValue: primitives.Tag
      def tag: ZIO[Any, Nothing, primitives.Tag] = ZIO.succeed(tagValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.TagFilter) extends TagFilter.ReadOnly { override def tagValue: primitives.Tag = impl.tag(): primitives.Tag }
    def wrap(impl: software.amazon.awssdk.services.swf.model.TagFilter): ReadOnly = new Wrapper(impl)
  }
  type TagList = List[primitives.Tag]
  case class TagResourceRequest(resourceArn: primitives.Arn, tags: Iterable[ResourceTag]) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.TagResourceRequest = {
      import TagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.TagResourceRequest.builder().resourceArn(resourceArn: java.lang.String).tags(tags.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: TagResourceRequest.ReadOnly = TagResourceRequest.wrap(buildAwsValue())
  }
  object TagResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.TagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagResourceRequest = TagResourceRequest(resourceArnValue, tagsValue.map { item => 
        item.editable
      })
      def resourceArnValue: primitives.Arn
      def tagsValue: List[ResourceTag.ReadOnly]
      def resourceArn: ZIO[Any, Nothing, primitives.Arn] = ZIO.succeed(resourceArnValue)
      def tags: ZIO[Any, Nothing, List[ResourceTag.ReadOnly]] = ZIO.succeed(tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.TagResourceRequest) extends TagResourceRequest.ReadOnly {
      override def resourceArnValue: primitives.Arn = impl.resourceArn(): primitives.Arn
      override def tagsValue: List[ResourceTag.ReadOnly] = impl.tags().asScala.map { item => 
        ResourceTag.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.TagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class TaskList(name: primitives.Name) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.TaskList = {
      import TaskList.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.TaskList.builder().name(name: java.lang.String).build()
    }
    def asReadOnly: TaskList.ReadOnly = TaskList.wrap(buildAwsValue())
  }
  object TaskList {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.TaskList] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TaskList = TaskList(nameValue)
      def nameValue: primitives.Name
      def name: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(nameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.TaskList) extends TaskList.ReadOnly { override def nameValue: primitives.Name = impl.name(): primitives.Name }
    def wrap(impl: software.amazon.awssdk.services.swf.model.TaskList): ReadOnly = new Wrapper(impl)
  }
  case class TerminateWorkflowExecutionRequest(domain: primitives.DomainName, workflowId: primitives.WorkflowId, runId: scala.Option[primitives.WorkflowRunIdOptional] = None, reason: scala.Option[primitives.TerminateReason] = None, details: scala.Option[primitives.Data] = None, childPolicy: scala.Option[ChildPolicy] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionRequest = {
      import TerminateWorkflowExecutionRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionRequest.builder().domain(domain: java.lang.String).workflowId(workflowId: java.lang.String).optionallyWith(runId.map(value => value: java.lang.String))(_.runId).optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).optionallyWith(childPolicy.map(value => value.unwrap))(_.childPolicy).build()
    }
    def asReadOnly: TerminateWorkflowExecutionRequest.ReadOnly = TerminateWorkflowExecutionRequest.wrap(buildAwsValue())
  }
  object TerminateWorkflowExecutionRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TerminateWorkflowExecutionRequest = TerminateWorkflowExecutionRequest(domainValue, workflowIdValue, runIdValue.map(value => value), reasonValue.map(value => value), detailsValue.map(value => value), childPolicyValue.map(value => value))
      def domainValue: primitives.DomainName
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def reasonValue: scala.Option[primitives.TerminateReason]
      def detailsValue: scala.Option[primitives.Data]
      def childPolicyValue: scala.Option[ChildPolicy]
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("runId", runIdValue)
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TerminateReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def childPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildPolicy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("childPolicy", childPolicyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionRequest) extends TerminateWorkflowExecutionRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.runId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def reasonValue: scala.Option[primitives.TerminateReason] = scala.Option(impl.reason()).map(value => value: primitives.TerminateReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def childPolicyValue: scala.Option[ChildPolicy] = scala.Option(impl.childPolicy()).map(value => ChildPolicy.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionRequest): ReadOnly = new Wrapper(impl)
  }
  case class TimerCanceledEventAttributes(timerId: primitives.TimerId, startedEventId: primitives.EventId, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.TimerCanceledEventAttributes = {
      import TimerCanceledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.TimerCanceledEventAttributes.builder().timerId(timerId: java.lang.String).startedEventId(startedEventId: java.lang.Long).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: TimerCanceledEventAttributes.ReadOnly = TimerCanceledEventAttributes.wrap(buildAwsValue())
  }
  object TimerCanceledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.TimerCanceledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TimerCanceledEventAttributes = TimerCanceledEventAttributes(timerIdValue, startedEventIdValue, decisionTaskCompletedEventIdValue)
      def timerIdValue: primitives.TimerId
      def startedEventIdValue: primitives.EventId
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def timerId: ZIO[Any, Nothing, primitives.TimerId] = ZIO.succeed(timerIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.TimerCanceledEventAttributes) extends TimerCanceledEventAttributes.ReadOnly {
      override def timerIdValue: primitives.TimerId = impl.timerId(): primitives.TimerId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.TimerCanceledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class TimerFiredEventAttributes(timerId: primitives.TimerId, startedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.TimerFiredEventAttributes = {
      import TimerFiredEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.TimerFiredEventAttributes.builder().timerId(timerId: java.lang.String).startedEventId(startedEventId: java.lang.Long).build()
    }
    def asReadOnly: TimerFiredEventAttributes.ReadOnly = TimerFiredEventAttributes.wrap(buildAwsValue())
  }
  object TimerFiredEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.TimerFiredEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TimerFiredEventAttributes = TimerFiredEventAttributes(timerIdValue, startedEventIdValue)
      def timerIdValue: primitives.TimerId
      def startedEventIdValue: primitives.EventId
      def timerId: ZIO[Any, Nothing, primitives.TimerId] = ZIO.succeed(timerIdValue)
      def startedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(startedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.TimerFiredEventAttributes) extends TimerFiredEventAttributes.ReadOnly {
      override def timerIdValue: primitives.TimerId = impl.timerId(): primitives.TimerId
      override def startedEventIdValue: primitives.EventId = impl.startedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.TimerFiredEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class TimerStartedEventAttributes(timerId: primitives.TimerId, control: scala.Option[primitives.Data] = None, startToFireTimeout: primitives.DurationInSeconds, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.TimerStartedEventAttributes = {
      import TimerStartedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.TimerStartedEventAttributes.builder().timerId(timerId: java.lang.String).optionallyWith(control.map(value => value: java.lang.String))(_.control).startToFireTimeout(startToFireTimeout: java.lang.String).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: TimerStartedEventAttributes.ReadOnly = TimerStartedEventAttributes.wrap(buildAwsValue())
  }
  object TimerStartedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.TimerStartedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TimerStartedEventAttributes = TimerStartedEventAttributes(timerIdValue, controlValue.map(value => value), startToFireTimeoutValue, decisionTaskCompletedEventIdValue)
      def timerIdValue: primitives.TimerId
      def controlValue: scala.Option[primitives.Data]
      def startToFireTimeoutValue: primitives.DurationInSeconds
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def timerId: ZIO[Any, Nothing, primitives.TimerId] = ZIO.succeed(timerIdValue)
      def control: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("control", controlValue)
      def startToFireTimeout: ZIO[Any, Nothing, primitives.DurationInSeconds] = ZIO.succeed(startToFireTimeoutValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.TimerStartedEventAttributes) extends TimerStartedEventAttributes.ReadOnly {
      override def timerIdValue: primitives.TimerId = impl.timerId(): primitives.TimerId
      override def controlValue: scala.Option[primitives.Data] = scala.Option(impl.control()).map(value => value: primitives.Data)
      override def startToFireTimeoutValue: primitives.DurationInSeconds = impl.startToFireTimeout(): primitives.DurationInSeconds
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.TimerStartedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class UndeprecateActivityTypeRequest(domain: primitives.DomainName, activityType: ActivityType) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeRequest = {
      import UndeprecateActivityTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeRequest.builder().domain(domain: java.lang.String).activityType(activityType.buildAwsValue()).build()
    }
    def asReadOnly: UndeprecateActivityTypeRequest.ReadOnly = UndeprecateActivityTypeRequest.wrap(buildAwsValue())
  }
  object UndeprecateActivityTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UndeprecateActivityTypeRequest = UndeprecateActivityTypeRequest(domainValue, activityTypeValue.editable)
      def domainValue: primitives.DomainName
      def activityTypeValue: ActivityType.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def activityType: ZIO[Any, Nothing, ActivityType.ReadOnly] = ZIO.succeed(activityTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeRequest) extends UndeprecateActivityTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def activityTypeValue: ActivityType.ReadOnly = ActivityType.wrap(impl.activityType())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class UndeprecateDomainRequest(name: primitives.DomainName) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.UndeprecateDomainRequest = {
      import UndeprecateDomainRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.UndeprecateDomainRequest.builder().name(name: java.lang.String).build()
    }
    def asReadOnly: UndeprecateDomainRequest.ReadOnly = UndeprecateDomainRequest.wrap(buildAwsValue())
  }
  object UndeprecateDomainRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.UndeprecateDomainRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UndeprecateDomainRequest = UndeprecateDomainRequest(nameValue)
      def nameValue: primitives.DomainName
      def name: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(nameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.UndeprecateDomainRequest) extends UndeprecateDomainRequest.ReadOnly { override def nameValue: primitives.DomainName = impl.name(): primitives.DomainName }
    def wrap(impl: software.amazon.awssdk.services.swf.model.UndeprecateDomainRequest): ReadOnly = new Wrapper(impl)
  }
  case class UndeprecateWorkflowTypeRequest(domain: primitives.DomainName, workflowType: WorkflowType) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeRequest = {
      import UndeprecateWorkflowTypeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeRequest.builder().domain(domain: java.lang.String).workflowType(workflowType.buildAwsValue()).build()
    }
    def asReadOnly: UndeprecateWorkflowTypeRequest.ReadOnly = UndeprecateWorkflowTypeRequest.wrap(buildAwsValue())
  }
  object UndeprecateWorkflowTypeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UndeprecateWorkflowTypeRequest = UndeprecateWorkflowTypeRequest(domainValue, workflowTypeValue.editable)
      def domainValue: primitives.DomainName
      def workflowTypeValue: WorkflowType.ReadOnly
      def domain: ZIO[Any, Nothing, primitives.DomainName] = ZIO.succeed(domainValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeRequest) extends UndeprecateWorkflowTypeRequest.ReadOnly {
      override def domainValue: primitives.DomainName = impl.domain(): primitives.DomainName
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeRequest): ReadOnly = new Wrapper(impl)
  }
  case class UntagResourceRequest(resourceArn: primitives.Arn, tagKeys: Iterable[primitives.ResourceTagKey]) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.UntagResourceRequest = {
      import UntagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.UntagResourceRequest.builder().resourceArn(resourceArn: java.lang.String).tagKeys(tagKeys.map { item => 
        item: java.lang.String
      }.asJavaCollection).build()
    }
    def asReadOnly: UntagResourceRequest.ReadOnly = UntagResourceRequest.wrap(buildAwsValue())
  }
  object UntagResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.UntagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UntagResourceRequest = UntagResourceRequest(resourceArnValue, tagKeysValue)
      def resourceArnValue: primitives.Arn
      def tagKeysValue: List[primitives.ResourceTagKey]
      def resourceArn: ZIO[Any, Nothing, primitives.Arn] = ZIO.succeed(resourceArnValue)
      def tagKeys: ZIO[Any, Nothing, List[primitives.ResourceTagKey]] = ZIO.succeed(tagKeysValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.UntagResourceRequest) extends UntagResourceRequest.ReadOnly {
      override def resourceArnValue: primitives.Arn = impl.resourceArn(): primitives.Arn
      override def tagKeysValue: List[primitives.ResourceTagKey] = impl.tagKeys().asScala.map { item => 
        item: primitives.ResourceTagKey
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.UntagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecution(workflowId: primitives.WorkflowId, runId: primitives.WorkflowRunId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecution = {
      import WorkflowExecution.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecution.builder().workflowId(workflowId: java.lang.String).runId(runId: java.lang.String).build()
    }
    def asReadOnly: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(buildAwsValue())
  }
  object WorkflowExecution {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecution] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecution = WorkflowExecution(workflowIdValue, runIdValue)
      def workflowIdValue: primitives.WorkflowId
      def runIdValue: primitives.WorkflowRunId
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
      def runId: ZIO[Any, Nothing, primitives.WorkflowRunId] = ZIO.succeed(runIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecution) extends WorkflowExecution.ReadOnly {
      override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId
      override def runIdValue: primitives.WorkflowRunId = impl.runId(): primitives.WorkflowRunId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecution): ReadOnly = new Wrapper(impl)
  }
  sealed trait WorkflowExecutionCancelRequestedCause { def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause }
  object WorkflowExecutionCancelRequestedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause): WorkflowExecutionCancelRequestedCause = value match {
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause.CHILD_POLICY_APPLIED => CHILD_POLICY_APPLIED
    }
    final case object unknownToSdkVersion extends WorkflowExecutionCancelRequestedCause { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause = software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause.UNKNOWN_TO_SDK_VERSION }
    final case object CHILD_POLICY_APPLIED extends WorkflowExecutionCancelRequestedCause { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause = software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedCause.CHILD_POLICY_APPLIED }
  }
  case class WorkflowExecutionCancelRequestedEventAttributes(externalWorkflowExecution: scala.Option[WorkflowExecution] = None, externalInitiatedEventId: scala.Option[primitives.EventId] = None, cause: scala.Option[WorkflowExecutionCancelRequestedCause] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedEventAttributes = {
      import WorkflowExecutionCancelRequestedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedEventAttributes.builder().optionallyWith(externalWorkflowExecution.map(value => value.buildAwsValue()))(_.externalWorkflowExecution).optionallyWith(externalInitiatedEventId.map(value => value: java.lang.Long))(_.externalInitiatedEventId).optionallyWith(cause.map(value => value.unwrap))(_.cause).build()
    }
    def asReadOnly: WorkflowExecutionCancelRequestedEventAttributes.ReadOnly = WorkflowExecutionCancelRequestedEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionCancelRequestedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionCancelRequestedEventAttributes = WorkflowExecutionCancelRequestedEventAttributes(externalWorkflowExecutionValue.map(value => value.editable), externalInitiatedEventIdValue.map(value => value), causeValue.map(value => value))
      def externalWorkflowExecutionValue: scala.Option[WorkflowExecution.ReadOnly]
      def externalInitiatedEventIdValue: scala.Option[primitives.EventId]
      def causeValue: scala.Option[WorkflowExecutionCancelRequestedCause]
      def externalWorkflowExecution: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecution.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("externalWorkflowExecution", externalWorkflowExecutionValue)
      def externalInitiatedEventId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("externalInitiatedEventId", externalInitiatedEventIdValue)
      def cause: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionCancelRequestedCause] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cause", causeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedEventAttributes) extends WorkflowExecutionCancelRequestedEventAttributes.ReadOnly {
      override def externalWorkflowExecutionValue: scala.Option[WorkflowExecution.ReadOnly] = scala.Option(impl.externalWorkflowExecution()).map(value => WorkflowExecution.wrap(value))
      override def externalInitiatedEventIdValue: scala.Option[primitives.EventId] = scala.Option(impl.externalInitiatedEventId()).map(value => value: primitives.EventId)
      override def causeValue: scala.Option[WorkflowExecutionCancelRequestedCause] = scala.Option(impl.cause()).map(value => WorkflowExecutionCancelRequestedCause.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionCancelRequestedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionCanceledEventAttributes(details: scala.Option[primitives.Data] = None, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionCanceledEventAttributes = {
      import WorkflowExecutionCanceledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionCanceledEventAttributes.builder().optionallyWith(details.map(value => value: java.lang.String))(_.details).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: WorkflowExecutionCanceledEventAttributes.ReadOnly = WorkflowExecutionCanceledEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionCanceledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionCanceledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionCanceledEventAttributes = WorkflowExecutionCanceledEventAttributes(detailsValue.map(value => value), decisionTaskCompletedEventIdValue)
      def detailsValue: scala.Option[primitives.Data]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionCanceledEventAttributes) extends WorkflowExecutionCanceledEventAttributes.ReadOnly {
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionCanceledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionCompletedEventAttributes(result: scala.Option[primitives.Data] = None, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionCompletedEventAttributes = {
      import WorkflowExecutionCompletedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionCompletedEventAttributes.builder().optionallyWith(result.map(value => value: java.lang.String))(_.result).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: WorkflowExecutionCompletedEventAttributes.ReadOnly = WorkflowExecutionCompletedEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionCompletedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionCompletedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionCompletedEventAttributes = WorkflowExecutionCompletedEventAttributes(resultValue.map(value => value), decisionTaskCompletedEventIdValue)
      def resultValue: scala.Option[primitives.Data]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def result: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("result", resultValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionCompletedEventAttributes) extends WorkflowExecutionCompletedEventAttributes.ReadOnly {
      override def resultValue: scala.Option[primitives.Data] = scala.Option(impl.result()).map(value => value: primitives.Data)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionCompletedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionConfiguration(taskStartToCloseTimeout: primitives.DurationInSeconds, executionStartToCloseTimeout: primitives.DurationInSeconds, taskList: TaskList, taskPriority: scala.Option[primitives.TaskPriority] = None, childPolicy: ChildPolicy, lambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionConfiguration = {
      import WorkflowExecutionConfiguration.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionConfiguration.builder().taskStartToCloseTimeout(taskStartToCloseTimeout: java.lang.String).executionStartToCloseTimeout(executionStartToCloseTimeout: java.lang.String).taskList(taskList.buildAwsValue()).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).childPolicy(childPolicy.unwrap).optionallyWith(lambdaRole.map(value => value: java.lang.String))(_.lambdaRole).build()
    }
    def asReadOnly: WorkflowExecutionConfiguration.ReadOnly = WorkflowExecutionConfiguration.wrap(buildAwsValue())
  }
  object WorkflowExecutionConfiguration {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionConfiguration] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionConfiguration = WorkflowExecutionConfiguration(taskStartToCloseTimeoutValue, executionStartToCloseTimeoutValue, taskListValue.editable, taskPriorityValue.map(value => value), childPolicyValue, lambdaRoleValue.map(value => value))
      def taskStartToCloseTimeoutValue: primitives.DurationInSeconds
      def executionStartToCloseTimeoutValue: primitives.DurationInSeconds
      def taskListValue: TaskList.ReadOnly
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def childPolicyValue: ChildPolicy
      def lambdaRoleValue: scala.Option[primitives.Arn]
      def taskStartToCloseTimeout: ZIO[Any, Nothing, primitives.DurationInSeconds] = ZIO.succeed(taskStartToCloseTimeoutValue)
      def executionStartToCloseTimeout: ZIO[Any, Nothing, primitives.DurationInSeconds] = ZIO.succeed(executionStartToCloseTimeoutValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def childPolicy: ZIO[Any, Nothing, ChildPolicy] = ZIO.succeed(childPolicyValue)
      def lambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaRole", lambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionConfiguration) extends WorkflowExecutionConfiguration.ReadOnly {
      override def taskStartToCloseTimeoutValue: primitives.DurationInSeconds = impl.taskStartToCloseTimeout(): primitives.DurationInSeconds
      override def executionStartToCloseTimeoutValue: primitives.DurationInSeconds = impl.executionStartToCloseTimeout(): primitives.DurationInSeconds
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def childPolicyValue: ChildPolicy = ChildPolicy.wrap(impl.childPolicy())
      override def lambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.lambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionConfiguration): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionContinuedAsNewEventAttributes(input: scala.Option[primitives.Data] = None, decisionTaskCompletedEventId: primitives.EventId, newExecutionRunId: primitives.WorkflowRunId, executionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, taskList: TaskList, taskPriority: scala.Option[primitives.TaskPriority] = None, taskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, childPolicy: ChildPolicy, tagList: scala.Option[Iterable[primitives.Tag]] = None, workflowType: WorkflowType, lambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionContinuedAsNewEventAttributes = {
      import WorkflowExecutionContinuedAsNewEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionContinuedAsNewEventAttributes.builder().optionallyWith(input.map(value => value: java.lang.String))(_.input).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).newExecutionRunId(newExecutionRunId: java.lang.String).optionallyWith(executionStartToCloseTimeout.map(value => value: java.lang.String))(_.executionStartToCloseTimeout).taskList(taskList.buildAwsValue()).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).optionallyWith(taskStartToCloseTimeout.map(value => value: java.lang.String))(_.taskStartToCloseTimeout).childPolicy(childPolicy.unwrap).optionallyWith(tagList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tagList).workflowType(workflowType.buildAwsValue()).optionallyWith(lambdaRole.map(value => value: java.lang.String))(_.lambdaRole).build()
    }
    def asReadOnly: WorkflowExecutionContinuedAsNewEventAttributes.ReadOnly = WorkflowExecutionContinuedAsNewEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionContinuedAsNewEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionContinuedAsNewEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionContinuedAsNewEventAttributes = WorkflowExecutionContinuedAsNewEventAttributes(inputValue.map(value => value), decisionTaskCompletedEventIdValue, newExecutionRunIdValue, executionStartToCloseTimeoutValue.map(value => value), taskListValue.editable, taskPriorityValue.map(value => value), taskStartToCloseTimeoutValue.map(value => value), childPolicyValue, tagListValue.map(value => value), workflowTypeValue.editable, lambdaRoleValue.map(value => value))
      def inputValue: scala.Option[primitives.Data]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def newExecutionRunIdValue: primitives.WorkflowRunId
      def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskListValue: TaskList.ReadOnly
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def childPolicyValue: ChildPolicy
      def tagListValue: scala.Option[List[primitives.Tag]]
      def workflowTypeValue: WorkflowType.ReadOnly
      def lambdaRoleValue: scala.Option[primitives.Arn]
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
      def newExecutionRunId: ZIO[Any, Nothing, primitives.WorkflowRunId] = ZIO.succeed(newExecutionRunIdValue)
      def executionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionStartToCloseTimeout", executionStartToCloseTimeoutValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def taskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskStartToCloseTimeout", taskStartToCloseTimeoutValue)
      def childPolicy: ZIO[Any, Nothing, ChildPolicy] = ZIO.succeed(childPolicyValue)
      def tagList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Tag]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagList", tagListValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def lambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaRole", lambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionContinuedAsNewEventAttributes) extends WorkflowExecutionContinuedAsNewEventAttributes.ReadOnly {
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
      override def newExecutionRunIdValue: primitives.WorkflowRunId = impl.newExecutionRunId(): primitives.WorkflowRunId
      override def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.executionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.taskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def childPolicyValue: ChildPolicy = ChildPolicy.wrap(impl.childPolicy())
      override def tagListValue: scala.Option[List[primitives.Tag]] = scala.Option(impl.tagList()).map(value => value.asScala.map { item => 
        item: primitives.Tag
      }.toList)
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def lambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.lambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionContinuedAsNewEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionFailedEventAttributes(reason: scala.Option[primitives.FailureReason] = None, details: scala.Option[primitives.Data] = None, decisionTaskCompletedEventId: primitives.EventId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionFailedEventAttributes = {
      import WorkflowExecutionFailedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionFailedEventAttributes.builder().optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).decisionTaskCompletedEventId(decisionTaskCompletedEventId: java.lang.Long).build()
    }
    def asReadOnly: WorkflowExecutionFailedEventAttributes.ReadOnly = WorkflowExecutionFailedEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionFailedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionFailedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionFailedEventAttributes = WorkflowExecutionFailedEventAttributes(reasonValue.map(value => value), detailsValue.map(value => value), decisionTaskCompletedEventIdValue)
      def reasonValue: scala.Option[primitives.FailureReason]
      def detailsValue: scala.Option[primitives.Data]
      def decisionTaskCompletedEventIdValue: primitives.EventId
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FailureReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def decisionTaskCompletedEventId: ZIO[Any, Nothing, primitives.EventId] = ZIO.succeed(decisionTaskCompletedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionFailedEventAttributes) extends WorkflowExecutionFailedEventAttributes.ReadOnly {
      override def reasonValue: scala.Option[primitives.FailureReason] = scala.Option(impl.reason()).map(value => value: primitives.FailureReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def decisionTaskCompletedEventIdValue: primitives.EventId = impl.decisionTaskCompletedEventId(): primitives.EventId
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionFailedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionFilter(workflowId: primitives.WorkflowId) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionFilter = {
      import WorkflowExecutionFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionFilter.builder().workflowId(workflowId: java.lang.String).build()
    }
    def asReadOnly: WorkflowExecutionFilter.ReadOnly = WorkflowExecutionFilter.wrap(buildAwsValue())
  }
  object WorkflowExecutionFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionFilter = WorkflowExecutionFilter(workflowIdValue)
      def workflowIdValue: primitives.WorkflowId
      def workflowId: ZIO[Any, Nothing, primitives.WorkflowId] = ZIO.succeed(workflowIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionFilter) extends WorkflowExecutionFilter.ReadOnly { override def workflowIdValue: primitives.WorkflowId = impl.workflowId(): primitives.WorkflowId }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionFilter): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionInfo(execution: WorkflowExecution, workflowType: WorkflowType, startTimestamp: primitives.Timestamp, closeTimestamp: scala.Option[primitives.Timestamp] = None, executionStatus: ExecutionStatus, closeStatus: scala.Option[CloseStatus] = None, parent: scala.Option[WorkflowExecution] = None, tagList: scala.Option[Iterable[primitives.Tag]] = None, cancelRequested: scala.Option[primitives.Canceled] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo = {
      import WorkflowExecutionInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo.builder().execution(execution.buildAwsValue()).workflowType(workflowType.buildAwsValue()).startTimestamp(startTimestamp: java.time.Instant).optionallyWith(closeTimestamp.map(value => value: java.time.Instant))(_.closeTimestamp).executionStatus(executionStatus.unwrap).optionallyWith(closeStatus.map(value => value.unwrap))(_.closeStatus).optionallyWith(parent.map(value => value.buildAwsValue()))(_.parent).optionallyWith(tagList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tagList).optionallyWith(cancelRequested.map(value => value: java.lang.Boolean))(_.cancelRequested).build()
    }
    def asReadOnly: WorkflowExecutionInfo.ReadOnly = WorkflowExecutionInfo.wrap(buildAwsValue())
  }
  object WorkflowExecutionInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionInfo = WorkflowExecutionInfo(executionValue.editable, workflowTypeValue.editable, startTimestampValue, closeTimestampValue.map(value => value), executionStatusValue, closeStatusValue.map(value => value), parentValue.map(value => value.editable), tagListValue.map(value => value), cancelRequestedValue.map(value => value))
      def executionValue: WorkflowExecution.ReadOnly
      def workflowTypeValue: WorkflowType.ReadOnly
      def startTimestampValue: primitives.Timestamp
      def closeTimestampValue: scala.Option[primitives.Timestamp]
      def executionStatusValue: ExecutionStatus
      def closeStatusValue: scala.Option[CloseStatus]
      def parentValue: scala.Option[WorkflowExecution.ReadOnly]
      def tagListValue: scala.Option[List[primitives.Tag]]
      def cancelRequestedValue: scala.Option[primitives.Canceled]
      def execution: ZIO[Any, Nothing, WorkflowExecution.ReadOnly] = ZIO.succeed(executionValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def startTimestamp: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(startTimestampValue)
      def closeTimestamp: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Timestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("closeTimestamp", closeTimestampValue)
      def executionStatus: ZIO[Any, Nothing, ExecutionStatus] = ZIO.succeed(executionStatusValue)
      def closeStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, CloseStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("closeStatus", closeStatusValue)
      def parent: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecution.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parent", parentValue)
      def tagList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Tag]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagList", tagListValue)
      def cancelRequested: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Canceled] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cancelRequested", cancelRequestedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo) extends WorkflowExecutionInfo.ReadOnly {
      override def executionValue: WorkflowExecution.ReadOnly = WorkflowExecution.wrap(impl.execution())
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def startTimestampValue: primitives.Timestamp = impl.startTimestamp(): primitives.Timestamp
      override def closeTimestampValue: scala.Option[primitives.Timestamp] = scala.Option(impl.closeTimestamp()).map(value => value: primitives.Timestamp)
      override def executionStatusValue: ExecutionStatus = ExecutionStatus.wrap(impl.executionStatus())
      override def closeStatusValue: scala.Option[CloseStatus] = scala.Option(impl.closeStatus()).map(value => CloseStatus.wrap(value))
      override def parentValue: scala.Option[WorkflowExecution.ReadOnly] = scala.Option(impl.parent()).map(value => WorkflowExecution.wrap(value))
      override def tagListValue: scala.Option[List[primitives.Tag]] = scala.Option(impl.tagList()).map(value => value.asScala.map { item => 
        item: primitives.Tag
      }.toList)
      override def cancelRequestedValue: scala.Option[primitives.Canceled] = scala.Option(impl.cancelRequested()).map(value => value: primitives.Canceled)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo): ReadOnly = new Wrapper(impl)
  }
  type WorkflowExecutionInfoList = List[WorkflowExecutionInfo]
  case class WorkflowExecutionOpenCounts(openActivityTasks: primitives.Count, openDecisionTasks: primitives.OpenDecisionTasksCount, openTimers: primitives.Count, openChildWorkflowExecutions: primitives.Count, openLambdaFunctions: scala.Option[primitives.Count] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionOpenCounts = {
      import WorkflowExecutionOpenCounts.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionOpenCounts.builder().openActivityTasks(openActivityTasks: java.lang.Integer).openDecisionTasks(openDecisionTasks: java.lang.Integer).openTimers(openTimers: java.lang.Integer).openChildWorkflowExecutions(openChildWorkflowExecutions: java.lang.Integer).optionallyWith(openLambdaFunctions.map(value => value: java.lang.Integer))(_.openLambdaFunctions).build()
    }
    def asReadOnly: WorkflowExecutionOpenCounts.ReadOnly = WorkflowExecutionOpenCounts.wrap(buildAwsValue())
  }
  object WorkflowExecutionOpenCounts {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionOpenCounts] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionOpenCounts = WorkflowExecutionOpenCounts(openActivityTasksValue, openDecisionTasksValue, openTimersValue, openChildWorkflowExecutionsValue, openLambdaFunctionsValue.map(value => value))
      def openActivityTasksValue: primitives.Count
      def openDecisionTasksValue: primitives.OpenDecisionTasksCount
      def openTimersValue: primitives.Count
      def openChildWorkflowExecutionsValue: primitives.Count
      def openLambdaFunctionsValue: scala.Option[primitives.Count]
      def openActivityTasks: ZIO[Any, Nothing, primitives.Count] = ZIO.succeed(openActivityTasksValue)
      def openDecisionTasks: ZIO[Any, Nothing, primitives.OpenDecisionTasksCount] = ZIO.succeed(openDecisionTasksValue)
      def openTimers: ZIO[Any, Nothing, primitives.Count] = ZIO.succeed(openTimersValue)
      def openChildWorkflowExecutions: ZIO[Any, Nothing, primitives.Count] = ZIO.succeed(openChildWorkflowExecutionsValue)
      def openLambdaFunctions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Count] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("openLambdaFunctions", openLambdaFunctionsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionOpenCounts) extends WorkflowExecutionOpenCounts.ReadOnly {
      override def openActivityTasksValue: primitives.Count = impl.openActivityTasks(): primitives.Count
      override def openDecisionTasksValue: primitives.OpenDecisionTasksCount = impl.openDecisionTasks(): primitives.OpenDecisionTasksCount
      override def openTimersValue: primitives.Count = impl.openTimers(): primitives.Count
      override def openChildWorkflowExecutionsValue: primitives.Count = impl.openChildWorkflowExecutions(): primitives.Count
      override def openLambdaFunctionsValue: scala.Option[primitives.Count] = scala.Option(impl.openLambdaFunctions()).map(value => value: primitives.Count)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionOpenCounts): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionSignaledEventAttributes(signalName: primitives.SignalName, input: scala.Option[primitives.Data] = None, externalWorkflowExecution: scala.Option[WorkflowExecution] = None, externalInitiatedEventId: scala.Option[primitives.EventId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionSignaledEventAttributes = {
      import WorkflowExecutionSignaledEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionSignaledEventAttributes.builder().signalName(signalName: java.lang.String).optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(externalWorkflowExecution.map(value => value.buildAwsValue()))(_.externalWorkflowExecution).optionallyWith(externalInitiatedEventId.map(value => value: java.lang.Long))(_.externalInitiatedEventId).build()
    }
    def asReadOnly: WorkflowExecutionSignaledEventAttributes.ReadOnly = WorkflowExecutionSignaledEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionSignaledEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionSignaledEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionSignaledEventAttributes = WorkflowExecutionSignaledEventAttributes(signalNameValue, inputValue.map(value => value), externalWorkflowExecutionValue.map(value => value.editable), externalInitiatedEventIdValue.map(value => value))
      def signalNameValue: primitives.SignalName
      def inputValue: scala.Option[primitives.Data]
      def externalWorkflowExecutionValue: scala.Option[WorkflowExecution.ReadOnly]
      def externalInitiatedEventIdValue: scala.Option[primitives.EventId]
      def signalName: ZIO[Any, Nothing, primitives.SignalName] = ZIO.succeed(signalNameValue)
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def externalWorkflowExecution: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecution.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("externalWorkflowExecution", externalWorkflowExecutionValue)
      def externalInitiatedEventId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("externalInitiatedEventId", externalInitiatedEventIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionSignaledEventAttributes) extends WorkflowExecutionSignaledEventAttributes.ReadOnly {
      override def signalNameValue: primitives.SignalName = impl.signalName(): primitives.SignalName
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def externalWorkflowExecutionValue: scala.Option[WorkflowExecution.ReadOnly] = scala.Option(impl.externalWorkflowExecution()).map(value => WorkflowExecution.wrap(value))
      override def externalInitiatedEventIdValue: scala.Option[primitives.EventId] = scala.Option(impl.externalInitiatedEventId()).map(value => value: primitives.EventId)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionSignaledEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionStartedEventAttributes(input: scala.Option[primitives.Data] = None, executionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, taskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, childPolicy: ChildPolicy, taskList: TaskList, taskPriority: scala.Option[primitives.TaskPriority] = None, workflowType: WorkflowType, tagList: scala.Option[Iterable[primitives.Tag]] = None, continuedExecutionRunId: scala.Option[primitives.WorkflowRunIdOptional] = None, parentWorkflowExecution: scala.Option[WorkflowExecution] = None, parentInitiatedEventId: scala.Option[primitives.EventId] = None, lambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionStartedEventAttributes = {
      import WorkflowExecutionStartedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionStartedEventAttributes.builder().optionallyWith(input.map(value => value: java.lang.String))(_.input).optionallyWith(executionStartToCloseTimeout.map(value => value: java.lang.String))(_.executionStartToCloseTimeout).optionallyWith(taskStartToCloseTimeout.map(value => value: java.lang.String))(_.taskStartToCloseTimeout).childPolicy(childPolicy.unwrap).taskList(taskList.buildAwsValue()).optionallyWith(taskPriority.map(value => value: java.lang.String))(_.taskPriority).workflowType(workflowType.buildAwsValue()).optionallyWith(tagList.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.tagList).optionallyWith(continuedExecutionRunId.map(value => value: java.lang.String))(_.continuedExecutionRunId).optionallyWith(parentWorkflowExecution.map(value => value.buildAwsValue()))(_.parentWorkflowExecution).optionallyWith(parentInitiatedEventId.map(value => value: java.lang.Long))(_.parentInitiatedEventId).optionallyWith(lambdaRole.map(value => value: java.lang.String))(_.lambdaRole).build()
    }
    def asReadOnly: WorkflowExecutionStartedEventAttributes.ReadOnly = WorkflowExecutionStartedEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionStartedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionStartedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionStartedEventAttributes = WorkflowExecutionStartedEventAttributes(inputValue.map(value => value), executionStartToCloseTimeoutValue.map(value => value), taskStartToCloseTimeoutValue.map(value => value), childPolicyValue, taskListValue.editable, taskPriorityValue.map(value => value), workflowTypeValue.editable, tagListValue.map(value => value), continuedExecutionRunIdValue.map(value => value), parentWorkflowExecutionValue.map(value => value.editable), parentInitiatedEventIdValue.map(value => value), lambdaRoleValue.map(value => value))
      def inputValue: scala.Option[primitives.Data]
      def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def childPolicyValue: ChildPolicy
      def taskListValue: TaskList.ReadOnly
      def taskPriorityValue: scala.Option[primitives.TaskPriority]
      def workflowTypeValue: WorkflowType.ReadOnly
      def tagListValue: scala.Option[List[primitives.Tag]]
      def continuedExecutionRunIdValue: scala.Option[primitives.WorkflowRunIdOptional]
      def parentWorkflowExecutionValue: scala.Option[WorkflowExecution.ReadOnly]
      def parentInitiatedEventIdValue: scala.Option[primitives.EventId]
      def lambdaRoleValue: scala.Option[primitives.Arn]
      def input: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("input", inputValue)
      def executionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionStartToCloseTimeout", executionStartToCloseTimeoutValue)
      def taskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskStartToCloseTimeout", taskStartToCloseTimeoutValue)
      def childPolicy: ZIO[Any, Nothing, ChildPolicy] = ZIO.succeed(childPolicyValue)
      def taskList: ZIO[Any, Nothing, TaskList.ReadOnly] = ZIO.succeed(taskListValue)
      def taskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskPriority", taskPriorityValue)
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def tagList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Tag]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tagList", tagListValue)
      def continuedExecutionRunId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.WorkflowRunIdOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("continuedExecutionRunId", continuedExecutionRunIdValue)
      def parentWorkflowExecution: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecution.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parentWorkflowExecution", parentWorkflowExecutionValue)
      def parentInitiatedEventId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parentInitiatedEventId", parentInitiatedEventIdValue)
      def lambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lambdaRole", lambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionStartedEventAttributes) extends WorkflowExecutionStartedEventAttributes.ReadOnly {
      override def inputValue: scala.Option[primitives.Data] = scala.Option(impl.input()).map(value => value: primitives.Data)
      override def executionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.executionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def taskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.taskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def childPolicyValue: ChildPolicy = ChildPolicy.wrap(impl.childPolicy())
      override def taskListValue: TaskList.ReadOnly = TaskList.wrap(impl.taskList())
      override def taskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.taskPriority()).map(value => value: primitives.TaskPriority)
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def tagListValue: scala.Option[List[primitives.Tag]] = scala.Option(impl.tagList()).map(value => value.asScala.map { item => 
        item: primitives.Tag
      }.toList)
      override def continuedExecutionRunIdValue: scala.Option[primitives.WorkflowRunIdOptional] = scala.Option(impl.continuedExecutionRunId()).map(value => value: primitives.WorkflowRunIdOptional)
      override def parentWorkflowExecutionValue: scala.Option[WorkflowExecution.ReadOnly] = scala.Option(impl.parentWorkflowExecution()).map(value => WorkflowExecution.wrap(value))
      override def parentInitiatedEventIdValue: scala.Option[primitives.EventId] = scala.Option(impl.parentInitiatedEventId()).map(value => value: primitives.EventId)
      override def lambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.lambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionStartedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait WorkflowExecutionTerminatedCause { def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause }
  object WorkflowExecutionTerminatedCause {
    def wrap(value: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause): WorkflowExecutionTerminatedCause = value match {
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.CHILD_POLICY_APPLIED => CHILD_POLICY_APPLIED
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.EVENT_LIMIT_EXCEEDED => EVENT_LIMIT_EXCEEDED
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.OPERATOR_INITIATED => OPERATOR_INITIATED
    }
    final case object unknownToSdkVersion extends WorkflowExecutionTerminatedCause { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause = software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.UNKNOWN_TO_SDK_VERSION }
    final case object CHILD_POLICY_APPLIED extends WorkflowExecutionTerminatedCause { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause = software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.CHILD_POLICY_APPLIED }
    final case object EVENT_LIMIT_EXCEEDED extends WorkflowExecutionTerminatedCause { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause = software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.EVENT_LIMIT_EXCEEDED }
    final case object OPERATOR_INITIATED extends WorkflowExecutionTerminatedCause { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause = software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedCause.OPERATOR_INITIATED }
  }
  case class WorkflowExecutionTerminatedEventAttributes(reason: scala.Option[primitives.TerminateReason] = None, details: scala.Option[primitives.Data] = None, childPolicy: ChildPolicy, cause: scala.Option[WorkflowExecutionTerminatedCause] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedEventAttributes = {
      import WorkflowExecutionTerminatedEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedEventAttributes.builder().optionallyWith(reason.map(value => value: java.lang.String))(_.reason).optionallyWith(details.map(value => value: java.lang.String))(_.details).childPolicy(childPolicy.unwrap).optionallyWith(cause.map(value => value.unwrap))(_.cause).build()
    }
    def asReadOnly: WorkflowExecutionTerminatedEventAttributes.ReadOnly = WorkflowExecutionTerminatedEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionTerminatedEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionTerminatedEventAttributes = WorkflowExecutionTerminatedEventAttributes(reasonValue.map(value => value), detailsValue.map(value => value), childPolicyValue, causeValue.map(value => value))
      def reasonValue: scala.Option[primitives.TerminateReason]
      def detailsValue: scala.Option[primitives.Data]
      def childPolicyValue: ChildPolicy
      def causeValue: scala.Option[WorkflowExecutionTerminatedCause]
      def reason: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TerminateReason] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("reason", reasonValue)
      def details: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Data] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("details", detailsValue)
      def childPolicy: ZIO[Any, Nothing, ChildPolicy] = ZIO.succeed(childPolicyValue)
      def cause: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WorkflowExecutionTerminatedCause] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("cause", causeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedEventAttributes) extends WorkflowExecutionTerminatedEventAttributes.ReadOnly {
      override def reasonValue: scala.Option[primitives.TerminateReason] = scala.Option(impl.reason()).map(value => value: primitives.TerminateReason)
      override def detailsValue: scala.Option[primitives.Data] = scala.Option(impl.details()).map(value => value: primitives.Data)
      override def childPolicyValue: ChildPolicy = ChildPolicy.wrap(impl.childPolicy())
      override def causeValue: scala.Option[WorkflowExecutionTerminatedCause] = scala.Option(impl.cause()).map(value => WorkflowExecutionTerminatedCause.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionTerminatedEventAttributes): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowExecutionTimedOutEventAttributes(timeoutType: WorkflowExecutionTimeoutType, childPolicy: ChildPolicy) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowExecutionTimedOutEventAttributes = {
      import WorkflowExecutionTimedOutEventAttributes.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowExecutionTimedOutEventAttributes.builder().timeoutType(timeoutType.unwrap).childPolicy(childPolicy.unwrap).build()
    }
    def asReadOnly: WorkflowExecutionTimedOutEventAttributes.ReadOnly = WorkflowExecutionTimedOutEventAttributes.wrap(buildAwsValue())
  }
  object WorkflowExecutionTimedOutEventAttributes {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowExecutionTimedOutEventAttributes] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowExecutionTimedOutEventAttributes = WorkflowExecutionTimedOutEventAttributes(timeoutTypeValue, childPolicyValue)
      def timeoutTypeValue: WorkflowExecutionTimeoutType
      def childPolicyValue: ChildPolicy
      def timeoutType: ZIO[Any, Nothing, WorkflowExecutionTimeoutType] = ZIO.succeed(timeoutTypeValue)
      def childPolicy: ZIO[Any, Nothing, ChildPolicy] = ZIO.succeed(childPolicyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionTimedOutEventAttributes) extends WorkflowExecutionTimedOutEventAttributes.ReadOnly {
      override def timeoutTypeValue: WorkflowExecutionTimeoutType = WorkflowExecutionTimeoutType.wrap(impl.timeoutType())
      override def childPolicyValue: ChildPolicy = ChildPolicy.wrap(impl.childPolicy())
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionTimedOutEventAttributes): ReadOnly = new Wrapper(impl)
  }
  sealed trait WorkflowExecutionTimeoutType { def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType }
  object WorkflowExecutionTimeoutType {
    def wrap(value: software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType): WorkflowExecutionTimeoutType = value match {
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType.START_TO_CLOSE => START_TO_CLOSE
    }
    final case object unknownToSdkVersion extends WorkflowExecutionTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType = software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType.UNKNOWN_TO_SDK_VERSION }
    final case object START_TO_CLOSE extends WorkflowExecutionTimeoutType { override def unwrap: software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType = software.amazon.awssdk.services.swf.model.WorkflowExecutionTimeoutType.START_TO_CLOSE }
  }
  case class WorkflowType(name: primitives.Name, version: primitives.Version) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowType = {
      import WorkflowType.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowType.builder().name(name: java.lang.String).version(version: java.lang.String).build()
    }
    def asReadOnly: WorkflowType.ReadOnly = WorkflowType.wrap(buildAwsValue())
  }
  object WorkflowType {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowType] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowType = WorkflowType(nameValue, versionValue)
      def nameValue: primitives.Name
      def versionValue: primitives.Version
      def name: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(nameValue)
      def version: ZIO[Any, Nothing, primitives.Version] = ZIO.succeed(versionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowType) extends WorkflowType.ReadOnly {
      override def nameValue: primitives.Name = impl.name(): primitives.Name
      override def versionValue: primitives.Version = impl.version(): primitives.Version
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowType): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowTypeConfiguration(defaultTaskStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultExecutionStartToCloseTimeout: scala.Option[primitives.DurationInSecondsOptional] = None, defaultTaskList: scala.Option[TaskList] = None, defaultTaskPriority: scala.Option[primitives.TaskPriority] = None, defaultChildPolicy: scala.Option[ChildPolicy] = None, defaultLambdaRole: scala.Option[primitives.Arn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowTypeConfiguration = {
      import WorkflowTypeConfiguration.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowTypeConfiguration.builder().optionallyWith(defaultTaskStartToCloseTimeout.map(value => value: java.lang.String))(_.defaultTaskStartToCloseTimeout).optionallyWith(defaultExecutionStartToCloseTimeout.map(value => value: java.lang.String))(_.defaultExecutionStartToCloseTimeout).optionallyWith(defaultTaskList.map(value => value.buildAwsValue()))(_.defaultTaskList).optionallyWith(defaultTaskPriority.map(value => value: java.lang.String))(_.defaultTaskPriority).optionallyWith(defaultChildPolicy.map(value => value.unwrap))(_.defaultChildPolicy).optionallyWith(defaultLambdaRole.map(value => value: java.lang.String))(_.defaultLambdaRole).build()
    }
    def asReadOnly: WorkflowTypeConfiguration.ReadOnly = WorkflowTypeConfiguration.wrap(buildAwsValue())
  }
  object WorkflowTypeConfiguration {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowTypeConfiguration] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowTypeConfiguration = WorkflowTypeConfiguration(defaultTaskStartToCloseTimeoutValue.map(value => value), defaultExecutionStartToCloseTimeoutValue.map(value => value), defaultTaskListValue.map(value => value.editable), defaultTaskPriorityValue.map(value => value), defaultChildPolicyValue.map(value => value), defaultLambdaRoleValue.map(value => value))
      def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultExecutionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional]
      def defaultTaskListValue: scala.Option[TaskList.ReadOnly]
      def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority]
      def defaultChildPolicyValue: scala.Option[ChildPolicy]
      def defaultLambdaRoleValue: scala.Option[primitives.Arn]
      def defaultTaskStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskStartToCloseTimeout", defaultTaskStartToCloseTimeoutValue)
      def defaultExecutionStartToCloseTimeout: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DurationInSecondsOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultExecutionStartToCloseTimeout", defaultExecutionStartToCloseTimeoutValue)
      def defaultTaskList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TaskList.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskList", defaultTaskListValue)
      def defaultTaskPriority: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TaskPriority] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultTaskPriority", defaultTaskPriorityValue)
      def defaultChildPolicy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ChildPolicy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultChildPolicy", defaultChildPolicyValue)
      def defaultLambdaRole: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Arn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("defaultLambdaRole", defaultLambdaRoleValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowTypeConfiguration) extends WorkflowTypeConfiguration.ReadOnly {
      override def defaultTaskStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultTaskStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultExecutionStartToCloseTimeoutValue: scala.Option[primitives.DurationInSecondsOptional] = scala.Option(impl.defaultExecutionStartToCloseTimeout()).map(value => value: primitives.DurationInSecondsOptional)
      override def defaultTaskListValue: scala.Option[TaskList.ReadOnly] = scala.Option(impl.defaultTaskList()).map(value => TaskList.wrap(value))
      override def defaultTaskPriorityValue: scala.Option[primitives.TaskPriority] = scala.Option(impl.defaultTaskPriority()).map(value => value: primitives.TaskPriority)
      override def defaultChildPolicyValue: scala.Option[ChildPolicy] = scala.Option(impl.defaultChildPolicy()).map(value => ChildPolicy.wrap(value))
      override def defaultLambdaRoleValue: scala.Option[primitives.Arn] = scala.Option(impl.defaultLambdaRole()).map(value => value: primitives.Arn)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowTypeConfiguration): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowTypeFilter(name: primitives.Name, version: scala.Option[primitives.VersionOptional] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowTypeFilter = {
      import WorkflowTypeFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowTypeFilter.builder().name(name: java.lang.String).optionallyWith(version.map(value => value: java.lang.String))(_.version).build()
    }
    def asReadOnly: WorkflowTypeFilter.ReadOnly = WorkflowTypeFilter.wrap(buildAwsValue())
  }
  object WorkflowTypeFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowTypeFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowTypeFilter = WorkflowTypeFilter(nameValue, versionValue.map(value => value))
      def nameValue: primitives.Name
      def versionValue: scala.Option[primitives.VersionOptional]
      def name: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(nameValue)
      def version: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.VersionOptional] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("version", versionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowTypeFilter) extends WorkflowTypeFilter.ReadOnly {
      override def nameValue: primitives.Name = impl.name(): primitives.Name
      override def versionValue: scala.Option[primitives.VersionOptional] = scala.Option(impl.version()).map(value => value: primitives.VersionOptional)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowTypeFilter): ReadOnly = new Wrapper(impl)
  }
  case class WorkflowTypeInfo(workflowType: WorkflowType, status: RegistrationStatus, description: scala.Option[primitives.Description] = None, creationDate: primitives.Timestamp, deprecationDate: scala.Option[primitives.Timestamp] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.swf.model.WorkflowTypeInfo = {
      import WorkflowTypeInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.swf.model.WorkflowTypeInfo.builder().workflowType(workflowType.buildAwsValue()).status(status.unwrap).optionallyWith(description.map(value => value: java.lang.String))(_.description).creationDate(creationDate: java.time.Instant).optionallyWith(deprecationDate.map(value => value: java.time.Instant))(_.deprecationDate).build()
    }
    def asReadOnly: WorkflowTypeInfo.ReadOnly = WorkflowTypeInfo.wrap(buildAwsValue())
  }
  object WorkflowTypeInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.swf.model.WorkflowTypeInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: WorkflowTypeInfo = WorkflowTypeInfo(workflowTypeValue.editable, statusValue, descriptionValue.map(value => value), creationDateValue, deprecationDateValue.map(value => value))
      def workflowTypeValue: WorkflowType.ReadOnly
      def statusValue: RegistrationStatus
      def descriptionValue: scala.Option[primitives.Description]
      def creationDateValue: primitives.Timestamp
      def deprecationDateValue: scala.Option[primitives.Timestamp]
      def workflowType: ZIO[Any, Nothing, WorkflowType.ReadOnly] = ZIO.succeed(workflowTypeValue)
      def status: ZIO[Any, Nothing, RegistrationStatus] = ZIO.succeed(statusValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Description] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def creationDate: ZIO[Any, Nothing, primitives.Timestamp] = ZIO.succeed(creationDateValue)
      def deprecationDate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Timestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("deprecationDate", deprecationDateValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.swf.model.WorkflowTypeInfo) extends WorkflowTypeInfo.ReadOnly {
      override def workflowTypeValue: WorkflowType.ReadOnly = WorkflowType.wrap(impl.workflowType())
      override def statusValue: RegistrationStatus = RegistrationStatus.wrap(impl.status())
      override def descriptionValue: scala.Option[primitives.Description] = scala.Option(impl.description()).map(value => value: primitives.Description)
      override def creationDateValue: primitives.Timestamp = impl.creationDate(): primitives.Timestamp
      override def deprecationDateValue: scala.Option[primitives.Timestamp] = scala.Option(impl.deprecationDate()).map(value => value: primitives.Timestamp)
    }
    def wrap(impl: software.amazon.awssdk.services.swf.model.WorkflowTypeInfo): ReadOnly = new Wrapper(impl)
  }
  type WorkflowTypeInfoList = List[WorkflowTypeInfo]
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy