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

import enum
import typing
import uuid

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

class AsyncStatus(enum.IntEnum):
    CANCELED = 2
    COMPLETED = 1
    ERROR = 3
    STARTED = 0

class PropertyType(enum.IntEnum):
    EMPTY = 0
    UINT8 = 1
    INT16 = 2
    UINT16 = 3
    INT32 = 4
    UINT32 = 5
    INT64 = 6
    UINT64 = 7
    SINGLE = 8
    DOUBLE = 9
    CHAR16 = 10
    BOOLEAN = 11
    STRING = 12
    INSPECTABLE = 13
    DATE_TIME = 14
    TIME_SPAN = 15
    GUID = 16
    POINT = 17
    SIZE = 18
    RECT = 19
    OTHER_TYPE = 20
    UINT8_ARRAY = 1025
    INT16_ARRAY = 1026
    UINT16_ARRAY = 1027
    INT32_ARRAY = 1028
    UINT32_ARRAY = 1029
    INT64_ARRAY = 1030
    UINT64_ARRAY = 1031
    SINGLE_ARRAY = 1032
    DOUBLE_ARRAY = 1033
    CHAR16_ARRAY = 1034
    BOOLEAN_ARRAY = 1035
    STRING_ARRAY = 1036
    INSPECTABLE_ARRAY = 1037
    DATE_TIME_ARRAY = 1038
    TIME_SPAN_ARRAY = 1039
    GUID_ARRAY = 1040
    POINT_ARRAY = 1041
    SIZE_ARRAY = 1042
    RECT_ARRAY = 1043
    OTHER_TYPE_ARRAY = 1044

class DateTime(_winrt.winrt_base):
    ...

class EventRegistrationToken(_winrt.winrt_base):
    ...

class HResult(_winrt.winrt_base):
    ...

class Point(_winrt.winrt_base):
    ...

class Rect(_winrt.winrt_base):
    ...

class Size(_winrt.winrt_base):
    ...

class TimeSpan(_winrt.winrt_base):
    ...

class Deferral(IClosable, typing.ContextManager[Deferral], _winrt.winrt_base):
    ...
    def complete() -> None:
        ...
    def close() -> None:
        ...

class GuidHelper(_winrt.winrt_base):
    ...
    empty: uuid.UUID
    def create_new_guid() -> uuid.UUID:
        ...
    def equals(target: uuid.UUID, value: uuid.UUID) -> bool:
        ...

class MemoryBuffer(IMemoryBuffer, IClosable, typing.ContextManager[MemoryBuffer], _winrt.winrt_base):
    ...
    def create_reference() -> IMemoryBufferReference:
        ...
    def close() -> None:
        ...

class PropertyValue(_winrt.winrt_base):
    ...
    def create_empty() -> _winrt.winrt_base:
        ...
    def create_uint8(value: int) -> _winrt.winrt_base:
        ...
    def create_int16(value: int) -> _winrt.winrt_base:
        ...
    def create_uint16(value: int) -> _winrt.winrt_base:
        ...
    def create_int32(value: int) -> _winrt.winrt_base:
        ...
    def create_uint32(value: int) -> _winrt.winrt_base:
        ...
    def create_int64(value: int) -> _winrt.winrt_base:
        ...
    def create_uint64(value: int) -> _winrt.winrt_base:
        ...
    def create_single(value: float) -> _winrt.winrt_base:
        ...
    def create_double(value: float) -> _winrt.winrt_base:
        ...
    def create_char16(value: int) -> _winrt.winrt_base:
        ...
    def create_boolean(value: bool) -> _winrt.winrt_base:
        ...
    def create_string(value: str) -> _winrt.winrt_base:
        ...
    def create_inspectable(value: _winrt.winrt_base) -> _winrt.winrt_base:
        ...
    def create_guid(value: uuid.UUID) -> _winrt.winrt_base:
        ...
    def create_date_time(value: DateTime) -> _winrt.winrt_base:
        ...
    def create_time_span(value: TimeSpan) -> _winrt.winrt_base:
        ...
    def create_point(value: Point) -> _winrt.winrt_base:
        ...
    def create_size(value: Size) -> _winrt.winrt_base:
        ...
    def create_rect(value: Rect) -> _winrt.winrt_base:
        ...
    def create_uint8_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_int16_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_uint16_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_int32_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_uint32_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_int64_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_uint64_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_single_array(value: typing.Sequence[float]) -> _winrt.winrt_base:
        ...
    def create_double_array(value: typing.Sequence[float]) -> _winrt.winrt_base:
        ...
    def create_char16_array(value: typing.Sequence[int]) -> _winrt.winrt_base:
        ...
    def create_boolean_array(value: typing.Sequence[bool]) -> _winrt.winrt_base:
        ...
    def create_string_array(value: typing.Sequence[str]) -> _winrt.winrt_base:
        ...
    def create_inspectable_array(value: typing.Sequence[_winrt.winrt_base]) -> _winrt.winrt_base:
        ...
    def create_guid_array(value: typing.Sequence[uuid.UUID]) -> _winrt.winrt_base:
        ...
    def create_date_time_array(value: typing.Sequence[DateTime]) -> _winrt.winrt_base:
        ...
    def create_time_span_array(value: typing.Sequence[TimeSpan]) -> _winrt.winrt_base:
        ...
    def create_point_array(value: typing.Sequence[Point]) -> _winrt.winrt_base:
        ...
    def create_size_array(value: typing.Sequence[Size]) -> _winrt.winrt_base:
        ...
    def create_rect_array(value: typing.Sequence[Rect]) -> _winrt.winrt_base:
        ...

