Creating an exporter: UV's and shading issues

Howdy guys, I’m currently writing an exporter and have hit a few snags.

When working with UV’s, it is possible to give a single vertex two UV co-ordinates.
And when an object is flat shaded, it is possible for a single vertex to have more than one normal.

Currently my export script works with a bmesh object (so I can apply modifiers and triangulate it), and I’d now like to split vertices and edges based on their shading type and their UV locations. (Ie split it so that a single vertex has a single normal and a single UV co-ord)
Are there any established ways of doing this already? If not, any advice?