from pandas.core.arrays.numeric import (
    NumericArray,
    NumericDtype,
)

from pandas._typing import (
    np_ndarray_anyint,
    np_ndarray_bool,
)

class IntegerDtype(NumericDtype):
    base: None
    @property
    def itemsize(self) -> int: ...
    @classmethod
    def construct_array_type(cls) -> type[IntegerArray]: ...

class IntegerArray(NumericArray):
    @property
    def dtype(self) -> IntegerDtype: ...
    def __init__(
        self, values: np_ndarray_anyint, mask: np_ndarray_bool, copy: bool = False
    ) -> None: ...

class Int8Dtype(IntegerDtype): ...
class Int16Dtype(IntegerDtype): ...
class Int32Dtype(IntegerDtype): ...
class Int64Dtype(IntegerDtype): ...
class UInt8Dtype(IntegerDtype): ...
class UInt16Dtype(IntegerDtype): ...
class UInt32Dtype(IntegerDtype): ...
class UInt64Dtype(IntegerDtype): ...
