# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.1

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation

from winrt.windows.foundation.collections import CollectionChange
from winrt.windows.foundation.collections import MapChangedEventHandler, VectorChangedEventHandler

Self = typing.TypeVar('Self')
K = typing.TypeVar('K')
T = typing.TypeVar('T')
V = typing.TypeVar('V')

@typing.final
class PropertySet(winrt.system.Object, winrt._winrt.MutableMapping[str, winrt.system.Object]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[str]: ...
    def __contains__(self, key: object) -> bool:...
    def __setitem__(self, key: str, value: winrt.system.Object) -> None: ...
    def __getitem__(self, key: str) -> winrt.system.Object: ...
    def __delitem__(self, key: str) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PropertySet: ...
    def __new__(cls: typing.Type[PropertySet]) -> PropertySet:...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[IKeyValuePair[str, winrt.system.Object]]]: ...
    def get_view(self) -> typing.Optional[IMapView[str, winrt.system.Object]]: ...
    def has_key(self, key: str, /) -> bool: ...
    def insert(self, key: str, value: typing.Optional[winrt.system.Object], /) -> bool: ...
    def lookup(self, key: str, /) -> typing.Optional[winrt.system.Object]: ...
    def remove(self, key: str, /) -> None: ...
    def add_map_changed(self, vhnd: MapChangedEventHandler[str, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_map_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class StringMap(winrt.system.Object, winrt._winrt.MutableMapping[str, str]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[str]: ...
    def __contains__(self, key: object) -> bool:...
    def __setitem__(self, key: str, value: str) -> None: ...
    def __getitem__(self, key: str) -> str: ...
    def __delitem__(self, key: str) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StringMap: ...
    def __new__(cls: typing.Type[StringMap]) -> StringMap:...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[IKeyValuePair[str, str]]]: ...
    def get_view(self) -> typing.Optional[IMapView[str, str]]: ...
    def has_key(self, key: str, /) -> bool: ...
    def insert(self, key: str, value: str, /) -> bool: ...
    def lookup(self, key: str, /) -> str: ...
    def remove(self, key: str, /) -> None: ...
    def add_map_changed(self, vhnd: MapChangedEventHandler[str, str], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_map_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class ValueSet(winrt.system.Object, winrt._winrt.MutableMapping[str, winrt.system.Object]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[str]: ...
    def __contains__(self, key: object) -> bool:...
    def __setitem__(self, key: str, value: winrt.system.Object) -> None: ...
    def __getitem__(self, key: str) -> winrt.system.Object: ...
    def __delitem__(self, key: str) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ValueSet: ...
    def __new__(cls: typing.Type[ValueSet]) -> ValueSet:...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[IKeyValuePair[str, winrt.system.Object]]]: ...
    def get_view(self) -> typing.Optional[IMapView[str, winrt.system.Object]]: ...
    def has_key(self, key: str, /) -> bool: ...
    def insert(self, key: str, value: typing.Optional[winrt.system.Object], /) -> bool: ...
    def lookup(self, key: str, /) -> typing.Optional[winrt.system.Object]: ...
    def remove(self, key: str, /) -> None: ...
    def add_map_changed(self, vhnd: MapChangedEventHandler[str, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_map_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class IIterable(winrt.system.Object, typing.Generic[T]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __iter__(self) -> IIterator[T]: ...
    def first(self) -> typing.Optional[IIterator[T]]: ...

@typing.final
class IIterator(winrt.system.Object, typing.Generic[T]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __iter__(self: Self) -> Self: ...
    def __next__(self) -> T: ...
    def get_many(self, items: winrt.system.Array[T], /) -> winrt.system.UInt32: ...
    def move_next(self) -> bool: ...
    @_property
    def current(self) -> typing.Optional[T]: ...
    @_property
    def has_current(self) -> bool: ...

@typing.final
class IKeyValuePair(winrt.system.Object, typing.Generic[K, V]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    @_property
    def key(self) -> typing.Optional[K]: ...
    @_property
    def value(self) -> typing.Optional[V]: ...

@typing.final
class IMapChangedEventArgs(winrt.system.Object, typing.Generic[K]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    @_property
    def collection_change(self) -> CollectionChange: ...
    @_property
    def key(self) -> typing.Optional[K]: ...

@typing.final
class IMapView(winrt.system.Object, winrt._winrt.Mapping[K, V], typing.Generic[K, V]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[K]: ...
    def __contains__(self, key: object) -> bool:...
    def __getitem__(self, key: K) -> V: ...
    def first(self) -> typing.Optional[IIterator[IKeyValuePair[K, V]]]: ...
    def has_key(self, key: typing.Optional[K], /) -> bool: ...
    def lookup(self, key: typing.Optional[K], /) -> typing.Optional[V]: ...
    def split(self) -> typing.Tuple[typing.Optional[IMapView[K, V]], typing.Optional[IMapView[K, V]]]: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class IMap(winrt.system.Object, winrt._winrt.MutableMapping[K, V], typing.Generic[K, V]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[K]: ...
    def __contains__(self, key: object) -> bool:...
    def __setitem__(self, key: K, value: V) -> None: ...
    def __getitem__(self, key: K) -> V: ...
    def __delitem__(self, key: K) -> None: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[IKeyValuePair[K, V]]]: ...
    def get_view(self) -> typing.Optional[IMapView[K, V]]: ...
    def has_key(self, key: typing.Optional[K], /) -> bool: ...
    def insert(self, key: typing.Optional[K], value: typing.Optional[V], /) -> bool: ...
    def lookup(self, key: typing.Optional[K], /) -> typing.Optional[V]: ...
    def remove(self, key: typing.Optional[K], /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class IObservableMap(winrt.system.Object, winrt._winrt.MutableMapping[K, V], typing.Generic[K, V]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[K]: ...
    def __contains__(self, key: object) -> bool:...
    def __setitem__(self, key: K, value: V) -> None: ...
    def __getitem__(self, key: K) -> V: ...
    def __delitem__(self, key: K) -> None: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[IKeyValuePair[K, V]]]: ...
    def get_view(self) -> typing.Optional[IMapView[K, V]]: ...
    def has_key(self, key: typing.Optional[K], /) -> bool: ...
    def insert(self, key: typing.Optional[K], value: typing.Optional[V], /) -> bool: ...
    def lookup(self, key: typing.Optional[K], /) -> typing.Optional[V]: ...
    def remove(self, key: typing.Optional[K], /) -> None: ...
    def add_map_changed(self, vhnd: MapChangedEventHandler[K, V], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_map_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class IObservableVector(winrt.system.Object, winrt._winrt.MutableSequence[T], typing.Generic[T]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> IIterator[T]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> T: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[T]: ...
    @typing.overload
    def __delitem__(self, index: typing.SupportsIndex) -> None: ...
    @typing.overload
    def __delitem__(self, index: slice) -> None: ...
    @typing.overload
    def __setitem__(self, index: typing.SupportsIndex, value: T) -> None: ...
    @typing.overload
    def __setitem__(self, index: slice, value: typing.Iterable[T]) -> None: ...
    def append(self, value: typing.Optional[T], /) -> None: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[T]]: ...
    def get_at(self, index: winrt.system.UInt32, /) -> typing.Optional[T]: ...
    def get_many(self, start_index: winrt.system.UInt32, items: winrt.system.Array[T], /) -> winrt.system.UInt32: ...
    def get_view(self) -> typing.Optional[IVectorView[T]]: ...
    def index_of(self, value: typing.Optional[T], /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    def insert_at(self, index: winrt.system.UInt32, value: typing.Optional[T], /) -> None: ...
    def remove_at(self, index: winrt.system.UInt32, /) -> None: ...
    def remove_at_end(self) -> None: ...
    def replace_all(self, items: winrt.system.Array[T], /) -> None: ...
    def set_at(self, index: winrt.system.UInt32, value: typing.Optional[T], /) -> None: ...
    def add_vector_changed(self, vhnd: VectorChangedEventHandler[T], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_vector_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class IPropertySet(winrt.system.Object, winrt._winrt.MutableMapping[str, winrt.system.Object]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[str]: ...
    def __contains__(self, key: object) -> bool:...
    def __setitem__(self, key: str, value: winrt.system.Object) -> None: ...
    def __getitem__(self, key: str) -> winrt.system.Object: ...
    def __delitem__(self, key: str) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IPropertySet: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[IKeyValuePair[str, winrt.system.Object]]]: ...
    def get_view(self) -> typing.Optional[IMapView[str, winrt.system.Object]]: ...
    def has_key(self, key: typing.Optional[str], /) -> bool: ...
    def insert(self, key: typing.Optional[str], value: typing.Optional[winrt.system.Object], /) -> bool: ...
    def lookup(self, key: typing.Optional[str], /) -> typing.Optional[winrt.system.Object]: ...
    def remove(self, key: typing.Optional[str], /) -> None: ...
    def add_map_changed(self, vhnd: MapChangedEventHandler[str, winrt.system.Object], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_map_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class IVectorChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IVectorChangedEventArgs: ...
    @_property
    def collection_change(self) -> CollectionChange: ...
    @_property
    def index(self) -> winrt.system.UInt32: ...

@typing.final
class IVectorView(winrt.system.Object, winrt._winrt.Sequence[T], typing.Generic[T]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> IIterator[T]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> T: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[T]: ...
    def first(self) -> typing.Optional[IIterator[T]]: ...
    def get_at(self, index: winrt.system.UInt32, /) -> typing.Optional[T]: ...
    def get_many(self, start_index: winrt.system.UInt32, items: winrt.system.Array[T], /) -> winrt.system.UInt32: ...
    def index_of(self, value: typing.Optional[T], /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class IVector(winrt.system.Object, winrt._winrt.MutableSequence[T], typing.Generic[T]):
    def __class_getitem__(cls, key: typing.Any) -> types.GenericAlias: ...
    def __len__(self) -> int: ...
    def __iter__(self) -> IIterator[T]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> T: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[T]: ...
    @typing.overload
    def __delitem__(self, index: typing.SupportsIndex) -> None: ...
    @typing.overload
    def __delitem__(self, index: slice) -> None: ...
    @typing.overload
    def __setitem__(self, index: typing.SupportsIndex, value: T) -> None: ...
    @typing.overload
    def __setitem__(self, index: slice, value: typing.Iterable[T]) -> None: ...
    def append(self, value: typing.Optional[T], /) -> None: ...
    def clear(self) -> None: ...
    def first(self) -> typing.Optional[IIterator[T]]: ...
    def get_at(self, index: winrt.system.UInt32, /) -> typing.Optional[T]: ...
    def get_many(self, start_index: winrt.system.UInt32, items: winrt.system.Array[T], /) -> winrt.system.UInt32: ...
    def get_view(self) -> typing.Optional[IVectorView[T]]: ...
    def index_of(self, value: typing.Optional[T], /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    def insert_at(self, index: winrt.system.UInt32, value: typing.Optional[T], /) -> None: ...
    def remove_at(self, index: winrt.system.UInt32, /) -> None: ...
    def remove_at_end(self) -> None: ...
    def replace_all(self, items: winrt.system.Array[T], /) -> None: ...
    def set_at(self, index: winrt.system.UInt32, value: typing.Optional[T], /) -> None: ...
    @_property
    def size(self) -> winrt.system.UInt32: ...

