from typing import Callable, Concatenate, ParamSpec
P = ParamSpec("P")
def decorator(fn: Callable[Concatenate[str, P], None]) -> None:
fn("value") # runtime TypeError: foo() missing 1 required positional argument: 's2'
@decorator
def foo(s: str, s2: str) -> None:
...
playground