import numpy as np
from pandas.core.arrays.masked import BaseMaskedArray as BaseMaskedArray

from pandas._libs.missing import NAType
from pandas._typing import type_t

from pandas.core.dtypes.base import ExtensionDtype as ExtensionDtype

class BooleanDtype(ExtensionDtype):
    @property
    def na_value(self) -> NAType: ...
    @classmethod
    def construct_array_type(cls) -> type_t[BooleanArray]: ...

class BooleanArray(BaseMaskedArray):
    def __init__(
        self, values: np.ndarray, mask: np.ndarray, copy: bool = ...
    ) -> None: ...
    @property
    def dtype(self): ...
    def __array_ufunc__(self, ufunc, method, *inputs, **kwargs): ...
    def __setitem__(self, key, value) -> None: ...
    def astype(self, dtype, copy: bool = True): ...
    def any(self, *, skipna: bool = ..., **kwargs): ...
    def all(self, *, skipna: bool = ..., **kwargs): ...
