Data structures used internally for processing are something totally different
than data structures used for communication with outside world. Usually you
don't want to expose internals with public API, and even when you do, you want
to be very selective about what is shown and how.
When you publish internals, you only cement your implementation so you can't change that easily later (e.g. when you realize how crappy it was at first), and you even need to pay for that drawback with ease of use of your API (API's user would need to understand the system he talks with). It's a lose-lose deal.