def phase_misfit_and_adjoint_source(
data_synthetic: np.ndarray,
data_observed: np.ndarray,
sampling_rate_in_hertz: float,
temporal_weights: np.ndarray | None = None,
frequency_weights: np.ndarray | None = None,
nfreq: int = 20,
) -> tuple[float, np.ndarray]: ...