I'm trying to implement something like
object Claims {
import shapeless._
import shapeless.labelled.FieldType
import io.circe._
import io.circe.generic.semiauto._
import java.util.UUID
type ClaimOf[V] = FieldOf[V]
object iss extends ClaimOf[String]
object subj extends ClaimOf[String]
object aud extends ClaimOf[Set[String]]
object client_id extends ClaimOf[UUID]
implicit val encoder =
deriveEncoder[FieldType[iss.type, String] :: FieldType[subj.type, String] :: HNil]
}
It does not compiles with an error
error: could not find implicit value for parameter encode: shapeless.Lazy[io.circe.generic.encoding.DerivedObjectEncoder[shapeless.::[shapeless.labelled.FieldType[Claims.iss.type,String],shapeless.::[shapeless.labelled.FieldType[Claims.subj.type,String],shapeless.HNil]]]]
deriveEncoder[FieldType[iss.type, String] :: FieldType[subj.type, String] :: HNil]