V2

What's the problem of including LibBsonAPI here? Is not this unit actually intended to provide a wrapper for C BSON objects ?

To avoid duplicate in Delphi, typically what you do is more the type declarations to a separate unit only dealing with this declarations and then declare that unit in the uses clause of your other two units that contain the duplicate code