object Tasks {
sealed trait Minor {
def period: Duration
}
sealed trait Major
sealed trait Task {
def majorParams: Major
def minorParams: Minor
}
case class CheckInventory(majorParams: CheckInventoryMajor, minorParams: CheckInventoryMinor) extends Task
case class CheckInventoryMinor(period: Duration) extends Minor
case class CheckInventoryMajor(user: User) extends Major
}