class Uri(IStringable, _winrt.winrt_base):
    ...
    absolute_uri: str
    display_uri: str
    domain: str
    extension: str
    fragment: str
    host: str
    password: str
    path: str
    port: int
    query: str
    query_parsed: WwwFormUrlDecoder
    raw_uri: str
    scheme_name: str
    suspicious: bool
    user_name: str
    absolute_canonical_uri: str
    display_iri: str
    def equals(p_uri: Uri) -> bool:
        ...
    def combine_uri(relative_uri: str) -> Uri:
        ...
    def to_string() -> str:
        ...
    def unescape_component(to_unescape: str) -> str:
        ...
    def escape_component(to_escape: str) -> str:
        ...

class WwwFormUrlDecoder(bleak_winrt.windows.foundation.collections.IVectorView[IWwwFormUrlDecoderEntry], bleak_winrt.windows.foundation.collections.IIterable[IWwwFormUrlDecoderEntry], _winrt.winrt_base):
    ...
    size: int
    def get_first_value_by_name(name: str) -> str:
        ...
    def first() -> bleak_winrt.windows.foundation.collections.IIterator[IWwwFormUrlDecoderEntry]:
        ...
    def get_at(index: int) -> IWwwFormUrlDecoderEntry:
        ...
    def index_of(value: IWwwFormUrlDecoderEntry) -> typing.Tuple[bool, int]:
        ...
    def get_many(start_index: int, items_size: int) -> typing.Tuple[int, typing.List[IWwwFormUrlDecoderEntry]]:
        ...

class WwwFormUrlDecoderEntry(IWwwFormUrlDecoderEntry, _winrt.winrt_base):
    ...
    name: str
    value: str

class IAsyncAction(IAsyncInfo, typing.Awaitable[None], _winrt.winrt_base):
    ...
    completed: AsyncActionCompletedHandler
    error_code: HResult
    id: int
    status: AsyncStatus
    def get_results() -> None:
        ...
    def cancel() -> None:
        ...
    def close() -> None:
        ...

TProgress = typing.TypeVar('TProgress')

class IAsyncActionWithProgress(IAsyncInfo, typing.Awaitable[None], _winrt.winrt_base):
    ...
    progress: AsyncActionProgressHandler[TProgress]
    completed: AsyncActionWithProgressCompletedHandler[TProgress]
    error_code: HResult
    id: int
    status: AsyncStatus
    def get_results() -> None:
        ...
    def cancel() -> None:
        ...
    def close() -> None:
        ...

class IAsyncInfo(_winrt.winrt_base):
    ...
    error_code: HResult
    id: int
    status: AsyncStatus
    def cancel() -> None:
        ...
    def close() -> None:
        ...

TResult = typing.TypeVar('TResult')

TProgress = typing.TypeVar('TProgress')

class IAsyncOperationWithProgress(IAsyncInfo, typing.Awaitable[TResult], _winrt.winrt_base):
    ...
    progress: AsyncOperationProgressHandler[TResult, TProgress]
    completed: AsyncOperationWithProgressCompletedHandler[TResult, TProgress]
    error_code: HResult
    id: int
    status: AsyncStatus
    def get_results() -> TResult:
        ...
    def cancel() -> None:
        ...
    def close() -> None:
        ...

TResult = typing.TypeVar('TResult')

class IAsyncOperation(IAsyncInfo, typing.Awaitable[TResult], _winrt.winrt_base):
    ...
    completed: AsyncOperationCompletedHandler[TResult]
    error_code: HResult
    id: int
    status: AsyncStatus
    def get_results() -> TResult:
        ...
    def cancel() -> None:
        ...
    def close() -> None:
        ...

