from pandas.core.arrays import PandasArray

from pandas._typing import type_t

from pandas.core.dtypes.base import ExtensionDtype

class StringDtype(ExtensionDtype):
    name: str = ...
    na_value = ...
    @property
    def type(self) -> type_t: ...
    @classmethod
    def construct_array_type(cls) -> type_t[StringArray]: ...
    def __from_arrow__(self, array): ...

class StringArray(PandasArray):
    def __init__(self, values, copy: bool = ...) -> None: ...
    def __arrow_array__(self, type=...): ...
    def __setitem__(self, key, value) -> None: ...
    def fillna(self, value=..., method=..., limit=...): ...
    def astype(self, dtype, copy: bool = ...): ...
    def value_counts(self, dropna: bool = ...): ...
