Can we import types and guards from another module?

You should be able to import is_size/1 just by doing import A(, only: [is_size: 1]).

You can not import types though. The easiest way is to just alias them.

@type foo :: Foo.foo