class IClosable(typing.ContextManager[IClosable], _winrt.winrt_base):
    ...
    def close() -> None:
        ...

class IGetActivationFactory(_winrt.winrt_base):
    ...
    def get_activation_factory(activatable_class_id: str) -> _winrt.winrt_base:
        ...

class IMemoryBuffer(IClosable, typing.ContextManager[IMemoryBuffer], _winrt.winrt_base):
    ...
    def create_reference() -> IMemoryBufferReference:
        ...
    def close() -> None:
        ...

class IMemoryBufferReference(IClosable, typing.ContextManager[IMemoryBufferReference], _winrt.winrt_base):
    ...
    capacity: int
    def close() -> None:
        ...
    def add_closed(handler: TypedEventHandler[IMemoryBufferReference, _winrt.winrt_base]) -> EventRegistrationToken:
        ...
    def remove_closed(cookie: EventRegistrationToken) -> None:
        ...

class IPropertyValue(_winrt.winrt_base):
    ...
    is_numeric_scalar: bool
    type: PropertyType
    def get_uint8() -> int:
        ...
    def get_int16() -> int:
        ...
    def get_uint16() -> int:
        ...
    def get_int32() -> int:
        ...
    def get_uint32() -> int:
        ...
    def get_int64() -> int:
        ...
    def get_uint64() -> int:
        ...
    def get_single() -> float:
        ...
    def get_double() -> float:
        ...
    def get_char16() -> int:
        ...
    def get_boolean() -> bool:
        ...
    def get_string() -> str:
        ...
    def get_guid() -> uuid.UUID:
        ...
    def get_date_time() -> DateTime:
        ...
    def get_time_span() -> TimeSpan:
        ...
    def get_point() -> Point:
        ...
    def get_size() -> Size:
        ...
    def get_rect() -> Rect:
        ...
    def get_uint8_array() -> typing.List[int]:
        ...
    def get_int16_array() -> typing.List[int]:
        ...
    def get_uint16_array() -> typing.List[int]:
        ...
    def get_int32_array() -> typing.List[int]:
        ...
    def get_uint32_array() -> typing.List[int]:
        ...
    def get_int64_array() -> typing.List[int]:
        ...
    def get_uint64_array() -> typing.List[int]:
        ...
    def get_single_array() -> typing.List[float]:
        ...
    def get_double_array() -> typing.List[float]:
        ...
    def get_char16_array() -> typing.List[int]:
        ...
    def get_boolean_array() -> typing.List[bool]:
        ...
    def get_string_array() -> typing.List[str]:
        ...
    def get_inspectable_array() -> typing.List[_winrt.winrt_base]:
        ...
    def get_guid_array() -> typing.List[uuid.UUID]:
        ...
    def get_date_time_array() -> typing.List[DateTime]:
        ...
    def get_time_span_array() -> typing.List[TimeSpan]:
        ...
    def get_point_array() -> typing.List[Point]:
        ...
    def get_size_array() -> typing.List[Size]:
        ...
    def get_rect_array() -> typing.List[Rect]:
        ...

T = typing.TypeVar('T')

class IReferenceArray(IPropertyValue, typing.Generic[T], _winrt.winrt_base):
    ...
    value: T
    is_numeric_scalar: bool
    type: PropertyType
    def get_uint8() -> int:
        ...
    def get_int16() -> int:
        ...
    def get_uint16() -> int:
        ...
    def get_int32() -> int:
        ...
    def get_uint32() -> int:
        ...
    def get_int64() -> int:
        ...
    def get_uint64() -> int:
        ...
    def get_single() -> float:
        ...
    def get_double() -> float:
        ...
    def get_char16() -> int:
        ...
    def get_boolean() -> bool:
        ...
    def get_string() -> str:
        ...
    def get_guid() -> uuid.UUID:
        ...
    def get_date_time() -> DateTime:
        ...
    def get_time_span() -> TimeSpan:
        ...
    def get_point() -> Point:
        ...
    def get_size() -> Size:
        ...
    def get_rect() -> Rect:
        ...
    def get_uint8_array() -> typing.List[int]:
        ...
    def get_int16_array() -> typing.List[int]:
        ...
    def get_uint16_array() -> typing.List[int]:
        ...
    def get_int32_array() -> typing.List[int]:
        ...
    def get_uint32_array() -> typing.List[int]:
        ...
    def get_int64_array() -> typing.List[int]:
        ...
    def get_uint64_array() -> typing.List[int]:
        ...
    def get_single_array() -> typing.List[float]:
        ...
    def get_double_array() -> typing.List[float]:
        ...
    def get_char16_array() -> typing.List[int]:
        ...
    def get_boolean_array() -> typing.List[bool]:
        ...
    def get_string_array() -> typing.List[str]:
        ...
    def get_inspectable_array() -> typing.List[_winrt.winrt_base]:
        ...
    def get_guid_array() -> typing.List[uuid.UUID]:
        ...
    def get_date_time_array() -> typing.List[DateTime]:
        ...
    def get_time_span_array() -> typing.List[TimeSpan]:
        ...
    def get_point_array() -> typing.List[Point]:
        ...
    def get_size_array() -> typing.List[Size]:
        ...
    def get_rect_array() -> typing.List[Rect]:
        ...

