It is, as expected, heavily inspired by the ECalDataModel code, except it uses GDateTime, is timezone aware, and can handle all day events correctly.
Standard practice; gcal-types.h is meant to only be used by header files.