Use JSON enum to help with type inference

This branch is suppose to speed up compile time by using an `enum` to describe the JSON.
Is this type alias still valuable given how rarely it's used?