Yeah the protobuf alternative wasn’t that fun to work with in my opinion either.
But you can definitely use the one that simply works as a key-value store, and if you want the type-safety, add a layer in-between where you send your stuff in as kotlinx.Serialization capable objects, and then store everything in the datastore as strings.
It’s quite nice that way, since you get the type-safety, while also getting a good kotlin-friendly API that works on top of flows/suspending functions for everything.