T = typing.TypeVar('T')

class IReference(IPropertyValue, typing.Generic[T], _winrt.winrt_base):
    ...
    value: T
    is_numeric_scalar: bool
    type: PropertyType
    def get_uint8() -> int:
        ...
    def get_int16() -> int:
        ...
    def get_uint16() -> int:
        ...
    def get_int32() -> int:
        ...
    def get_uint32() -> int:
        ...
    def get_int64() -> int:
        ...
    def get_uint64() -> int:
        ...
    def get_single() -> float:
        ...
    def get_double() -> float:
        ...
    def get_char16() -> int:
        ...
    def get_boolean() -> bool:
        ...
    def get_string() -> str:
        ...
    def get_guid() -> uuid.UUID:
        ...
    def get_date_time() -> DateTime:
        ...
    def get_time_span() -> TimeSpan:
        ...
    def get_point() -> Point:
        ...
    def get_size() -> Size:
        ...
    def get_rect() -> Rect:
        ...
    def get_uint8_array() -> typing.List[int]:
        ...
    def get_int16_array() -> typing.List[int]:
        ...
    def get_uint16_array() -> typing.List[int]:
        ...
    def get_int32_array() -> typing.List[int]:
        ...
    def get_uint32_array() -> typing.List[int]:
        ...
    def get_int64_array() -> typing.List[int]:
        ...
    def get_uint64_array() -> typing.List[int]:
        ...
    def get_single_array() -> typing.List[float]:
        ...
    def get_double_array() -> typing.List[float]:
        ...
    def get_char16_array() -> typing.List[int]:
        ...
    def get_boolean_array() -> typing.List[bool]:
        ...
    def get_string_array() -> typing.List[str]:
        ...
    def get_inspectable_array() -> typing.List[_winrt.winrt_base]:
        ...
    def get_guid_array() -> typing.List[uuid.UUID]:
        ...
    def get_date_time_array() -> typing.List[DateTime]:
        ...
    def get_time_span_array() -> typing.List[TimeSpan]:
        ...
    def get_point_array() -> typing.List[Point]:
        ...
    def get_size_array() -> typing.List[Size]:
        ...
    def get_rect_array() -> typing.List[Rect]:
        ...

class IStringable(_winrt.winrt_base):
    ...
    def to_string() -> str:
        ...

class IWwwFormUrlDecoderEntry(_winrt.winrt_base):
    ...
    name: str
    value: str

AsyncActionCompletedHandler = typing.Callable[[IAsyncAction, AsyncStatus], None]

TProgress = typing.TypeVar('TProgress')

AsyncActionProgressHandler = typing.Callable[[IAsyncActionWithProgress[TProgress], TProgress], None]

TProgress = typing.TypeVar('TProgress')

AsyncActionWithProgressCompletedHandler = typing.Callable[[IAsyncActionWithProgress[TProgress], AsyncStatus], None]

TResult = typing.TypeVar('TResult')

AsyncOperationCompletedHandler = typing.Callable[[IAsyncOperation[TResult], AsyncStatus], None]

TResult = typing.TypeVar('TResult')

TProgress = typing.TypeVar('TProgress')

AsyncOperationProgressHandler = typing.Callable[[IAsyncOperationWithProgress[TResult, TProgress], TProgress], None]

TResult = typing.TypeVar('TResult')

TProgress = typing.TypeVar('TProgress')

AsyncOperationWithProgressCompletedHandler = typing.Callable[[IAsyncOperationWithProgress[TResult, TProgress], AsyncStatus], None]

DeferralCompletedHandler = typing.Callable[[], None]

T = typing.TypeVar('T')

EventHandler = typing.Callable[[_winrt.winrt_base, T], None]

TSender = typing.TypeVar('TSender')

TResult = typing.TypeVar('TResult')

TypedEventHandler = typing.Callable[[TSender, TResult], None]

