spilt libengine.h into two parts: types definition and function declarations.
because, we need open types definition to signatures