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

import enum
import typing
import uuid as _uuid

import winrt.runtime._internals
import winrt.system
from winrt._winrt_windows_foundation_collections import (
    PropertySet,
    StringMap,
    ValueSet,
    _IIterable,
    IIterable,
    _IIterator,
    IIterator,
    _IKeyValuePair,
    IKeyValuePair,
    _IMapChangedEventArgs,
    IMapChangedEventArgs,
    _IMapView,
    IMapView,
    _IMap,
    IMap,
    _IObservableMap,
    IObservableMap,
    _IObservableVector,
    IObservableVector,
    _IPropertySet,
    IPropertySet,
    _IVectorChangedEventArgs,
    IVectorChangedEventArgs,
    _IVectorView,
    IVectorView,
    _IVector,
    IVector,
)

__all__ = [
    "CollectionChange",
    "PropertySet",
    "StringMap",
    "ValueSet",
    "IIterable",
    "IIterator",
    "IKeyValuePair",
    "IMapChangedEventArgs",
    "IMapView",
    "IMap",
    "IObservableMap",
    "IObservableVector",
    "IPropertySet",
    "IVectorChangedEventArgs",
    "IVectorView",
    "IVector",
    "MapChangedEventHandler",
    "VectorChangedEventHandler",
]
K = typing.TypeVar('K')
T = typing.TypeVar('T')
V = typing.TypeVar('V')

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

winrt.runtime._internals.mixin_mutable_mapping(PropertySet)
winrt.runtime._internals.mixin_mutable_mapping(StringMap)
winrt.runtime._internals.mixin_mutable_mapping(ValueSet)
winrt.runtime._internals.mixin_mapping(_IMapView)
winrt.runtime._internals.mixin_mutable_mapping(_IMap)
winrt.runtime._internals.mixin_mutable_mapping(_IObservableMap)
winrt.runtime._internals.mixin_mutable_sequence(_IObservableVector)
winrt.runtime._internals.mixin_mutable_mapping(_IPropertySet)
winrt.runtime._internals.mixin_sequence(_IVectorView)
winrt.runtime._internals.mixin_mutable_sequence(_IVector)
MapChangedEventHandler = typing.Callable[[IObservableMap[K, V], IMapChangedEventArgs[K]], None]
VectorChangedEventHandler = typing.Callable[[IObservableVector[T], IVectorChangedEventArgs], None]
