app/models/Amounts.scala (46 lines of code) (raw):

package models import io.circe.generic.extras.Configuration import io.circe.{Decoder, Encoder} import models.{Region => RegionEnum} case class AmountValuesObject( amounts: List[Int], defaultAmount: Int, hideChooseYourAmount: Boolean, ) case class AmountsCardData( ONE_OFF: AmountValuesObject, MONTHLY: AmountValuesObject, ANNUAL: AmountValuesObject, ) case class AmountsVariant( variantName: String, defaultContributionType: String, displayContributionType: List[String], amountsCardData: AmountsCardData, ) sealed trait AmountsTestTargeting object AmountsTestTargeting { case class Region(targetingType: String = "Region", region: RegionEnum) extends AmountsTestTargeting case class Country(targetingType: String = "Country", countries: List[String]) extends AmountsTestTargeting import io.circe.generic.extras.auto._ implicit val customConfig: Configuration = Configuration.default.withDiscriminator("targetingType") implicit val amountsTestTargetingDecoder = Decoder[AmountsTestTargeting] implicit val amountsTestTargetingEncoder = Encoder[AmountsTestTargeting] } case class AmountsTest( testName: String, liveTestName: Option[String], testLabel: Option[String], isLive: Boolean, targeting: AmountsTestTargeting, order: Int, seed: Int, variants: List[AmountsVariant], ) object AmountsTests { import io.circe.generic.extras.auto._ type AmountsTests = List[AmountsTest] implicit val customConfig: Configuration = Configuration.default.withDefaults implicit val decoder = Decoder[AmountsTests] implicit val encoder = Encoder[AmountsTests] }