Accessing Move function return values through an SDK

I have a Move function that returns the ID of a shared object the user will need to query for. However, tx.moveCall is not correctly returning this ID that I am expecting. From the examples online, I know that you can transfer objects that are returned by tx.moveCall, but are there any guidelines for handling return types like an ID or u64?

These return values also do not show up in the TransactionOutput that’s parsed in the onSuccess handler of executing a transaction, but events are included, so I was thinking about getting around this by emitting an event containing the return value(s). Is there a less hacky way to access these return values?