The incoming message flow is well documented in OpenMLS:
https://book.openmls.tech/user_manual/processing.html
But going through the tests and mls header files (messages.h, session.h, and state.h) I haven't been able to find the equivalent of OpenMLS's deserialize, extract, or process methods.
What is the correct mlspp process for determining an incoming message's type (application/public/private)?