# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-alpha.6

import enum
import typing
import uuid

import bleak_winrt._winrt as _winrt
try:
    import bleak_winrt.windows.foundation
except Exception:
    pass

class CollectionChange(enum.IntEnum):
    RESET = 0
    ITEM_INSERTED = 1
    ITEM_REMOVED = 2
    ITEM_CHANGED = 3

class PropertySet(IPropertySet, IObservableMap[str, _winrt.winrt_base], IMap[str, _winrt.winrt_base], IIterable[IKeyValuePair[str, _winrt.winrt_base]], _winrt.winrt_base):
    ...
    size: int
    def lookup(key: str) -> _winrt.winrt_base:
        ...
    def has_key(key: str) -> bool:
        ...
    def get_view() -> IMapView[str, _winrt.winrt_base]:
        ...
    def insert(key: str, value: _winrt.winrt_base) -> bool:
        ...
    def remove(key: str) -> None:
        ...
    def clear() -> None:
        ...
    def first() -> IIterator[IKeyValuePair[str, _winrt.winrt_base]]:
        ...
    def add_map_changed(vhnd: MapChangedEventHandler[str, _winrt.winrt_base]) -> bleak_winrt.windows.foundation.EventRegistrationToken:
        ...
    def remove_map_changed(token: bleak_winrt.windows.foundation.EventRegistrationToken) -> None:
        ...

class StringMap(IMap[str, str], IIterable[IKeyValuePair[str, str]], IObservableMap[str, str], _winrt.winrt_base):
    ...
    size: int
    def lookup(key: str) -> str:
        ...
    def has_key(key: str) -> bool:
        ...
    def get_view() -> IMapView[str, str]:
        ...
    def insert(key: str, value: str) -> bool:
        ...
    def remove(key: str) -> None:
        ...
    def clear() -> None:
        ...
    def first() -> IIterator[IKeyValuePair[str, str]]:
        ...
    def add_map_changed(vhnd: MapChangedEventHandler[str, str]) -> bleak_winrt.windows.foundation.EventRegistrationToken:
        ...
    def remove_map_changed(token: bleak_winrt.windows.foundation.EventRegistrationToken) -> None:
        ...

class ValueSet(IPropertySet, IObservableMap[str, _winrt.winrt_base], IMap[str, _winrt.winrt_base], IIterable[IKeyValuePair[str, _winrt.winrt_base]], _winrt.winrt_base):
    ...
    size: int
    def lookup(key: str) -> _winrt.winrt_base:
        ...
    def has_key(key: str) -> bool:
        ...
    def get_view() -> IMapView[str, _winrt.winrt_base]:
        ...
    def insert(key: str, value: _winrt.winrt_base) -> bool:
        ...
    def remove(key: str) -> None:
        ...
    def clear() -> None:
        ...
    def first() -> IIterator[IKeyValuePair[str, _winrt.winrt_base]]:
        ...
    def add_map_changed(vhnd: MapChangedEventHandler[str, _winrt.winrt_base]) -> bleak_winrt.windows.foundation.EventRegistrationToken:
        ...
    def remove_map_changed(token: bleak_winrt.windows.foundation.EventRegistrationToken) -> None:
        ...

T = typing.TypeVar('T')

class IIterable(typing.Iterable[T], _winrt.winrt_base):
    ...
    def first() -> IIterator[T]:
        ...

T = typing.TypeVar('T')

class IIterator(typing.Iterator[T], _winrt.winrt_base):
    ...
    current: T
    has_current: bool
    def move_next() -> bool:
        ...
    def get_many(items_size: int) -> typing.Tuple[int, typing.List[T]]:
        ...

K = typing.TypeVar('K')

V = typing.TypeVar('V')

class IKeyValuePair(typing.Generic[K, V], _winrt.winrt_base):
    ...
    key: K
    value: V

K = typing.TypeVar('K')

class IMapChangedEventArgs(typing.Generic[K], _winrt.winrt_base):
    ...
    collection_change: CollectionChange
    key: K

K = typing.TypeVar('K')

V = typing.TypeVar('V')

class IMapView(IIterable[IKeyValuePair[K, V]], typing.Mapping[K, V], _winrt.winrt_base):
    ...
    size: int
    def lookup(key: K) -> V:
        ...
    def has_key(key: K) -> bool:
        ...
    def split() -> typing.Tuple[IMapView[K, V], IMapView[K, V]]:
        ...
    def first() -> IIterator[IKeyValuePair[K, V]]:
        ...

K = typing.TypeVar('K')

V = typing.TypeVar('V')

class IMap(IIterable[IKeyValuePair[K, V]], typing.Mapping[K, V], _winrt.winrt_base):
    ...
    size: int
    def lookup(key: K) -> V:
        ...
    def has_key(key: K) -> bool:
        ...
    def get_view() -> IMapView[K, V]:
        ...
    def insert(key: K, value: V) -> bool:
        ...
    def remove(key: K) -> None:
        ...
    def clear() -> None:
        ...
    def first() -> IIterator[IKeyValuePair[K, V]]:
        ...

