from typing import Any, Optional, Union, Tuple, List

from numpy import dtype

def maximum_sctype(t: dtype) -> dtype: ...
def issctype(rep: Any) -> bool: ...
def obj2sctype(rep: Any, default: Optional[Any] = ...) -> type: ...
def issubclass_(
    arg1: type, arg2: Union[type, Tuple[Union[type, Tuple], ...]]
) -> bool: ...
def issubsctype(
    arg1: type, arg2: Union[type, Tuple[Union[type, Tuple], ...]]
) -> bool: ...
def issubdtype(
    arg1: Union[object, type],
    arg2: Union[type, Tuple[Union[type, Tuple], ...]],
) -> bool: ...
def sctype2char(sctype: Any) -> str: ...
def find_common_type(
    array_types: Union[dtype, List[dtype]],
    scalar_types: Union[dtype, List[dtype]],
) -> dtype: ...
