Interfaces
The public interfaces live in the package root namespace, not in a Contracts
bucket.
Why root-level interfaces?
This package keeps its public contracts shallow on purpose. The goal is to make discovery easy for package users and avoid namespace chains that add structure without adding real meaning.
Interfaces
LabeledEnumInterfaceDescribedEnumInterfaceReversibleInterface
This keeps the public API shallow and discoverable.
When to use them
LabeledEnumInterface
Use this when enum cases need explicit presentation labels and you want
EnumHelper::labels()
or EnumHelper::labelMap()
to work.
DescribedEnumInterface
Use this when enum cases need longer human-readable descriptions.
ReversibleInterface
Use this for enums that have a meaningful inverse, such as sort directions or case-sensitivity flags.