from _typeshed import Incomplete
from collections import OrderedDict
from typing import TypeVar

from humanfriendly.compat import unicode

_KT = TypeVar("_KT")
_VT = TypeVar("_VT")

class CaseInsensitiveDict(OrderedDict[_KT, _VT]):
    def __init__(self, other: Incomplete | None = None, **kw) -> None: ...
    def coerce_key(self, key): ...
    @classmethod
    def fromkeys(cls, iterable, value: Incomplete | None = None): ...
    def get(self, key, default: Incomplete | None = None): ...
    def pop(self, key, default: Incomplete | None = None): ...
    def setdefault(self, key, default: Incomplete | None = None): ...
    def update(self, other: Incomplete | None = None, **kw) -> None: ...  # type: ignore[override]
    def __contains__(self, key): ...
    def __delitem__(self, key) -> None: ...
    def __getitem__(self, key): ...
    def __setitem__(self, key, value) -> None: ...

class CaseInsensitiveKey(unicode):
    def __new__(cls, value): ...
    def __hash__(self) -> int: ...
    def __eq__(self, other): ...
