text: import inspect
  from typing import Any, Dict, Callable
  
  from loguru import logger
  from pydantic.typing import ForwardRef, evaluate_forwardref
  
  
  def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
      signature = inspect.signature(call)
      globalns = getattr(call, "__globals__", {})
      typed_params = [
          inspect.Parameter(
              name=param.name,
              kind=param.kind,
              default=param.default,
              annotation=get_typed_annotation(param, globalns),
          )
          for param in signature.parameters.values()
      ]
      typed_signature = inspect.Signature(typed_params)
      return typed_signature
  
  
  def get_typed_annotation(param: inspect.Parameter, globalns: Dict[str, Any]) -> Any:
      annotation = param.annotation
      if isinstance(annotation, str):
          annotation = ForwardRef(annotation)
          try:
              annotation = evaluate_forwardref(annotation, globalns, globalns)
          except Exception as e:
              logger.opt(colors=True, exception=e).warning(
                  f'Unknown ForwardRef["{param.annotation}"] for parameter {param.name}'
              )
              return inspect.Parameter.empty
      return annotation
  