Насколько я знаю, типизация python не позволяет сделать это прямо, как указано в документации набора. Вызываемый :
Синтаксис указать необязательные или ключевые аргументы; такие типы функций редко используются как типы обратного вызова. Вызываемый [..., ReturnType] (буквальное многоточие) может использоваться для ввода подсказки вызываемого объекта, принимающего любое количество аргументов и возвращающего ReturnType.
Но вы можете использовать расширения mypy вот так:
from typing import Callable
from mypy_extensions import Arg, VarArg, KwArg
def foo(a: str, *args: int, **kwargs: float) -> str:
return 'Hello, {}'.format(a)
def bar() -> Callable[[Arg(str, 'a'), VarArg(int), KwArg(float)], str]:
return foo