Enums, Traits, Interfaces and inherit abstraction

Heyho,
so, I got the following Problem:

I have a couple of Enums, that need to implement some functions. I can abstract those functions to the point, where every Enum has the same set of functions.
Now I don’t want to copy/past the same functions all the time (seems like I need a trait).

But I’d also like to Typehint, that those functions are available within a value, without typehinting the exact Enum (looks like I need an Interface).

I’d also like to avoid the need to give every enum the same trait AND the same interface (that seems like I am looking for an abstract parent)….

well… but enums can’t inherit… But how can I still get something like this? (I’d also like to use real enums, and not a class with multiple const)

Sooo, How do I phrase it…. Help please? 😀