I suggest a slightly different solution: add a global minor mode, say
'ts-modes'. Users would only have to add (ts-modes 1) in their init
files, and the logic would be:
(treesit-available-p) ts-modes
nil nil => do nothing
nil t => warning
t nil => use available tree-sitter modes
t t => use available tree-sitter modes
This seems more future-proof: otherwise users who want to user the
available tree-sitter modes would have to require all such modes. ATM
there are only 19, but Emacs 30 could very well have twice or thrice
that number of tree-sitter modes.