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

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 as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.storage as windows_storage
import winrt.windows.system as windows_system

from winrt.windows.storage.streams import ByteOrder, FileOpenDisposition, InputStreamOptions, UnicodeEncoding

Self = typing.TypeVar('Self')

@typing.final
class Buffer_Static(winrt._winrt.IInspectable_Static):
    # Windows.Storage.Streams.Buffer Windows.Storage.Streams.Buffer::CreateCopyFromMemoryBuffer(Windows.Foundation.IMemoryBuffer)
    def create_copy_from_memory_buffer(cls, input: windows_foundation.IMemoryBuffer, /) -> Buffer: ...
    # Windows.Foundation.MemoryBuffer Windows.Storage.Streams.Buffer::CreateMemoryBufferOverIBuffer(Windows.Storage.Streams.IBuffer)
    def create_memory_buffer_over_ibuffer(cls, input: winrt.system.Buffer, /) -> windows_foundation.MemoryBuffer: ...

@typing.final
class Buffer(winrt.system.Object, IBuffer, metaclass=Buffer_Static):
    def __buffer__(self, flags: int, /) -> memoryview: ...
    def __release_buffer__(self, view: memoryview, /) -> None: ...
    def __new__(cls: typing.Type[Self], capacity: winrt.system.UInt32) -> Self: ...
    # System.UInt32 Windows.Storage.Streams.Buffer::get_Length()
    @_property
    def length(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Storage.Streams.Buffer::put_Length(System.UInt32)
    @length.setter
    def length(self, value: winrt.system.UInt32) -> None: ...
    # System.UInt32 Windows.Storage.Streams.Buffer::get_Capacity()
    @_property
    def capacity(self) -> winrt.system.UInt32: ...

@typing.final
class DataReader_Static(winrt._winrt.IInspectable_Static):
    # Windows.Storage.Streams.DataReader Windows.Storage.Streams.DataReader::FromBuffer(Windows.Storage.Streams.IBuffer)
    def from_buffer(cls, buffer: winrt.system.Buffer, /) -> DataReader: ...

@typing.final
class DataReader(winrt.system.Object, windows_foundation.IClosable, IDataReader, metaclass=DataReader_Static):
    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], input_stream: IInputStream) -> Self: ...
    # System.Void Windows.Storage.Streams.DataReader::Close()
    def close(self) -> None: ...
    # Windows.Storage.Streams.IBuffer Windows.Storage.Streams.DataReader::DetachBuffer()
    def detach_buffer(self) -> winrt.system.Buffer: ...
    # Windows.Storage.Streams.IInputStream Windows.Storage.Streams.DataReader::DetachStream()
    def detach_stream(self) -> IInputStream: ...
    # Windows.Storage.Streams.DataReaderLoadOperation Windows.Storage.Streams.DataReader::LoadAsync(System.UInt32)
    def load_async(self, count: winrt.system.UInt32, /) -> DataReaderLoadOperation: ...
    # System.Boolean Windows.Storage.Streams.DataReader::ReadBoolean()
    def read_boolean(self) -> bool: ...
    # Windows.Storage.Streams.IBuffer Windows.Storage.Streams.DataReader::ReadBuffer(System.UInt32)
    def read_buffer(self, length: winrt.system.UInt32, /) -> winrt.system.Buffer: ...
    # System.Byte Windows.Storage.Streams.DataReader::ReadByte()
    def read_byte(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Storage.Streams.DataReader::ReadBytes(System.Byte[])
    def read_bytes(self, value: typing.Union[winrt.system.Array[winrt.system.UInt8], winrt.system.WriteableBuffer], /) -> None: ...
    # Windows.Foundation.DateTime Windows.Storage.Streams.DataReader::ReadDateTime()
    def read_date_time(self) -> datetime.datetime: ...
    # System.Double Windows.Storage.Streams.DataReader::ReadDouble()
    def read_double(self) -> winrt.system.Double: ...
    # System.Guid Windows.Storage.Streams.DataReader::ReadGuid()
    def read_guid(self) -> _uuid.UUID: ...
    # System.Int16 Windows.Storage.Streams.DataReader::ReadInt16()
    def read_int16(self) -> winrt.system.Int16: ...
    # System.Int32 Windows.Storage.Streams.DataReader::ReadInt32()
    def read_int32(self) -> winrt.system.Int32: ...
    # System.Int64 Windows.Storage.Streams.DataReader::ReadInt64()
    def read_int64(self) -> winrt.system.Int64: ...
    # System.Single Windows.Storage.Streams.DataReader::ReadSingle()
    def read_single(self) -> winrt.system.Single: ...
    # System.String Windows.Storage.Streams.DataReader::ReadString(System.UInt32)
    def read_string(self, code_unit_count: winrt.system.UInt32, /) -> str: ...
    # Windows.Foundation.TimeSpan Windows.Storage.Streams.DataReader::ReadTimeSpan()
    def read_time_span(self) -> datetime.timedelta: ...
    # System.UInt16 Windows.Storage.Streams.DataReader::ReadUInt16()
    def read_uint16(self) -> winrt.system.UInt16: ...
    # System.UInt32 Windows.Storage.Streams.DataReader::ReadUInt32()
    def read_uint32(self) -> winrt.system.UInt32: ...
    # System.UInt64 Windows.Storage.Streams.DataReader::ReadUInt64()
    def read_uint64(self) -> winrt.system.UInt64: ...
    # Windows.Storage.Streams.UnicodeEncoding Windows.Storage.Streams.DataReader::get_UnicodeEncoding()
    @_property
    def unicode_encoding(self) -> UnicodeEncoding: ...
    # System.Void Windows.Storage.Streams.DataReader::put_UnicodeEncoding(Windows.Storage.Streams.UnicodeEncoding)
    @unicode_encoding.setter
    def unicode_encoding(self, value: UnicodeEncoding) -> None: ...
    # Windows.Storage.Streams.InputStreamOptions Windows.Storage.Streams.DataReader::get_InputStreamOptions()
    @_property
    def input_stream_options(self) -> InputStreamOptions: ...
    # System.Void Windows.Storage.Streams.DataReader::put_InputStreamOptions(Windows.Storage.Streams.InputStreamOptions)
    @input_stream_options.setter
    def input_stream_options(self, value: InputStreamOptions) -> None: ...
    # Windows.Storage.Streams.ByteOrder Windows.Storage.Streams.DataReader::get_ByteOrder()
    @_property
    def byte_order(self) -> ByteOrder: ...
    # System.Void Windows.Storage.Streams.DataReader::put_ByteOrder(Windows.Storage.Streams.ByteOrder)
    @byte_order.setter
    def byte_order(self, value: ByteOrder) -> None: ...
    # System.UInt32 Windows.Storage.Streams.DataReader::get_UnconsumedBufferLength()
    @_property
    def unconsumed_buffer_length(self) -> winrt.system.UInt32: ...

@typing.final
class DataReaderLoadOperation(winrt.system.Object, windows_foundation.IAsyncOperation[winrt.system.UInt32], windows_foundation.IAsyncInfo):
    # System.Void Windows.Storage.Streams.DataReaderLoadOperation::Cancel()
    def cancel(self) -> None: ...
    # System.Void Windows.Storage.Streams.DataReaderLoadOperation::Close()
    def close(self) -> None: ...
    # System.UInt32 Windows.Storage.Streams.DataReaderLoadOperation::GetResults()
    def get_results(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.HResult Windows.Storage.Streams.DataReaderLoadOperation::get_ErrorCode()
    @_property
    def error_code(self) -> windows_foundation.HResult: ...
    # System.UInt32 Windows.Storage.Streams.DataReaderLoadOperation::get_Id()
    @_property
    def id(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.AsyncStatus Windows.Storage.Streams.DataReaderLoadOperation::get_Status()
    @_property
    def status(self) -> windows_foundation.AsyncStatus: ...
    # Windows.Foundation.AsyncOperationCompletedHandler`1<System.UInt32> Windows.Storage.Streams.DataReaderLoadOperation::get_Completed()
    @_property
    def completed(self) -> windows_foundation.AsyncOperationCompletedHandler[winrt.system.UInt32]: ...
    # System.Void Windows.Storage.Streams.DataReaderLoadOperation::put_Completed(Windows.Foundation.AsyncOperationCompletedHandler`1<System.UInt32>)
    @completed.setter
    def completed(self, value: windows_foundation.AsyncOperationCompletedHandler[winrt.system.UInt32]) -> None: ...

@typing.final
class DataWriter(winrt.system.Object, windows_foundation.IClosable, IDataWriter):
    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: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], output_stream: IOutputStream) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Void Windows.Storage.Streams.DataWriter::Close()
    def close(self) -> None: ...
    # Windows.Storage.Streams.IBuffer Windows.Storage.Streams.DataWriter::DetachBuffer()
    def detach_buffer(self) -> winrt.system.Buffer: ...
    # Windows.Storage.Streams.IOutputStream Windows.Storage.Streams.DataWriter::DetachStream()
    def detach_stream(self) -> IOutputStream: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.DataWriter::FlushAsync()
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # System.UInt32 Windows.Storage.Streams.DataWriter::MeasureString(System.String)
    def measure_string(self, value: str, /) -> winrt.system.UInt32: ...
    # Windows.Storage.Streams.DataWriterStoreOperation Windows.Storage.Streams.DataWriter::StoreAsync()
    def store_async(self) -> DataWriterStoreOperation: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteBoolean(System.Boolean)
    def write_boolean(self, value: bool, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteBuffer(Windows.Storage.Streams.IBuffer)
    def write_buffer(self, buffer: winrt.system.Buffer, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteBuffer(Windows.Storage.Streams.IBuffer,System.UInt32,System.UInt32)
    def write_buffer_range(self, buffer: winrt.system.Buffer, start: winrt.system.UInt32, count: winrt.system.UInt32, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteByte(System.Byte)
    def write_byte(self, value: winrt.system.UInt8, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteBytes(System.Byte[])
    def write_bytes(self, value: typing.Union[winrt.system.Array[winrt.system.UInt8], winrt.system.ReadableBuffer], /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteDateTime(Windows.Foundation.DateTime)
    def write_date_time(self, value: datetime.datetime, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteDouble(System.Double)
    def write_double(self, value: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteGuid(System.Guid)
    def write_guid(self, value: _uuid.UUID, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteInt16(System.Int16)
    def write_int16(self, value: winrt.system.Int16, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteInt32(System.Int32)
    def write_int32(self, value: winrt.system.Int32, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteInt64(System.Int64)
    def write_int64(self, value: winrt.system.Int64, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteSingle(System.Single)
    def write_single(self, value: winrt.system.Single, /) -> None: ...
    # System.UInt32 Windows.Storage.Streams.DataWriter::WriteString(System.String)
    def write_string(self, value: str, /) -> winrt.system.UInt32: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteTimeSpan(Windows.Foundation.TimeSpan)
    def write_time_span(self, value: datetime.timedelta, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteUInt16(System.UInt16)
    def write_uint16(self, value: winrt.system.UInt16, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteUInt32(System.UInt32)
    def write_uint32(self, value: winrt.system.UInt32, /) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriter::WriteUInt64(System.UInt64)
    def write_uint64(self, value: winrt.system.UInt64, /) -> None: ...
    # Windows.Storage.Streams.UnicodeEncoding Windows.Storage.Streams.DataWriter::get_UnicodeEncoding()
    @_property
    def unicode_encoding(self) -> UnicodeEncoding: ...
    # System.Void Windows.Storage.Streams.DataWriter::put_UnicodeEncoding(Windows.Storage.Streams.UnicodeEncoding)
    @unicode_encoding.setter
    def unicode_encoding(self, value: UnicodeEncoding) -> None: ...
    # Windows.Storage.Streams.ByteOrder Windows.Storage.Streams.DataWriter::get_ByteOrder()
    @_property
    def byte_order(self) -> ByteOrder: ...
    # System.Void Windows.Storage.Streams.DataWriter::put_ByteOrder(Windows.Storage.Streams.ByteOrder)
    @byte_order.setter
    def byte_order(self, value: ByteOrder) -> None: ...
    # System.UInt32 Windows.Storage.Streams.DataWriter::get_UnstoredBufferLength()
    @_property
    def unstored_buffer_length(self) -> winrt.system.UInt32: ...

@typing.final
class DataWriterStoreOperation(winrt.system.Object, windows_foundation.IAsyncOperation[winrt.system.UInt32], windows_foundation.IAsyncInfo):
    # System.Void Windows.Storage.Streams.DataWriterStoreOperation::Cancel()
    def cancel(self) -> None: ...
    # System.Void Windows.Storage.Streams.DataWriterStoreOperation::Close()
    def close(self) -> None: ...
    # System.UInt32 Windows.Storage.Streams.DataWriterStoreOperation::GetResults()
    def get_results(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.HResult Windows.Storage.Streams.DataWriterStoreOperation::get_ErrorCode()
    @_property
    def error_code(self) -> windows_foundation.HResult: ...
    # System.UInt32 Windows.Storage.Streams.DataWriterStoreOperation::get_Id()
    @_property
    def id(self) -> winrt.system.UInt32: ...
    # Windows.Foundation.AsyncStatus Windows.Storage.Streams.DataWriterStoreOperation::get_Status()
    @_property
    def status(self) -> windows_foundation.AsyncStatus: ...
    # Windows.Foundation.AsyncOperationCompletedHandler`1<System.UInt32> Windows.Storage.Streams.DataWriterStoreOperation::get_Completed()
    @_property
    def completed(self) -> windows_foundation.AsyncOperationCompletedHandler[winrt.system.UInt32]: ...
    # System.Void Windows.Storage.Streams.DataWriterStoreOperation::put_Completed(Windows.Foundation.AsyncOperationCompletedHandler`1<System.UInt32>)
    @completed.setter
    def completed(self, value: windows_foundation.AsyncOperationCompletedHandler[winrt.system.UInt32]) -> None: ...

@typing.final
class FileInputStream(winrt.system.Object, IInputStream, windows_foundation.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: ...
    # System.Void Windows.Storage.Streams.FileInputStream::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Storage.Streams.IBuffer,System.UInt32> Windows.Storage.Streams.FileInputStream::ReadAsync(Windows.Storage.Streams.IBuffer,System.UInt32,Windows.Storage.Streams.InputStreamOptions)
    def read_async(self, buffer: winrt.system.Buffer, count: winrt.system.UInt32, options: InputStreamOptions, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.Buffer, winrt.system.UInt32]: ...

@typing.final
class FileOutputStream(winrt.system.Object, IOutputStream, windows_foundation.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: ...
    # System.Void Windows.Storage.Streams.FileOutputStream::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.FileOutputStream::FlushAsync()
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt32,System.UInt32> Windows.Storage.Streams.FileOutputStream::WriteAsync(Windows.Storage.Streams.IBuffer)
    def write_async(self, buffer: winrt.system.Buffer, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...

@typing.final
class FileRandomAccessStream_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IRandomAccessStream> Windows.Storage.Streams.FileRandomAccessStream::OpenAsync(System.String,Windows.Storage.FileAccessMode)
    def open_async(cls, file_path: str, access_mode: windows_storage.FileAccessMode, /) -> windows_foundation.IAsyncOperation[IRandomAccessStream]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IRandomAccessStream> Windows.Storage.Streams.FileRandomAccessStream::OpenForUserAsync(Windows.System.User,System.String,Windows.Storage.FileAccessMode)
    def open_for_user_async(cls, user: windows_system.User, file_path: str, access_mode: windows_storage.FileAccessMode, /) -> windows_foundation.IAsyncOperation[IRandomAccessStream]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IRandomAccessStream> Windows.Storage.Streams.FileRandomAccessStream::OpenForUserAsync(Windows.System.User,System.String,Windows.Storage.FileAccessMode,Windows.Storage.StorageOpenOptions,Windows.Storage.Streams.FileOpenDisposition)
    def open_for_user_with_options_async(cls, user: windows_system.User, file_path: str, access_mode: windows_storage.FileAccessMode, sharing_options: windows_storage.StorageOpenOptions, open_disposition: FileOpenDisposition, /) -> windows_foundation.IAsyncOperation[IRandomAccessStream]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.StorageStreamTransaction> Windows.Storage.Streams.FileRandomAccessStream::OpenTransactedWriteAsync(System.String)
    def open_transacted_write_async(cls, file_path: str, /) -> windows_foundation.IAsyncOperation[windows_storage.StorageStreamTransaction]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.StorageStreamTransaction> Windows.Storage.Streams.FileRandomAccessStream::OpenTransactedWriteForUserAsync(Windows.System.User,System.String)
    def open_transacted_write_for_user_async(cls, user: windows_system.User, file_path: str, /) -> windows_foundation.IAsyncOperation[windows_storage.StorageStreamTransaction]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.StorageStreamTransaction> Windows.Storage.Streams.FileRandomAccessStream::OpenTransactedWriteForUserAsync(Windows.System.User,System.String,Windows.Storage.StorageOpenOptions,Windows.Storage.Streams.FileOpenDisposition)
    def open_transacted_write_for_user_with_options_async(cls, user: windows_system.User, file_path: str, open_options: windows_storage.StorageOpenOptions, open_disposition: FileOpenDisposition, /) -> windows_foundation.IAsyncOperation[windows_storage.StorageStreamTransaction]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.StorageStreamTransaction> Windows.Storage.Streams.FileRandomAccessStream::OpenTransactedWriteAsync(System.String,Windows.Storage.StorageOpenOptions,Windows.Storage.Streams.FileOpenDisposition)
    def open_transacted_write_with_options_async(cls, file_path: str, open_options: windows_storage.StorageOpenOptions, open_disposition: FileOpenDisposition, /) -> windows_foundation.IAsyncOperation[windows_storage.StorageStreamTransaction]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IRandomAccessStream> Windows.Storage.Streams.FileRandomAccessStream::OpenAsync(System.String,Windows.Storage.FileAccessMode,Windows.Storage.StorageOpenOptions,Windows.Storage.Streams.FileOpenDisposition)
    def open_with_options_async(cls, file_path: str, access_mode: windows_storage.FileAccessMode, sharing_options: windows_storage.StorageOpenOptions, open_disposition: FileOpenDisposition, /) -> windows_foundation.IAsyncOperation[IRandomAccessStream]: ...

@typing.final
class FileRandomAccessStream(winrt.system.Object, IRandomAccessStream, IOutputStream, IInputStream, windows_foundation.IClosable, metaclass=FileRandomAccessStream_Static):
    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: ...
    # Windows.Storage.Streams.IRandomAccessStream Windows.Storage.Streams.FileRandomAccessStream::CloneStream()
    def clone_stream(self) -> IRandomAccessStream: ...
    # System.Void Windows.Storage.Streams.FileRandomAccessStream::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.FileRandomAccessStream::FlushAsync()
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Storage.Streams.IInputStream Windows.Storage.Streams.FileRandomAccessStream::GetInputStreamAt(System.UInt64)
    def get_input_stream_at(self, position: winrt.system.UInt64, /) -> IInputStream: ...
    # Windows.Storage.Streams.IOutputStream Windows.Storage.Streams.FileRandomAccessStream::GetOutputStreamAt(System.UInt64)
    def get_output_stream_at(self, position: winrt.system.UInt64, /) -> IOutputStream: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Storage.Streams.IBuffer,System.UInt32> Windows.Storage.Streams.FileRandomAccessStream::ReadAsync(Windows.Storage.Streams.IBuffer,System.UInt32,Windows.Storage.Streams.InputStreamOptions)
    def read_async(self, buffer: winrt.system.Buffer, count: winrt.system.UInt32, options: InputStreamOptions, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.Buffer, winrt.system.UInt32]: ...
    # System.Void Windows.Storage.Streams.FileRandomAccessStream::Seek(System.UInt64)
    def seek(self, position: winrt.system.UInt64, /) -> None: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt32,System.UInt32> Windows.Storage.Streams.FileRandomAccessStream::WriteAsync(Windows.Storage.Streams.IBuffer)
    def write_async(self, buffer: winrt.system.Buffer, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...
    # System.UInt64 Windows.Storage.Streams.FileRandomAccessStream::get_Size()
    @_property
    def size(self) -> winrt.system.UInt64: ...
    # System.Void Windows.Storage.Streams.FileRandomAccessStream::put_Size(System.UInt64)
    @size.setter
    def size(self, value: winrt.system.UInt64) -> None: ...
    # System.Boolean Windows.Storage.Streams.FileRandomAccessStream::get_CanRead()
    @_property
    def can_read(self) -> bool: ...
    # System.Boolean Windows.Storage.Streams.FileRandomAccessStream::get_CanWrite()
    @_property
    def can_write(self) -> bool: ...
    # System.UInt64 Windows.Storage.Streams.FileRandomAccessStream::get_Position()
    @_property
    def position(self) -> winrt.system.UInt64: ...

@typing.final
class InMemoryRandomAccessStream(winrt.system.Object, IRandomAccessStream, IOutputStream, IInputStream, windows_foundation.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]) -> Self: ...
    # Windows.Storage.Streams.IRandomAccessStream Windows.Storage.Streams.InMemoryRandomAccessStream::CloneStream()
    def clone_stream(self) -> IRandomAccessStream: ...
    # System.Void Windows.Storage.Streams.InMemoryRandomAccessStream::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.InMemoryRandomAccessStream::FlushAsync()
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Storage.Streams.IInputStream Windows.Storage.Streams.InMemoryRandomAccessStream::GetInputStreamAt(System.UInt64)
    def get_input_stream_at(self, position: winrt.system.UInt64, /) -> IInputStream: ...
    # Windows.Storage.Streams.IOutputStream Windows.Storage.Streams.InMemoryRandomAccessStream::GetOutputStreamAt(System.UInt64)
    def get_output_stream_at(self, position: winrt.system.UInt64, /) -> IOutputStream: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Storage.Streams.IBuffer,System.UInt32> Windows.Storage.Streams.InMemoryRandomAccessStream::ReadAsync(Windows.Storage.Streams.IBuffer,System.UInt32,Windows.Storage.Streams.InputStreamOptions)
    def read_async(self, buffer: winrt.system.Buffer, count: winrt.system.UInt32, options: InputStreamOptions, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.Buffer, winrt.system.UInt32]: ...
    # System.Void Windows.Storage.Streams.InMemoryRandomAccessStream::Seek(System.UInt64)
    def seek(self, position: winrt.system.UInt64, /) -> None: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt32,System.UInt32> Windows.Storage.Streams.InMemoryRandomAccessStream::WriteAsync(Windows.Storage.Streams.IBuffer)
    def write_async(self, buffer: winrt.system.Buffer, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...
    # System.UInt64 Windows.Storage.Streams.InMemoryRandomAccessStream::get_Size()
    @_property
    def size(self) -> winrt.system.UInt64: ...
    # System.Void Windows.Storage.Streams.InMemoryRandomAccessStream::put_Size(System.UInt64)
    @size.setter
    def size(self, value: winrt.system.UInt64) -> None: ...
    # System.Boolean Windows.Storage.Streams.InMemoryRandomAccessStream::get_CanRead()
    @_property
    def can_read(self) -> bool: ...
    # System.Boolean Windows.Storage.Streams.InMemoryRandomAccessStream::get_CanWrite()
    @_property
    def can_write(self) -> bool: ...
    # System.UInt64 Windows.Storage.Streams.InMemoryRandomAccessStream::get_Position()
    @_property
    def position(self) -> winrt.system.UInt64: ...

@typing.final
class InputStreamOverStream(winrt.system.Object, IInputStream, windows_foundation.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: ...
    # System.Void Windows.Storage.Streams.InputStreamOverStream::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Storage.Streams.IBuffer,System.UInt32> Windows.Storage.Streams.InputStreamOverStream::ReadAsync(Windows.Storage.Streams.IBuffer,System.UInt32,Windows.Storage.Streams.InputStreamOptions)
    def read_async(self, buffer: winrt.system.Buffer, count: winrt.system.UInt32, options: InputStreamOptions, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.Buffer, winrt.system.UInt32]: ...

@typing.final
class OutputStreamOverStream(winrt.system.Object, IOutputStream, windows_foundation.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: ...
    # System.Void Windows.Storage.Streams.OutputStreamOverStream::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.OutputStreamOverStream::FlushAsync()
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt32,System.UInt32> Windows.Storage.Streams.OutputStreamOverStream::WriteAsync(Windows.Storage.Streams.IBuffer)
    def write_async(self, buffer: winrt.system.Buffer, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...

@typing.final
class RandomAccessStream_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt64,System.UInt64> Windows.Storage.Streams.RandomAccessStream::CopyAndCloseAsync(Windows.Storage.Streams.IInputStream,Windows.Storage.Streams.IOutputStream)
    def copy_and_close_async(cls, source: IInputStream, destination: IOutputStream, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt64, winrt.system.UInt64]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt64,System.UInt64> Windows.Storage.Streams.RandomAccessStream::CopyAsync(Windows.Storage.Streams.IInputStream,Windows.Storage.Streams.IOutputStream)
    def copy_async(cls, source: IInputStream, destination: IOutputStream, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt64, winrt.system.UInt64]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt64,System.UInt64> Windows.Storage.Streams.RandomAccessStream::CopyAsync(Windows.Storage.Streams.IInputStream,Windows.Storage.Streams.IOutputStream,System.UInt64)
    def copy_size_async(cls, source: IInputStream, destination: IOutputStream, bytes_to_copy: winrt.system.UInt64, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt64, winrt.system.UInt64]: ...

@typing.final
class RandomAccessStream(winrt.system.Object, metaclass=RandomAccessStream_Static):
    pass

@typing.final
class RandomAccessStreamOverStream(winrt.system.Object, IRandomAccessStream, IOutputStream, IInputStream, windows_foundation.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: ...
    # Windows.Storage.Streams.IRandomAccessStream Windows.Storage.Streams.RandomAccessStreamOverStream::CloneStream()
    def clone_stream(self) -> IRandomAccessStream: ...
    # System.Void Windows.Storage.Streams.RandomAccessStreamOverStream::Close()
    def close(self) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.RandomAccessStreamOverStream::FlushAsync()
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Storage.Streams.IInputStream Windows.Storage.Streams.RandomAccessStreamOverStream::GetInputStreamAt(System.UInt64)
    def get_input_stream_at(self, position: winrt.system.UInt64, /) -> IInputStream: ...
    # Windows.Storage.Streams.IOutputStream Windows.Storage.Streams.RandomAccessStreamOverStream::GetOutputStreamAt(System.UInt64)
    def get_output_stream_at(self, position: winrt.system.UInt64, /) -> IOutputStream: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Storage.Streams.IBuffer,System.UInt32> Windows.Storage.Streams.RandomAccessStreamOverStream::ReadAsync(Windows.Storage.Streams.IBuffer,System.UInt32,Windows.Storage.Streams.InputStreamOptions)
    def read_async(self, buffer: winrt.system.Buffer, count: winrt.system.UInt32, options: InputStreamOptions, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.Buffer, winrt.system.UInt32]: ...
    # System.Void Windows.Storage.Streams.RandomAccessStreamOverStream::Seek(System.UInt64)
    def seek(self, position: winrt.system.UInt64, /) -> None: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt32,System.UInt32> Windows.Storage.Streams.RandomAccessStreamOverStream::WriteAsync(Windows.Storage.Streams.IBuffer)
    def write_async(self, buffer: winrt.system.Buffer, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...
    # System.UInt64 Windows.Storage.Streams.RandomAccessStreamOverStream::get_Size()
    @_property
    def size(self) -> winrt.system.UInt64: ...
    # System.Void Windows.Storage.Streams.RandomAccessStreamOverStream::put_Size(System.UInt64)
    @size.setter
    def size(self, value: winrt.system.UInt64) -> None: ...
    # System.Boolean Windows.Storage.Streams.RandomAccessStreamOverStream::get_CanRead()
    @_property
    def can_read(self) -> bool: ...
    # System.Boolean Windows.Storage.Streams.RandomAccessStreamOverStream::get_CanWrite()
    @_property
    def can_write(self) -> bool: ...
    # System.UInt64 Windows.Storage.Streams.RandomAccessStreamOverStream::get_Position()
    @_property
    def position(self) -> winrt.system.UInt64: ...

@typing.final
class RandomAccessStreamReference_Static(winrt._winrt.IInspectable_Static):
    # Windows.Storage.Streams.RandomAccessStreamReference Windows.Storage.Streams.RandomAccessStreamReference::CreateFromFile(Windows.Storage.IStorageFile)
    def create_from_file(cls, file: windows_storage.IStorageFile, /) -> RandomAccessStreamReference: ...
    # Windows.Storage.Streams.RandomAccessStreamReference Windows.Storage.Streams.RandomAccessStreamReference::CreateFromStream(Windows.Storage.Streams.IRandomAccessStream)
    def create_from_stream(cls, stream: IRandomAccessStream, /) -> RandomAccessStreamReference: ...
    # Windows.Storage.Streams.RandomAccessStreamReference Windows.Storage.Streams.RandomAccessStreamReference::CreateFromUri(Windows.Foundation.Uri)
    def create_from_uri(cls, uri: windows_foundation.Uri, /) -> RandomAccessStreamReference: ...

@typing.final
class RandomAccessStreamReference(winrt.system.Object, IRandomAccessStreamReference, metaclass=RandomAccessStreamReference_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IRandomAccessStreamWithContentType> Windows.Storage.Streams.RandomAccessStreamReference::OpenReadAsync()
    def open_read_async(self) -> windows_foundation.IAsyncOperation[IRandomAccessStreamWithContentType]: ...

@typing.final
class _IBuffer: ...

class IBuffer(winrt._winrt.IInspectable):
    def __buffer__(self, flags: int, /) -> memoryview: ...
    def __release_buffer__(self, view: memoryview, /) -> None: ...
    # System.UInt32 Windows.Storage.Streams.IBuffer::get_Capacity()
    @_property
    @abstractmethod
    def capacity(self) -> winrt.system.UInt32: ...
    # System.UInt32 Windows.Storage.Streams.IBuffer::get_Length()
    @_property
    @abstractmethod
    def length(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Storage.Streams.IBuffer::put_Length(System.UInt32)
    @length.setter
    @abstractmethod
    def length(self, value: winrt.system.UInt32) -> None: ...

@typing.final
class _IContentTypeProvider: ...

class IContentTypeProvider(winrt._winrt.IInspectable):
    # System.String Windows.Storage.Streams.IContentTypeProvider::get_ContentType()
    @_property
    @abstractmethod
    def content_type(self) -> str: ...

@typing.final
class _IDataReader: ...

class IDataReader(winrt._winrt.IInspectable):
    # Windows.Storage.Streams.IBuffer Windows.Storage.Streams.IDataReader::DetachBuffer()
    @abstractmethod
    def detach_buffer(self) -> winrt.system.Buffer: ...
    # Windows.Storage.Streams.IInputStream Windows.Storage.Streams.IDataReader::DetachStream()
    @abstractmethod
    def detach_stream(self) -> IInputStream: ...
    # Windows.Storage.Streams.DataReaderLoadOperation Windows.Storage.Streams.IDataReader::LoadAsync(System.UInt32)
    @abstractmethod
    def load_async(self, count: winrt.system.UInt32, /) -> DataReaderLoadOperation: ...
    # System.Boolean Windows.Storage.Streams.IDataReader::ReadBoolean()
    @abstractmethod
    def read_boolean(self) -> bool: ...
    # Windows.Storage.Streams.IBuffer Windows.Storage.Streams.IDataReader::ReadBuffer(System.UInt32)
    @abstractmethod
    def read_buffer(self, length: winrt.system.UInt32, /) -> winrt.system.Buffer: ...
    # System.Byte Windows.Storage.Streams.IDataReader::ReadByte()
    @abstractmethod
    def read_byte(self) -> winrt.system.UInt8: ...
    # System.Void Windows.Storage.Streams.IDataReader::ReadBytes(System.Byte[])
    @abstractmethod
    def read_bytes(self, value: typing.Union[winrt.system.Array[winrt.system.UInt8], winrt.system.WriteableBuffer], /) -> None: ...
    # Windows.Foundation.DateTime Windows.Storage.Streams.IDataReader::ReadDateTime()
    @abstractmethod
    def read_date_time(self) -> datetime.datetime: ...
    # System.Double Windows.Storage.Streams.IDataReader::ReadDouble()
    @abstractmethod
    def read_double(self) -> winrt.system.Double: ...
    # System.Guid Windows.Storage.Streams.IDataReader::ReadGuid()
    @abstractmethod
    def read_guid(self) -> _uuid.UUID: ...
    # System.Int16 Windows.Storage.Streams.IDataReader::ReadInt16()
    @abstractmethod
    def read_int16(self) -> winrt.system.Int16: ...
    # System.Int32 Windows.Storage.Streams.IDataReader::ReadInt32()
    @abstractmethod
    def read_int32(self) -> winrt.system.Int32: ...
    # System.Int64 Windows.Storage.Streams.IDataReader::ReadInt64()
    @abstractmethod
    def read_int64(self) -> winrt.system.Int64: ...
    # System.Single Windows.Storage.Streams.IDataReader::ReadSingle()
    @abstractmethod
    def read_single(self) -> winrt.system.Single: ...
    # System.String Windows.Storage.Streams.IDataReader::ReadString(System.UInt32)
    @abstractmethod
    def read_string(self, code_unit_count: winrt.system.UInt32, /) -> str: ...
    # Windows.Foundation.TimeSpan Windows.Storage.Streams.IDataReader::ReadTimeSpan()
    @abstractmethod
    def read_time_span(self) -> datetime.timedelta: ...
    # System.UInt16 Windows.Storage.Streams.IDataReader::ReadUInt16()
    @abstractmethod
    def read_uint16(self) -> winrt.system.UInt16: ...
    # System.UInt32 Windows.Storage.Streams.IDataReader::ReadUInt32()
    @abstractmethod
    def read_uint32(self) -> winrt.system.UInt32: ...
    # System.UInt64 Windows.Storage.Streams.IDataReader::ReadUInt64()
    @abstractmethod
    def read_uint64(self) -> winrt.system.UInt64: ...
    # Windows.Storage.Streams.ByteOrder Windows.Storage.Streams.IDataReader::get_ByteOrder()
    @_property
    @abstractmethod
    def byte_order(self) -> ByteOrder: ...
    # System.Void Windows.Storage.Streams.IDataReader::put_ByteOrder(Windows.Storage.Streams.ByteOrder)
    @byte_order.setter
    @abstractmethod
    def byte_order(self, value: ByteOrder) -> None: ...
    # Windows.Storage.Streams.InputStreamOptions Windows.Storage.Streams.IDataReader::get_InputStreamOptions()
    @_property
    @abstractmethod
    def input_stream_options(self) -> InputStreamOptions: ...
    # System.Void Windows.Storage.Streams.IDataReader::put_InputStreamOptions(Windows.Storage.Streams.InputStreamOptions)
    @input_stream_options.setter
    @abstractmethod
    def input_stream_options(self, value: InputStreamOptions) -> None: ...
    # System.UInt32 Windows.Storage.Streams.IDataReader::get_UnconsumedBufferLength()
    @_property
    @abstractmethod
    def unconsumed_buffer_length(self) -> winrt.system.UInt32: ...
    # Windows.Storage.Streams.UnicodeEncoding Windows.Storage.Streams.IDataReader::get_UnicodeEncoding()
    @_property
    @abstractmethod
    def unicode_encoding(self) -> UnicodeEncoding: ...
    # System.Void Windows.Storage.Streams.IDataReader::put_UnicodeEncoding(Windows.Storage.Streams.UnicodeEncoding)
    @unicode_encoding.setter
    @abstractmethod
    def unicode_encoding(self, value: UnicodeEncoding) -> None: ...

@typing.final
class _IDataWriter: ...

class IDataWriter(winrt._winrt.IInspectable):
    # Windows.Storage.Streams.IBuffer Windows.Storage.Streams.IDataWriter::DetachBuffer()
    @abstractmethod
    def detach_buffer(self) -> winrt.system.Buffer: ...
    # Windows.Storage.Streams.IOutputStream Windows.Storage.Streams.IDataWriter::DetachStream()
    @abstractmethod
    def detach_stream(self) -> IOutputStream: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.IDataWriter::FlushAsync()
    @abstractmethod
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # System.UInt32 Windows.Storage.Streams.IDataWriter::MeasureString(System.String)
    @abstractmethod
    def measure_string(self, value: str, /) -> winrt.system.UInt32: ...
    # Windows.Storage.Streams.DataWriterStoreOperation Windows.Storage.Streams.IDataWriter::StoreAsync()
    @abstractmethod
    def store_async(self) -> DataWriterStoreOperation: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteBoolean(System.Boolean)
    @abstractmethod
    def write_boolean(self, value: bool, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteBuffer(Windows.Storage.Streams.IBuffer)
    @abstractmethod
    def write_buffer(self, buffer: winrt.system.Buffer, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteBuffer(Windows.Storage.Streams.IBuffer,System.UInt32,System.UInt32)
    @abstractmethod
    def write_buffer_range(self, buffer: winrt.system.Buffer, start: winrt.system.UInt32, count: winrt.system.UInt32, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteByte(System.Byte)
    @abstractmethod
    def write_byte(self, value: winrt.system.UInt8, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteBytes(System.Byte[])
    @abstractmethod
    def write_bytes(self, value: typing.Union[winrt.system.Array[winrt.system.UInt8], winrt.system.ReadableBuffer], /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteDateTime(Windows.Foundation.DateTime)
    @abstractmethod
    def write_date_time(self, value: datetime.datetime, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteDouble(System.Double)
    @abstractmethod
    def write_double(self, value: winrt.system.Double, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteGuid(System.Guid)
    @abstractmethod
    def write_guid(self, value: _uuid.UUID, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteInt16(System.Int16)
    @abstractmethod
    def write_int16(self, value: winrt.system.Int16, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteInt32(System.Int32)
    @abstractmethod
    def write_int32(self, value: winrt.system.Int32, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteInt64(System.Int64)
    @abstractmethod
    def write_int64(self, value: winrt.system.Int64, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteSingle(System.Single)
    @abstractmethod
    def write_single(self, value: winrt.system.Single, /) -> None: ...
    # System.UInt32 Windows.Storage.Streams.IDataWriter::WriteString(System.String)
    @abstractmethod
    def write_string(self, value: str, /) -> winrt.system.UInt32: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteTimeSpan(Windows.Foundation.TimeSpan)
    @abstractmethod
    def write_time_span(self, value: datetime.timedelta, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteUInt16(System.UInt16)
    @abstractmethod
    def write_uint16(self, value: winrt.system.UInt16, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteUInt32(System.UInt32)
    @abstractmethod
    def write_uint32(self, value: winrt.system.UInt32, /) -> None: ...
    # System.Void Windows.Storage.Streams.IDataWriter::WriteUInt64(System.UInt64)
    @abstractmethod
    def write_uint64(self, value: winrt.system.UInt64, /) -> None: ...
    # Windows.Storage.Streams.ByteOrder Windows.Storage.Streams.IDataWriter::get_ByteOrder()
    @_property
    @abstractmethod
    def byte_order(self) -> ByteOrder: ...
    # System.Void Windows.Storage.Streams.IDataWriter::put_ByteOrder(Windows.Storage.Streams.ByteOrder)
    @byte_order.setter
    @abstractmethod
    def byte_order(self, value: ByteOrder) -> None: ...
    # Windows.Storage.Streams.UnicodeEncoding Windows.Storage.Streams.IDataWriter::get_UnicodeEncoding()
    @_property
    @abstractmethod
    def unicode_encoding(self) -> UnicodeEncoding: ...
    # System.Void Windows.Storage.Streams.IDataWriter::put_UnicodeEncoding(Windows.Storage.Streams.UnicodeEncoding)
    @unicode_encoding.setter
    @abstractmethod
    def unicode_encoding(self, value: UnicodeEncoding) -> None: ...
    # System.UInt32 Windows.Storage.Streams.IDataWriter::get_UnstoredBufferLength()
    @_property
    @abstractmethod
    def unstored_buffer_length(self) -> winrt.system.UInt32: ...

@typing.final
class _IInputStream: ...

class IInputStream(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # Windows.Foundation.IAsyncOperationWithProgress`2<Windows.Storage.Streams.IBuffer,System.UInt32> Windows.Storage.Streams.IInputStream::ReadAsync(Windows.Storage.Streams.IBuffer,System.UInt32,Windows.Storage.Streams.InputStreamOptions)
    @abstractmethod
    def read_async(self, buffer: winrt.system.Buffer, count: winrt.system.UInt32, options: InputStreamOptions, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.Buffer, winrt.system.UInt32]: ...

@typing.final
class _IInputStreamReference: ...

class IInputStreamReference(winrt._winrt.IInspectable):
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IInputStream> Windows.Storage.Streams.IInputStreamReference::OpenSequentialReadAsync()
    @abstractmethod
    def open_sequential_read_async(self) -> windows_foundation.IAsyncOperation[IInputStream]: ...

@typing.final
class _IOutputStream: ...

class IOutputStream(windows_foundation.IClosable, winrt._winrt.IInspectable):
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.Storage.Streams.IOutputStream::FlushAsync()
    @abstractmethod
    def flush_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperationWithProgress`2<System.UInt32,System.UInt32> Windows.Storage.Streams.IOutputStream::WriteAsync(Windows.Storage.Streams.IBuffer)
    @abstractmethod
    def write_async(self, buffer: winrt.system.Buffer, /) -> windows_foundation.IAsyncOperationWithProgress[winrt.system.UInt32, winrt.system.UInt32]: ...

@typing.final
class _IPropertySetSerializer: ...

class IPropertySetSerializer(winrt._winrt.IInspectable):
    # System.Void Windows.Storage.Streams.IPropertySetSerializer::Deserialize(Windows.Foundation.Collections.IPropertySet,Windows.Storage.Streams.IBuffer)
    @abstractmethod
    def deserialize(self, property_set: windows_foundation_collections.IPropertySet, buffer: winrt.system.Buffer, /) -> None: ...
    # Windows.Storage.Streams.IBuffer Windows.Storage.Streams.IPropertySetSerializer::Serialize(Windows.Foundation.Collections.IPropertySet)
    @abstractmethod
    def serialize(self, property_set: windows_foundation_collections.IPropertySet, /) -> winrt.system.Buffer: ...

@typing.final
class _IRandomAccessStream: ...

class IRandomAccessStream(IOutputStream, IInputStream, windows_foundation.IClosable, winrt._winrt.IInspectable):
    # Windows.Storage.Streams.IRandomAccessStream Windows.Storage.Streams.IRandomAccessStream::CloneStream()
    @abstractmethod
    def clone_stream(self) -> IRandomAccessStream: ...
    # Windows.Storage.Streams.IInputStream Windows.Storage.Streams.IRandomAccessStream::GetInputStreamAt(System.UInt64)
    @abstractmethod
    def get_input_stream_at(self, position: winrt.system.UInt64, /) -> IInputStream: ...
    # Windows.Storage.Streams.IOutputStream Windows.Storage.Streams.IRandomAccessStream::GetOutputStreamAt(System.UInt64)
    @abstractmethod
    def get_output_stream_at(self, position: winrt.system.UInt64, /) -> IOutputStream: ...
    # System.Void Windows.Storage.Streams.IRandomAccessStream::Seek(System.UInt64)
    @abstractmethod
    def seek(self, position: winrt.system.UInt64, /) -> None: ...
    # System.Boolean Windows.Storage.Streams.IRandomAccessStream::get_CanRead()
    @_property
    @abstractmethod
    def can_read(self) -> bool: ...
    # System.Boolean Windows.Storage.Streams.IRandomAccessStream::get_CanWrite()
    @_property
    @abstractmethod
    def can_write(self) -> bool: ...
    # System.UInt64 Windows.Storage.Streams.IRandomAccessStream::get_Position()
    @_property
    @abstractmethod
    def position(self) -> winrt.system.UInt64: ...
    # System.UInt64 Windows.Storage.Streams.IRandomAccessStream::get_Size()
    @_property
    @abstractmethod
    def size(self) -> winrt.system.UInt64: ...
    # System.Void Windows.Storage.Streams.IRandomAccessStream::put_Size(System.UInt64)
    @size.setter
    @abstractmethod
    def size(self, value: winrt.system.UInt64) -> None: ...

@typing.final
class _IRandomAccessStreamReference: ...

class IRandomAccessStreamReference(winrt._winrt.IInspectable):
    # Windows.Foundation.IAsyncOperation`1<Windows.Storage.Streams.IRandomAccessStreamWithContentType> Windows.Storage.Streams.IRandomAccessStreamReference::OpenReadAsync()
    @abstractmethod
    def open_read_async(self) -> windows_foundation.IAsyncOperation[IRandomAccessStreamWithContentType]: ...

@typing.final
class _IRandomAccessStreamWithContentType: ...

class IRandomAccessStreamWithContentType(IContentTypeProvider, IRandomAccessStream, IOutputStream, IInputStream, windows_foundation.IClosable, winrt._winrt.IInspectable):  # type: ignore[misc]
    pass

