from typing import Any, Iterable, Tuple
from numpy import generic
from numpy.typing import NDArray
__all__: list[str]
# NOTE: In practice `byte_bounds` can (potentially) take any object
# implementing the `__array_interface__` protocol. The caveat is
# that certain keys, marked as optional in the spec, must be present for
# `byte_bounds`. This concerns `"strides"` and `"data"`.
def byte_bounds(a: generic | NDArray[Any]) -> tuple[int, int]: ...
def normalize_axis_tuple(
axis: int | Iterable[int],
ndim: int = ...,
argname: None | str = ...,
allow_duplicate: None | bool = ...,
) -> Tuple[int, int]: ...
def normalize_axis_index(
axis: int = ...,
ndim: int = ...,
msg_prefix: None | str = ...,
) -> int: ...