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

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

import winrt._winrt
import winrt.system
import winrt.windows.foundation.collections as windows_foundation_collections

from winrt.windows.foundation import AsyncStatus, PropertyType
from winrt.windows.foundation import AsyncActionCompletedHandler, AsyncActionProgressHandler, AsyncActionWithProgressCompletedHandler, AsyncOperationCompletedHandler, AsyncOperationProgressHandler, AsyncOperationWithProgressCompletedHandler, DeferralCompletedHandler, EventHandler, TypedEventHandler

Self = typing.TypeVar('Self')
T = typing.TypeVar('T')
TProgress = typing.TypeVar('TProgress')
TResult = typing.TypeVar('TResult')

@typing.final
class EventRegistrationToken:
    @_property
    def value(self) -> winrt.system.Int64: ...
    def __new__(cls, value: winrt.system.Int64 = 0) -> EventRegistrationToken: ...
    def __replace__(self, /, **changes: typing.Any) -> EventRegistrationToken: ...

@typing.final
class HResult:
    @_property
    def value(self) -> winrt.system.Int32: ...
    def __new__(cls, value: winrt.system.Int32 = 0) -> HResult: ...
    def __replace__(self, /, **changes: typing.Any) -> HResult: ...

@typing.final
class Point:
    @_property
    def x(self) -> winrt.system.Single: ...
    @_property
    def y(self) -> winrt.system.Single: ...
    def __new__(cls, x: winrt.system.Single = 0, y: winrt.system.Single = 0) -> Point: ...
    def __replace__(self, /, **changes: typing.Any) -> Point: ...
    def unpack(self) -> typing.Tuple[winrt.system.Single, winrt.system.Single]: ...

@typing.final
class Rect:
    @_property
    def x(self) -> winrt.system.Single: ...
    @_property
    def y(self) -> winrt.system.Single: ...
    @_property
    def width(self) -> winrt.system.Single: ...
    @_property
    def height(self) -> winrt.system.Single: ...
    def __new__(cls, x: winrt.system.Single = 0, y: winrt.system.Single = 0, width: winrt.system.Single = 0, height: winrt.system.Single = 0) -> Rect: ...
    def __replace__(self, /, **changes: typing.Any) -> Rect: ...
    def unpack(self) -> typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]: ...

@typing.final
class Size:
    @_property
    def width(self) -> winrt.system.Single: ...
    @_property
    def height(self) -> winrt.system.Single: ...
    def __new__(cls, width: winrt.system.Single = 0, height: winrt.system.Single = 0) -> Size: ...
    def __replace__(self, /, **changes: typing.Any) -> Size: ...
    def unpack(self) -> typing.Tuple[winrt.system.Single, winrt.system.Single]: ...

