It's not clear to me how this typedef is expected to be used.

I'm generally averse to block typedefs (because they obfuscate the types involved in methods and properties), so I'm not convinced we need one. But, if you're confident that we do, this at least needs much more thorough documentation.