class UserType:
    """
    Enterprise-level user type registry.

    - DB stores raw string
    - No migrations needed for new roles
    - Central place for permissions & logic
    """

    USER = "user"
    ADMIN = "admin"
    SUPER_ADMIN = "super_admin"

    # ---- Optional future roles ----
    # SUPPORT = "support"
    # MANAGER = "manager"
    # PARTNER = "partner"

    @classmethod
    def choices(cls):
        """
        Optional: for admin/forms only
        """
        return (
            (cls.USER, "User"),
            (cls.ADMIN, "Admin"),
            (cls.SUPER_ADMIN, "Super Admin"),
        )

    @classmethod
    def values(cls):
        return {cls.USER, cls.ADMIN, cls.SUPER_ADMIN}

    @classmethod
    def is_valid(cls, value: str) -> bool:
        return value in cls.values()
