@overload
def block_diag(
    mats: Sequence[spmatrix[Any, Any] | npt.NDArray[Any]],
    format: None,
    dtype: _DTypeLike[_SCT_co],
) -> spmatrix[Any, np.dtype[_SCT_co]]: ...
@overload
def block_diag(
    mats: Sequence[spmatrix[Any, Any] | npt.NDArray[Any]],
    format: None = ...,
    *,
    dtype: _DTypeLike[_SCT_co],
) -> spmatrix[Any, np.dtype[_SCT_co]]: ...
@overload
def block_diag(
    mats: Sequence[spmatrix[Any, Any] | npt.NDArray[Any]],
    format: None = ...,
    dtype: npt.DTypeLike | None = ...,
) -> spmatrix[Any, Any]: ...
@overload
def block_diag(
    mats: Sequence[SparseArray[Any] | npt.NDArray[Any]],
    format: None,
    dtype: _DTypeLike[_SCT_co],
) -> SparseArray[_SCT_co]: ...
@overload
def block_diag(
    mats: Sequence[SparseArray[Any] | npt.NDArray[Any]],
    format: None = ...,
    *,
    dtype: np.dtype[_SCT_co],
) -> SparseArray[_SCT_co]: ...
@overload
def block_diag(
    mats: Sequence[SparseArray[Any] | npt.NDArray[Any]],
    format: None = ...,
    dtype: npt.DTypeLike | None = ...,
) -> SparseArray[Any]: ...
