Python 3.6 type hinting - what are good practices?

Below, I wrote down two examples which I'm dealing a lot in my code.

Example 1.

What should I annotate as return value in the case when returning value is an object of external library?

def fun(arg: str, arg2: int = 3) -> ???:
     return external_lib.SomeClass(...)

Example 2.

Should I repeat annotations in fun2 when returning value is a function that is already annotated?

def fun1(arg: str, arg2: int = 3) -> typing.Union[str, None, dict]:
     return external_lib.Factory(...)

def fun2(arg: str, arg2: int = 3, arg3: Decimal = Decimal(1)) -> ???:
     return fun1(...)