K = typing.TypeVar('K')

V = typing.TypeVar('V')

class IObservableMap(IMap[K, V], _winrt.winrt_base):
    ...
    size: int
    def lookup(key: K) -> V:
        ...
    def has_key(key: K) -> bool:
        ...
    def get_view() -> IMapView[K, V]:
        ...
    def insert(key: K, value: V) -> bool:
        ...
    def remove(key: K) -> None:
        ...
    def clear() -> None:
        ...
    def first() -> IIterator[IKeyValuePair[K, V]]:
        ...
    def add_map_changed(vhnd: MapChangedEventHandler[K, V]) -> bleak_winrt.windows.foundation.EventRegistrationToken:
        ...
    def remove_map_changed(token: bleak_winrt.windows.foundation.EventRegistrationToken) -> None:
        ...

T = typing.TypeVar('T')

class IObservableVector(IVector[T], _winrt.winrt_base):
    ...
    size: int
    def get_at(index: int) -> T:
        ...
    def get_view() -> IVectorView[T]:
        ...
    def index_of(value: T) -> typing.Tuple[bool, int]:
        ...
    def set_at(index: int, value: T) -> None:
        ...
    def insert_at(index: int, value: T) -> None:
        ...
    def remove_at(index: int) -> None:
        ...
    def append(value: T) -> None:
        ...
    def remove_at_end() -> None:
        ...
    def clear() -> None:
        ...
    def get_many(start_index: int, items_size: int) -> typing.Tuple[int, typing.List[T]]:
        ...
    def replace_all(items: typing.Sequence[T]) -> None:
        ...
    def first() -> IIterator[T]:
        ...
    def add_vector_changed(vhnd: VectorChangedEventHandler[T]) -> bleak_winrt.windows.foundation.EventRegistrationToken:
        ...
    def remove_vector_changed(token: bleak_winrt.windows.foundation.EventRegistrationToken) -> None:
        ...

class IPropertySet(IObservableMap[str, _winrt.winrt_base], IMap[str, _winrt.winrt_base], IIterable[IKeyValuePair[str, _winrt.winrt_base]], _winrt.winrt_base):
    ...
    size: int
    def lookup(key: str) -> _winrt.winrt_base:
        ...
    def has_key(key: str) -> bool:
        ...
    def get_view() -> IMapView[str, _winrt.winrt_base]:
        ...
    def insert(key: str, value: _winrt.winrt_base) -> bool:
        ...
    def remove(key: str) -> None:
        ...
    def clear() -> None:
        ...
    def first() -> IIterator[IKeyValuePair[str, _winrt.winrt_base]]:
        ...
    def add_map_changed(vhnd: MapChangedEventHandler[str, _winrt.winrt_base]) -> bleak_winrt.windows.foundation.EventRegistrationToken:
        ...
    def remove_map_changed(token: bleak_winrt.windows.foundation.EventRegistrationToken) -> None:
        ...

class IVectorChangedEventArgs(_winrt.winrt_base):
    ...
    collection_change: CollectionChange
    index: int

T = typing.TypeVar('T')

class IVectorView(IIterable[T], typing.Sequence[T], _winrt.winrt_base):
    ...
    size: int
    def get_at(index: int) -> T:
        ...
    def index_of(value: T) -> typing.Tuple[bool, int]:
        ...
    def get_many(start_index: int, items_size: int) -> typing.Tuple[int, typing.List[T]]:
        ...
    def first() -> IIterator[T]:
        ...

T = typing.TypeVar('T')

class IVector(IIterable[T], typing.Sequence[T], _winrt.winrt_base):
    ...
    size: int
    def get_at(index: int) -> T:
        ...
    def get_view() -> IVectorView[T]:
        ...
    def index_of(value: T) -> typing.Tuple[bool, int]:
        ...
    def set_at(index: int, value: T) -> None:
        ...
    def insert_at(index: int, value: T) -> None:
        ...
    def remove_at(index: int) -> None:
        ...
    def append(value: T) -> None:
        ...
    def remove_at_end() -> None:
        ...
    def clear() -> None:
        ...
    def get_many(start_index: int, items_size: int) -> typing.Tuple[int, typing.List[T]]:
        ...
    def replace_all(items: typing.Sequence[T]) -> None:
        ...
    def first() -> IIterator[T]:
        ...

K = typing.TypeVar('K')

V = typing.TypeVar('V')

MapChangedEventHandler = typing.Callable[[IObservableMap[K, V], IMapChangedEventArgs[K]], None]

T = typing.TypeVar('T')

VectorChangedEventHandler = typing.Callable[[IObservableVector[T], IVectorChangedEventArgs], None]