@typing.final
class Deferral(winrt.system.Object, IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    def __new__(cls: typing.Type[Self], handler: DeferralCompletedHandler) -> Self: ...
    # System.Void Windows.Foundation.Deferral::Close()
    def close(self) -> None: ...
    # System.Void Windows.Foundation.Deferral::Complete()
    def complete(self) -> None: ...

@typing.final
class GuidHelper_Static(winrt._winrt.IInspectable_Static):
    # System.Guid Windows.Foundation.GuidHelper::CreateNewGuid()
    def create_new_guid(cls) -> _uuid.UUID: ...
    # System.Boolean Windows.Foundation.GuidHelper::Equals(System.Guid& modopt(System.Runtime.CompilerServices.IsConst),System.Guid& modopt(System.Runtime.CompilerServices.IsConst))
    def equals(cls, target: _uuid.UUID, value: _uuid.UUID, /) -> bool: ...
    # System.Guid Windows.Foundation.GuidHelper::get_Empty()
    @_property
    def empty(cls) -> _uuid.UUID: ...

@typing.final
class GuidHelper(winrt.system.Object, metaclass=GuidHelper_Static):
    pass

@typing.final
class MemoryBuffer(winrt.system.Object, IMemoryBuffer, IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    def __new__(cls: typing.Type[Self], capacity: winrt.system.UInt32) -> Self: ...
    # System.Void Windows.Foundation.MemoryBuffer::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IMemoryBufferReference Windows.Foundation.MemoryBuffer::CreateReference()
    def create_reference(self) -> IMemoryBufferReference: ...

@typing.final
class PropertyValue_Static(winrt._winrt.IInspectable_Static):
    # System.Object Windows.Foundation.PropertyValue::CreateBoolean(System.Boolean)
    def create_boolean(cls, value: bool, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateBooleanArray(System.Boolean[])
    def create_boolean_array(cls, value: typing.Union[winrt.system.Array[bool], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateChar16(System.Char)
    def create_char16(cls, value: winrt.system.Char16, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateChar16Array(System.Char[])
    def create_char16_array(cls, value: typing.Union[winrt.system.Array[winrt.system.Char16], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateDateTime(Windows.Foundation.DateTime)
    def create_date_time(cls, value: datetime.datetime, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateDateTimeArray(Windows.Foundation.DateTime[])
    def create_date_time_array(cls, value: typing.Union[winrt.system.Array[datetime.datetime], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateDouble(System.Double)
    def create_double(cls, value: winrt.system.Double, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateDoubleArray(System.Double[])
    def create_double_array(cls, value: typing.Union[winrt.system.Array[winrt.system.Double], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateEmpty()
    def create_empty(cls) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateGuid(System.Guid)
    def create_guid(cls, value: _uuid.UUID, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateGuidArray(System.Guid[])
    def create_guid_array(cls, value: typing.Union[winrt.system.Array[_uuid.UUID], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInspectable(System.Object)
    def create_inspectable(cls, value: winrt.system.Object, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInspectableArray(System.Object[])
    def create_inspectable_array(cls, value: typing.Union[winrt.system.Array[winrt.system.Object], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInt16(System.Int16)
    def create_int16(cls, value: winrt.system.Int16, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInt16Array(System.Int16[])
    def create_int16_array(cls, value: typing.Union[winrt.system.Array[winrt.system.Int16], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInt32(System.Int32)
    def create_int32(cls, value: winrt.system.Int32, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInt32Array(System.Int32[])
    def create_int32_array(cls, value: typing.Union[winrt.system.Array[winrt.system.Int32], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInt64(System.Int64)
    def create_int64(cls, value: winrt.system.Int64, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateInt64Array(System.Int64[])
    def create_int64_array(cls, value: typing.Union[winrt.system.Array[winrt.system.Int64], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreatePoint(Windows.Foundation.Point)
    def create_point(cls, value: typing.Union[Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreatePointArray(Windows.Foundation.Point[])
    def create_point_array(cls, value: typing.Union[winrt.system.Array[Point], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateRect(Windows.Foundation.Rect)
    def create_rect(cls, value: typing.Union[Rect, typing.Tuple[winrt.system.Single, winrt.system.Single, winrt.system.Single, winrt.system.Single]], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateRectArray(Windows.Foundation.Rect[])
    def create_rect_array(cls, value: typing.Union[winrt.system.Array[Rect], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateSingle(System.Single)
    def create_single(cls, value: winrt.system.Single, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateSingleArray(System.Single[])
    def create_single_array(cls, value: typing.Union[winrt.system.Array[winrt.system.Single], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateSize(Windows.Foundation.Size)
    def create_size(cls, value: typing.Union[Size, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateSizeArray(Windows.Foundation.Size[])
    def create_size_array(cls, value: typing.Union[winrt.system.Array[Size], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateString(System.String)
    def create_string(cls, value: str, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateStringArray(System.String[])
    def create_string_array(cls, value: typing.Union[winrt.system.Array[str], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateTimeSpan(Windows.Foundation.TimeSpan)
    def create_time_span(cls, value: datetime.timedelta, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateTimeSpanArray(Windows.Foundation.TimeSpan[])
    def create_time_span_array(cls, value: typing.Union[winrt.system.Array[datetime.timedelta], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt16(System.UInt16)
    def create_uint16(cls, value: winrt.system.UInt16, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt16Array(System.UInt16[])
    def create_uint16_array(cls, value: typing.Union[winrt.system.Array[winrt.system.UInt16], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt32(System.UInt32)
    def create_uint32(cls, value: winrt.system.UInt32, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt32Array(System.UInt32[])
    def create_uint32_array(cls, value: typing.Union[winrt.system.Array[winrt.system.UInt32], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt64(System.UInt64)
    def create_uint64(cls, value: winrt.system.UInt64, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt64Array(System.UInt64[])
    def create_uint64_array(cls, value: typing.Union[winrt.system.Array[winrt.system.UInt64], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt8(System.Byte)
    def create_uint8(cls, value: winrt.system.UInt8, /) -> winrt.system.Object: ...
    # System.Object Windows.Foundation.PropertyValue::CreateUInt8Array(System.Byte[])
    def create_uint8_array(cls, value: typing.Union[winrt.system.Array[winrt.system.UInt8], winrt.system.ReadableBuffer], /) -> winrt.system.Object: ...

@typing.final
class PropertyValue(winrt.system.Object, metaclass=PropertyValue_Static):
    pass

@typing.final
class Uri_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.Foundation.Uri::EscapeComponent(System.String)
    def escape_component(cls, to_escape: str, /) -> str: ...
    # System.String Windows.Foundation.Uri::UnescapeComponent(System.String)
    def unescape_component(cls, to_unescape: str, /) -> str: ...

@typing.final
class Uri(winrt.system.Object, IStringable, metaclass=Uri_Static):
    def __str__(self) -> str: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], uri: str) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], base_uri: str, relative_uri: str) -> Self: ...
    # Windows.Foundation.Uri Windows.Foundation.Uri::CombineUri(System.String)
    def combine_uri(self, relative_uri: str, /) -> Uri: ...
    # System.Boolean Windows.Foundation.Uri::Equals(Windows.Foundation.Uri)
    def equals(self, p_uri: Uri, /) -> bool: ...
    # System.String Windows.Foundation.Uri::ToString()
    def to_string(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_AbsoluteUri()
    @_property
    def absolute_uri(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_DisplayUri()
    @_property
    def display_uri(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_Domain()
    @_property
    def domain(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_Extension()
    @_property
    def extension(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_Fragment()
    @_property
    def fragment(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_Host()
    @_property
    def host(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_Password()
    @_property
    def password(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_Path()
    @_property
    def path(self) -> str: ...
    # System.Int32 Windows.Foundation.Uri::get_Port()
    @_property
    def port(self) -> winrt.system.Int32: ...
    # System.String Windows.Foundation.Uri::get_Query()
    @_property
    def query(self) -> str: ...
    # Windows.Foundation.WwwFormUrlDecoder Windows.Foundation.Uri::get_QueryParsed()
    @_property
    def query_parsed(self) -> WwwFormUrlDecoder: ...
    # System.String Windows.Foundation.Uri::get_RawUri()
    @_property
    def raw_uri(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_SchemeName()
    @_property
    def scheme_name(self) -> str: ...
    # System.Boolean Windows.Foundation.Uri::get_Suspicious()
    @_property
    def suspicious(self) -> bool: ...
    # System.String Windows.Foundation.Uri::get_UserName()
    @_property
    def user_name(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_AbsoluteCanonicalUri()
    @_property
    def absolute_canonical_uri(self) -> str: ...
    # System.String Windows.Foundation.Uri::get_DisplayIri()
    @_property
    def display_iri(self) -> str: ...

@typing.final
class WwwFormUrlDecoder(winrt.system.Object, winrt._winrt.Sequence[IWwwFormUrlDecoderEntry]):
    def __len__(self) -> int: ...
    def __iter__(self) -> typing.Iterator[IWwwFormUrlDecoderEntry]: ...
    @typing.overload
    def __getitem__(self, index: typing.SupportsIndex) -> IWwwFormUrlDecoderEntry: ...
    @typing.overload
    def __getitem__(self, index: slice) -> winrt.system.Array[IWwwFormUrlDecoderEntry]: ...
    def __new__(cls: typing.Type[Self], query: str) -> Self: ...
    # Windows.Foundation.Collections.IIterator`1<Windows.Foundation.IWwwFormUrlDecoderEntry> Windows.Foundation.WwwFormUrlDecoder::First()
    def first(self) -> windows_foundation_collections.IIterator[IWwwFormUrlDecoderEntry]: ...
    # Windows.Foundation.IWwwFormUrlDecoderEntry Windows.Foundation.WwwFormUrlDecoder::GetAt(System.UInt32)
    def get_at(self, index: winrt.system.UInt32, /) -> IWwwFormUrlDecoderEntry: ...
    # System.String Windows.Foundation.WwwFormUrlDecoder::GetFirstValueByName(System.String)
    def get_first_value_by_name(self, name: str, /) -> str: ...
    # System.UInt32 Windows.Foundation.WwwFormUrlDecoder::GetMany(System.UInt32,Windows.Foundation.IWwwFormUrlDecoderEntry[])
    def get_many(self, start_index: winrt.system.UInt32, items: typing.Union[winrt.system.Array[IWwwFormUrlDecoderEntry], winrt.system.WriteableBuffer], /) -> winrt.system.UInt32: ...
    # System.Boolean Windows.Foundation.WwwFormUrlDecoder::IndexOf(Windows.Foundation.IWwwFormUrlDecoderEntry,System.UInt32&)
    def index_of(self, value: IWwwFormUrlDecoderEntry, /) -> typing.Tuple[bool, winrt.system.UInt32]: ...
    # System.UInt32 Windows.Foundation.WwwFormUrlDecoder::get_Size()
    @_property
    def size(self) -> winrt.system.UInt32: ...

@typing.final
class WwwFormUrlDecoderEntry(winrt.system.Object, IWwwFormUrlDecoderEntry):
    # System.String Windows.Foundation.WwwFormUrlDecoderEntry::get_Name()
    @_property
    def name(self) -> str: ...
    # System.String Windows.Foundation.WwwFormUrlDecoderEntry::get_Value()
    @_property
    def value(self) -> str: ...

@typing.final
class _IAsyncAction: ...

class IAsyncAction(IAsyncInfo, winrt._winrt.IInspectable):
    @typing.final
    def __await__(self) -> typing.Generator[typing.Any, None, None]: ...
    @typing.final
    def get(self) -> None: ...
    @typing.final
    def wait(self, timeout: float) -> AsyncStatus: ...
    # System.Void Windows.Foundation.IAsyncAction::GetResults()
    @abstractmethod
    def get_results(self) -> None: ...
    # Windows.Foundation.AsyncActionCompletedHandler Windows.Foundation.IAsyncAction::get_Completed()
    @_property
    @abstractmethod
    def completed(self) -> AsyncActionCompletedHandler: ...
    # System.Void Windows.Foundation.IAsyncAction::put_Completed(Windows.Foundation.AsyncActionCompletedHandler)
    @completed.setter
    @abstractmethod
    def completed(self, value: AsyncActionCompletedHandler) -> None: ...

@typing.final
class _IAsyncActionWithProgress: ...

class IAsyncActionWithProgress(IAsyncInfo, typing.Generic[TProgress], winrt._winrt.IInspectable):
    @typing.final
    def __await__(self) -> typing.Generator[typing.Any, None, None]: ...
    @typing.final
    def get(self) -> None: ...
    @typing.final
    def wait(self, timeout: float) -> AsyncStatus: ...
    # System.Void Windows.Foundation.IAsyncActionWithProgress`1::GetResults()
    @abstractmethod
    def get_results(self) -> None: ...
    # Windows.Foundation.AsyncActionProgressHandler`1<TProgress> Windows.Foundation.IAsyncActionWithProgress`1::get_Progress()
    @_property
    @abstractmethod
    def progress(self) -> AsyncActionProgressHandler[TProgress]: ...
    # System.Void Windows.Foundation.IAsyncActionWithProgress`1::put_Progress(Windows.Foundation.AsyncActionProgressHandler`1<TProgress>)
    @progress.setter
    @abstractmethod
    def progress(self, value: AsyncActionProgressHandler[TProgress]) -> None: ...
    # Windows.Foundation.AsyncActionWithProgressCompletedHandler`1<TProgress> Windows.Foundation.IAsyncActionWithProgress`1::get_Completed()
    @_property
    @abstractmethod
    def completed(self) -> AsyncActionWithProgressCompletedHandler[TProgress]: ...
    # System.Void Windows.Foundation.IAsyncActionWithProgress`1::put_Completed(Windows.Foundation.AsyncActionWithProgressCompletedHandler`1<TProgress>)
    @completed.setter
    @abstractmethod
    def completed(self, value: AsyncActionWithProgressCompletedHandler[TProgress]) -> None: ...

@typing.final
class _IAsyncInfo: ...

class IAsyncInfo(winrt._winrt.IInspectable):
    # System.Void Windows.Foundation.IAsyncInfo::Cancel()
    @abstractmethod
    def cancel(self) -> None: ...
    # System.Void Windows.Foundation.IAsyncInfo::Close()
    @abstractmethod
    def close(self) -> None: ...
    # Windows.Foundation.HResult Windows.Foundation.IAsyncInfo::get_ErrorCode()
    @_property
    @abstractmethod
    def error_code(self) -> HResult: ...
    # System.UInt32 Windows.Foundation.IAsyncInfo::get_Id()
    @_property
    @abstractmethod
    def id(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.AsyncStatus Windows.Foundation.IAsyncInfo::get_Status()
    @_property
    @abstractmethod
    def status(self) -> AsyncStatus: ...

@typing.final
class _IAsyncOperationWithProgress: ...

class IAsyncOperationWithProgress(IAsyncInfo, typing.Generic[TResult, TProgress], winrt._winrt.IInspectable):
    @typing.final
    def __await__(self) -> typing.Generator[typing.Any, None, TResult]: ...
    @typing.final
    def get(self) -> TResult: ...
    @typing.final
    def wait(self, timeout: float) -> AsyncStatus: ...
    # TResult Windows.Foundation.IAsyncOperationWithProgress`2::GetResults()
    @abstractmethod
    def get_results(self) -> TResult: ...
    # Windows.Foundation.AsyncOperationProgressHandler`2<TResult,TProgress> Windows.Foundation.IAsyncOperationWithProgress`2::get_Progress()
    @_property
    @abstractmethod
    def progress(self) -> AsyncOperationProgressHandler[TResult, TProgress]: ...
    # System.Void Windows.Foundation.IAsyncOperationWithProgress`2::put_Progress(Windows.Foundation.AsyncOperationProgressHandler`2<TResult,TProgress>)
    @progress.setter
    @abstractmethod
    def progress(self, value: AsyncOperationProgressHandler[TResult, TProgress]) -> None: ...
    # Windows.Foundation.AsyncOperationWithProgressCompletedHandler`2<TResult,TProgress> Windows.Foundation.IAsyncOperationWithProgress`2::get_Completed()
    @_property
    @abstractmethod
    def completed(self) -> AsyncOperationWithProgressCompletedHandler[TResult, TProgress]: ...
    # System.Void Windows.Foundation.IAsyncOperationWithProgress`2::put_Completed(Windows.Foundation.AsyncOperationWithProgressCompletedHandler`2<TResult,TProgress>)
    @completed.setter
    @abstractmethod
    def completed(self, value: AsyncOperationWithProgressCompletedHandler[TResult, TProgress]) -> None: ...

@typing.final
class _IAsyncOperation: ...

class IAsyncOperation(IAsyncInfo, typing.Generic[TResult], winrt._winrt.IInspectable):
    @typing.final
    def __await__(self) -> typing.Generator[typing.Any, None, TResult]: ...
    @typing.final
    def get(self) -> TResult: ...
    @typing.final
    def wait(self, timeout: float) -> AsyncStatus: ...
    # TResult Windows.Foundation.IAsyncOperation`1::GetResults()
    @abstractmethod
    def get_results(self) -> TResult: ...
    # Windows.Foundation.AsyncOperationCompletedHandler`1<TResult> Windows.Foundation.IAsyncOperation`1::get_Completed()
    @_property
    @abstractmethod
    def completed(self) -> AsyncOperationCompletedHandler[TResult]: ...
    # System.Void Windows.Foundation.IAsyncOperation`1::put_Completed(Windows.Foundation.AsyncOperationCompletedHandler`1<TResult>)
    @completed.setter
    @abstractmethod
    def completed(self, value: AsyncOperationCompletedHandler[TResult]) -> None: ...

@typing.final
class _IClosable: ...

class IClosable(winrt._winrt.IInspectable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.Foundation.IClosable::Close()
    @abstractmethod
    def close(self) -> None: ...

@typing.final
class _IGetActivationFactory: ...

class IGetActivationFactory(winrt._winrt.IInspectable):
    # System.Object Windows.Foundation.IGetActivationFactory::GetActivationFactory(System.String)
    @abstractmethod
    def get_activation_factory(self, activatable_class_id: str, /) -> winrt.system.Object: ...

@typing.final
class _IMemoryBuffer: ...

class IMemoryBuffer(IClosable, winrt._winrt.IInspectable):
    # Windows.Foundation.IMemoryBufferReference Windows.Foundation.IMemoryBuffer::CreateReference()
    @abstractmethod
    def create_reference(self) -> IMemoryBufferReference: ...

@typing.final
class _IMemoryBufferReference: ...

class IMemoryBufferReference(IClosable, winrt._winrt.IInspectable):
    def __buffer__(self, flags: int, /) -> memoryview: ...
    def __release_buffer__(self, view: memoryview, /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Foundation.IMemoryBufferReference::add_Closed(Windows.Foundation.TypedEventHandler`2<Windows.Foundation.IMemoryBufferReference,System.Object>)
    @abstractmethod
    def add_closed(self, handler: TypedEventHandler[IMemoryBufferReference, winrt.system.Object], /) -> EventRegistrationToken: ...
    # System.Void Windows.Foundation.IMemoryBufferReference::remove_Closed(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_closed(self, cookie: typing.Union[EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.UInt32 Windows.Foundation.IMemoryBufferReference::get_Capacity()
    @_property
    @abstractmethod
    def capacity(self) -> winrt.system.UInt32: ...

@typing.final
class _IPropertyValue: ...

class IPropertyValue(winrt._winrt.IInspectable):
    # System.Boolean Windows.Foundation.IPropertyValue::GetBoolean()
    @abstractmethod
    def get_boolean(self) -> bool: ...
    # System.Void Windows.Foundation.IPropertyValue::GetBooleanArray(System.Boolean[]&)
    @abstractmethod
    def get_boolean_array(self) -> winrt.system.Array[bool]: ...
    # System.Char Windows.Foundation.IPropertyValue::GetChar16()
    @abstractmethod
    def get_char16(self) -> winrt.system.Char16: ...
    # System.Void Windows.Foundation.IPropertyValue::GetChar16Array(System.Char[]&)
    @abstractmethod
    def get_char16_array(self) -> winrt.system.Array[winrt.system.Char16]: ...
    # Windows.Foundation.DateTime Windows.Foundation.IPropertyValue::GetDateTime()
    @abstractmethod
    def get_date_time(self) -> datetime.datetime: ...
    # System.Void Windows.Foundation.IPropertyValue::GetDateTimeArray(Windows.Foundation.DateTime[]&)
    @abstractmethod
    def get_date_time_array(self) -> winrt.system.Array[datetime.datetime]: ...
    # System.Double Windows.Foundation.IPropertyValue::GetDouble()
    @abstractmethod
    def get_double(self) -> winrt.system.Double: ...
    # System.Void Windows.Foundation.IPropertyValue::GetDoubleArray(System.Double[]&)
    @abstractmethod
    def get_double_array(self) -> winrt.system.Array[winrt.system.Double]: ...
    # System.Guid Windows.Foundation.IPropertyValue::GetGuid()
    @abstractmethod
    def get_guid(self) -> _uuid.UUID: ...
    # System.Void Windows.Foundation.IPropertyValue::GetGuidArray(System.Guid[]&)
    @abstractmethod
    def get_guid_array(self) -> winrt.system.Array[_uuid.UUID]: ...
    # System.Void Windows.Foundation.IPropertyValue::GetInspectableArray(System.Object[]&)
    @abstractmethod
    def get_inspectable_array(self) -> winrt.system.Array[winrt.system.Object]: ...
    # System.Int16 Windows.Foundation.IPropertyValue::GetInt16()
    @abstractmethod
    def get_int16(self) -> winrt.system.Int16: ...
    # System.Void Windows.Foundation.IPropertyValue::GetInt16Array(System.Int16[]&)
    @abstractmethod
    def get_int16_array(self) -> winrt.system.Array[winrt.system.Int16]: ...
    # System.Int32 Windows.Foundation.IPropertyValue::GetInt32()
    @abstractmethod
    def get_int32(self) -> winrt.system.Int32: ...
    # System.Void Windows.Foundation.IPropertyValue::GetInt32Array(System.Int32[]&)
    @abstractmethod
    def get_int32_array(self) -> winrt.system.Array[winrt.system.Int32]: ...
    # System.Int64 Windows.Foundation.IPropertyValue::GetInt64()
    @abstractmethod
    def get_int64(self) -> winrt.system.Int64: ...
    # System.Void Windows.Foundation.IPropertyValue::GetInt64Array(System.Int64[]&)
    @abstractmethod
    def get_int64_array(self) -> winrt.system.Array[winrt.system.Int64]: ...
    # Windows.Foundation.Point Windows.Foundation.IPropertyValue::GetPoint()
    @abstractmethod
    def get_point(self) -> Point: ...
    # System.Void Windows.Foundation.IPropertyValue::GetPointArray(Windows.Foundation.Point[]&)
    @abstractmethod
    def get_point_array(self) -> winrt.system.Array[Point]: ...
    # Windows.Foundation.Rect Windows.Foundation.IPropertyValue::GetRect()
    @abstractmethod
    def get_rect(self) -> Rect: ...
    # System.Void Windows.Foundation.IPropertyValue::GetRectArray(Windows.Foundation.Rect[]&)
    @abstractmethod
    def get_rect_array(self) -> winrt.system.Array[Rect]: ...
    # System.Single Windows.Foundation.IPropertyValue::GetSingle()
    @abstractmethod
    def get_single(self) -> winrt.system.Single: ...
    # System.Void Windows.Foundation.IPropertyValue::GetSingleArray(System.Single[]&)
    @abstractmethod
    def get_single_array(self) -> winrt.system.Array[winrt.system.Single]: ...
    # Windows.Foundation.Size Windows.Foundation.IPropertyValue::GetSize()
    @abstractmethod
    def get_size(self) -> Size: ...
    # System.Void Windows.Foundation.IPropertyValue::GetSizeArray(Windows.Foundation.Size[]&)
    @abstractmethod
    def get_size_array(self) -> winrt.system.Array[Size]: ...
    # System.String Windows.Foundation.IPropertyValue::GetString()
    @abstractmethod
    def get_string(self) -> str: ...
    # System.Void Windows.Foundation.IPropertyValue::GetStringArray(System.String[]&)
    @abstractmethod
    def get_string_array(self) -> winrt.system.Array[str]: ...
    # Windows.Foundation.TimeSpan Windows.Foundation.IPropertyValue::GetTimeSpan()
    @abstractmethod
    def get_time_span(self) -> datetime.timedelta: ...
    # System.Void Windows.Foundation.IPropertyValue::GetTimeSpanArray(Windows.Foundation.TimeSpan[]&)
    @abstractmethod
    def get_time_span_array(self) -> winrt.system.Array[datetime.timedelta]: ...
    # System.UInt16 Windows.Foundation.IPropertyValue::GetUInt16()
    @abstractmethod
    def get_uint16(self) -> winrt.system.UInt16: ...
    # System.Void Windows.Foundation.IPropertyValue::GetUInt16Array(System.UInt16[]&)
    @abstractmethod
    def get_uint16_array(self) -> winrt.system.Array[winrt.system.UInt16]: ...
    # System.UInt32 Windows.Foundation.IPropertyValue::GetUInt32()
    @abstractmethod
    def get_uint32(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Foundation.IPropertyValue::GetUInt32Array(System.UInt32[]&)
    @abstractmethod
    def get_uint32_array(self) -> winrt.system.Array[winrt.system.UInt32]: ...
    # System.UInt64 Windows.Foundation.IPropertyValue::GetUInt64()
    @abstractmethod
    def get_uint64(self) -> winrt.system.UInt64: ...
    # System.Void Windows.Foundation.IPropertyValue::GetUInt64Array(System.UInt64[]&)
    @abstractmethod
    def get_uint64_array(self) -> winrt.system.Array[winrt.system.UInt64]: ...
    # System.Byte Windows.Foundation.IPropertyValue::GetUInt8()
    @abstractmethod
    def get_uint8(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Foundation.IPropertyValue::GetUInt8Array(System.Byte[]&)
    @abstractmethod
    def get_uint8_array(self) -> winrt.system.Array[winrt.system.UInt8]: ...
    # System.Boolean Windows.Foundation.IPropertyValue::get_IsNumericScalar()
    @_property
    @abstractmethod
    def is_numeric_scalar(self) -> bool: ...
    # Windows.Foundation.PropertyType Windows.Foundation.IPropertyValue::get_Type()
    @_property
    @abstractmethod
    def type(self) -> PropertyType: ...

@typing.final
class _IReferenceArray: ...

class IReferenceArray(IPropertyValue, typing.Generic[T], winrt._winrt.IInspectable):
    # T[] Windows.Foundation.IReferenceArray`1::get_Value()
    @_property
    @abstractmethod
    def value(self) -> T: ...

@typing.final
class _IReference: ...

class IReference(IPropertyValue, typing.Generic[T], winrt._winrt.IInspectable):
    # T Windows.Foundation.IReference`1::get_Value()
    @_property
    @abstractmethod
    def value(self) -> T: ...

@typing.final
class _IStringable: ...

class IStringable(winrt._winrt.IInspectable):
    def __str__(self) -> str: ...
    # System.String Windows.Foundation.IStringable::ToString()
    @abstractmethod
    def to_string(self) -> str: ...

@typing.final
class _IWwwFormUrlDecoderEntry: ...

class IWwwFormUrlDecoderEntry(winrt._winrt.IInspectable):
    # System.String Windows.Foundation.IWwwFormUrlDecoderEntry::get_Name()
    @_property
    @abstractmethod
    def name(self) -> str: ...
    # System.String Windows.Foundation.IWwwFormUrlDecoderEntry::get_Value()
    @_property
    @abstractmethod
    def value(self) -> str: ...

