TYP: stubfile for _libs.lib
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

cc @simonjayhawkins @Dr-Irv there are a couple of kludges (ndarray_obj_2d, const memoryviews), interested in your thoughts on how to handle these
Some general comments:

1. Use `List[Any]` rather than `list`  (or `List[float]` if it's a list of floats, etc.)
2. Consider using `Any` rather than `object`
3. With respect to `numpy`, does this work with both numpy 1.19 and numpy 1.20 (which has typing) ?  I'm not sure how you test that...
4. You might consider creating in `pandas._typing` aliases for the different numpy types (e.g., `np.ndarray`, `np.ndarray[object]` ).  And maybe be consistent in the use of those, since there are places where you use the former, and other places where you use the latter.  Creating our own types for that might make it easier to support different versions of numpy as their typing stuff evolves.

I haven't done enough with `numpy` typing to know how to handle `ndarray_obj_2d` .  