This is hack until Waffle declares formal typespecs in its own project.
definition() :: Module.t()
file() :: %Waffle.File{ binary: term(), file_name: term(), is_tempfile?: term(), path: term() }
meta() :: {file(), any()}
version() :: Atom.t() | String.t()