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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.storage
except Exception:
    pass

try:
    import winsdk.windows.system
except Exception:
    pass

class ByteOrder(enum.IntEnum):
    LITTLE_ENDIAN = 0
    BIG_ENDIAN = 1

class FileOpenDisposition(enum.IntEnum):
    OPEN_EXISTING = 0
    OPEN_ALWAYS = 1
    CREATE_NEW = 2
    CREATE_ALWAYS = 3
    TRUNCATE_EXISTING = 4

class InputStreamOptions(enum.IntFlag):
    NONE = 0
    PARTIAL = 0x1
    READ_AHEAD = 0x2

class UnicodeEncoding(enum.IntEnum):
    UTF8 = 0
    UTF16_L_E = 1
    UTF16_B_E = 2

class Buffer(IBuffer, _winrt.Object):
    length: _winrt.UInt32
    capacity: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> Buffer: ...
    @typing.overload
    def __init__(self, capacity: _winrt.UInt32) -> None: ...
    @typing.overload
    @staticmethod
    def create_copy_from_memory_buffer(input: winsdk.windows.foundation.IMemoryBuffer) -> Buffer: ...
    @typing.overload
    @staticmethod
    def create_memory_buffer_over_i_buffer(input: IBuffer) -> winsdk.windows.foundation.MemoryBuffer: ...

class DataReader(IDataReader, winsdk.windows.foundation.IClosable, _winrt.Object):
    unicode_encoding: UnicodeEncoding
    input_stream_options: InputStreamOptions
    byte_order: ByteOrder
    unconsumed_buffer_length: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> DataReader: ...
    @typing.overload
    def __init__(self, input_stream: IInputStream) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def detach_buffer(self) -> IBuffer: ...
    @typing.overload
    def detach_stream(self) -> IInputStream: ...
    @typing.overload
    @staticmethod
    def from_buffer(buffer: IBuffer) -> DataReader: ...
    @typing.overload
    def load_async(self, count: _winrt.UInt32) -> DataReaderLoadOperation: ...
    @typing.overload
    def read_boolean(self) -> _winrt.Boolean: ...
    @typing.overload
    def read_buffer(self, length: _winrt.UInt32) -> IBuffer: ...
    @typing.overload
    def read_byte(self) -> _winrt.UInt8: ...
    @typing.overload
    def read_bytes(self, value_size: _winrt.UInt32) -> typing.List[_winrt.UInt8]: ...
    @typing.overload
    def read_date_time(self) -> winsdk.windows.foundation.DateTime: ...
    @typing.overload
    def read_double(self) -> _winrt.Double: ...
    @typing.overload
    def read_guid(self) -> uuid.UUID: ...
    @typing.overload
    def read_int16(self) -> _winrt.Int16: ...
    @typing.overload
    def read_int32(self) -> _winrt.Int32: ...
    @typing.overload
    def read_int64(self) -> _winrt.Int64: ...
    @typing.overload
    def read_single(self) -> _winrt.Single: ...
    @typing.overload
    def read_string(self, code_unit_count: _winrt.UInt32) -> str: ...
    @typing.overload
    def read_time_span(self) -> winsdk.windows.foundation.TimeSpan: ...
    @typing.overload
    def read_uint16(self) -> _winrt.UInt16: ...
    @typing.overload
    def read_uint32(self) -> _winrt.UInt32: ...
    @typing.overload
    def read_uint64(self) -> _winrt.UInt64: ...

class DataReaderLoadOperation(winsdk.windows.foundation.IAsyncOperation[_winrt.UInt32], winsdk.windows.foundation.IAsyncInfo, _winrt.Object):
    error_code: winsdk.windows.foundation.HResult
    id: _winrt.UInt32
    status: winsdk.windows.foundation.AsyncStatus
    completed: winsdk.windows.foundation.AsyncOperationCompletedHandler[_winrt.UInt32]
    @staticmethod
    def _from(obj: _winrt.Object) -> DataReaderLoadOperation: ...
    @typing.overload
    def cancel(self) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def get_results(self) -> _winrt.UInt32: ...

class DataWriter(IDataWriter, winsdk.windows.foundation.IClosable, _winrt.Object):
    unicode_encoding: UnicodeEncoding
    byte_order: ByteOrder
    unstored_buffer_length: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> DataWriter: ...
    @typing.overload
    def __init__(self, output_stream: IOutputStream) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def detach_buffer(self) -> IBuffer: ...
    @typing.overload
    def detach_stream(self) -> IOutputStream: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def measure_string(self, value: str) -> _winrt.UInt32: ...
    @typing.overload
    def store_async(self) -> DataWriterStoreOperation: ...
    @typing.overload
    def write_boolean(self, value: _winrt.Boolean) -> None: ...
    @typing.overload
    def write_buffer(self, buffer: IBuffer) -> None: ...
    @typing.overload
    def write_buffer(self, buffer: IBuffer, start: _winrt.UInt32, count: _winrt.UInt32) -> None: ...
    @typing.overload
    def write_byte(self, value: _winrt.UInt8) -> None: ...
    @typing.overload
    def write_bytes(self, value: typing.Sequence[_winrt.UInt8]) -> None: ...
    @typing.overload
    def write_date_time(self, value: winsdk.windows.foundation.DateTime) -> None: ...
    @typing.overload
    def write_double(self, value: _winrt.Double) -> None: ...
    @typing.overload
    def write_guid(self, value: uuid.UUID) -> None: ...
    @typing.overload
    def write_int16(self, value: _winrt.Int16) -> None: ...
    @typing.overload
    def write_int32(self, value: _winrt.Int32) -> None: ...
    @typing.overload
    def write_int64(self, value: _winrt.Int64) -> None: ...
    @typing.overload
    def write_single(self, value: _winrt.Single) -> None: ...
    @typing.overload
    def write_string(self, value: str) -> _winrt.UInt32: ...
    @typing.overload
    def write_time_span(self, value: winsdk.windows.foundation.TimeSpan) -> None: ...
    @typing.overload
    def write_uint16(self, value: _winrt.UInt16) -> None: ...
    @typing.overload
    def write_uint32(self, value: _winrt.UInt32) -> None: ...
    @typing.overload
    def write_uint64(self, value: _winrt.UInt64) -> None: ...

class DataWriterStoreOperation(winsdk.windows.foundation.IAsyncOperation[_winrt.UInt32], winsdk.windows.foundation.IAsyncInfo, _winrt.Object):
    error_code: winsdk.windows.foundation.HResult
    id: _winrt.UInt32
    status: winsdk.windows.foundation.AsyncStatus
    completed: winsdk.windows.foundation.AsyncOperationCompletedHandler[_winrt.UInt32]
    @staticmethod
    def _from(obj: _winrt.Object) -> DataWriterStoreOperation: ...
    @typing.overload
    def cancel(self) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def get_results(self) -> _winrt.UInt32: ...

class FileInputStream(IInputStream, winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> FileInputStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...

class FileOutputStream(IOutputStream, winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> FileOutputStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

class FileRandomAccessStream(IRandomAccessStream, IOutputStream, winsdk.windows.foundation.IClosable, IInputStream, _winrt.Object):
    size: _winrt.UInt64
    can_read: _winrt.Boolean
    can_write: _winrt.Boolean
    position: _winrt.UInt64
    @staticmethod
    def _from(obj: _winrt.Object) -> FileRandomAccessStream: ...
    @typing.overload
    def clone_stream(self) -> IRandomAccessStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def get_input_stream_at(self, position: _winrt.UInt64) -> IInputStream: ...
    @typing.overload
    def get_output_stream_at(self, position: _winrt.UInt64) -> IOutputStream: ...
    @typing.overload
    @staticmethod
    def open_async(file_path: str, access_mode: winsdk.windows.storage.FileAccessMode) -> winsdk.windows.foundation.IAsyncOperation[IRandomAccessStream]: ...
    @typing.overload
    @staticmethod
    def open_async(file_path: str, access_mode: winsdk.windows.storage.FileAccessMode, sharing_options: winsdk.windows.storage.StorageOpenOptions, open_disposition: FileOpenDisposition) -> winsdk.windows.foundation.IAsyncOperation[IRandomAccessStream]: ...
    @typing.overload
    @staticmethod
    def open_for_user_async(user: winsdk.windows.system.User, file_path: str, access_mode: winsdk.windows.storage.FileAccessMode) -> winsdk.windows.foundation.IAsyncOperation[IRandomAccessStream]: ...
    @typing.overload
    @staticmethod
    def open_for_user_async(user: winsdk.windows.system.User, file_path: str, access_mode: winsdk.windows.storage.FileAccessMode, sharing_options: winsdk.windows.storage.StorageOpenOptions, open_disposition: FileOpenDisposition) -> winsdk.windows.foundation.IAsyncOperation[IRandomAccessStream]: ...
    @typing.overload
    @staticmethod
    def open_transacted_write_async(file_path: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageStreamTransaction]: ...
    @typing.overload
    @staticmethod
    def open_transacted_write_async(file_path: str, open_options: winsdk.windows.storage.StorageOpenOptions, open_disposition: FileOpenDisposition) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageStreamTransaction]: ...
    @typing.overload
    @staticmethod
    def open_transacted_write_for_user_async(user: winsdk.windows.system.User, file_path: str) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageStreamTransaction]: ...
    @typing.overload
    @staticmethod
    def open_transacted_write_for_user_async(user: winsdk.windows.system.User, file_path: str, open_options: winsdk.windows.storage.StorageOpenOptions, open_disposition: FileOpenDisposition) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.StorageStreamTransaction]: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...
    @typing.overload
    def seek(self, position: _winrt.UInt64) -> None: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

class InMemoryRandomAccessStream(IRandomAccessStream, IOutputStream, winsdk.windows.foundation.IClosable, IInputStream, _winrt.Object):
    size: _winrt.UInt64
    can_read: _winrt.Boolean
    can_write: _winrt.Boolean
    position: _winrt.UInt64
    @staticmethod
    def _from(obj: _winrt.Object) -> InMemoryRandomAccessStream: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def clone_stream(self) -> IRandomAccessStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def get_input_stream_at(self, position: _winrt.UInt64) -> IInputStream: ...
    @typing.overload
    def get_output_stream_at(self, position: _winrt.UInt64) -> IOutputStream: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...
    @typing.overload
    def seek(self, position: _winrt.UInt64) -> None: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

class InputStreamOverStream(IInputStream, winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> InputStreamOverStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...

class OutputStreamOverStream(IOutputStream, winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> OutputStreamOverStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

class RandomAccessStream(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> RandomAccessStream: ...
    @typing.overload
    @staticmethod
    def copy_and_close_async(source: IInputStream, destination: IOutputStream) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt64, _winrt.UInt64]: ...
    @typing.overload
    @staticmethod
    def copy_async(source: IInputStream, destination: IOutputStream) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt64, _winrt.UInt64]: ...
    @typing.overload
    @staticmethod
    def copy_async(source: IInputStream, destination: IOutputStream, bytes_to_copy: _winrt.UInt64) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt64, _winrt.UInt64]: ...

class RandomAccessStreamOverStream(IRandomAccessStream, IOutputStream, winsdk.windows.foundation.IClosable, IInputStream, _winrt.Object):
    size: _winrt.UInt64
    can_read: _winrt.Boolean
    can_write: _winrt.Boolean
    position: _winrt.UInt64
    @staticmethod
    def _from(obj: _winrt.Object) -> RandomAccessStreamOverStream: ...
    @typing.overload
    def clone_stream(self) -> IRandomAccessStream: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def get_input_stream_at(self, position: _winrt.UInt64) -> IInputStream: ...
    @typing.overload
    def get_output_stream_at(self, position: _winrt.UInt64) -> IOutputStream: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...
    @typing.overload
    def seek(self, position: _winrt.UInt64) -> None: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

class RandomAccessStreamReference(IRandomAccessStreamReference, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> RandomAccessStreamReference: ...
    @typing.overload
    @staticmethod
    def create_from_file(file: winsdk.windows.storage.IStorageFile) -> RandomAccessStreamReference: ...
    @typing.overload
    @staticmethod
    def create_from_stream(stream: IRandomAccessStream) -> RandomAccessStreamReference: ...
    @typing.overload
    @staticmethod
    def create_from_uri(uri: winsdk.windows.foundation.Uri) -> RandomAccessStreamReference: ...
    @typing.overload
    def open_read_async(self) -> winsdk.windows.foundation.IAsyncOperation[IRandomAccessStreamWithContentType]: ...

class IBuffer(_winrt.Object):
    capacity: _winrt.UInt32
    length: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> IBuffer: ...

class IContentTypeProvider(_winrt.Object):
    content_type: str
    @staticmethod
    def _from(obj: _winrt.Object) -> IContentTypeProvider: ...

class IDataReader(_winrt.Object):
    byte_order: ByteOrder
    input_stream_options: InputStreamOptions
    unconsumed_buffer_length: _winrt.UInt32
    unicode_encoding: UnicodeEncoding
    @staticmethod
    def _from(obj: _winrt.Object) -> IDataReader: ...
    @typing.overload
    def detach_buffer(self) -> IBuffer: ...
    @typing.overload
    def detach_stream(self) -> IInputStream: ...
    @typing.overload
    def load_async(self, count: _winrt.UInt32) -> DataReaderLoadOperation: ...
    @typing.overload
    def read_boolean(self) -> _winrt.Boolean: ...
    @typing.overload
    def read_buffer(self, length: _winrt.UInt32) -> IBuffer: ...
    @typing.overload
    def read_byte(self) -> _winrt.UInt8: ...
    @typing.overload
    def read_bytes(self, value_size: _winrt.UInt32) -> typing.List[_winrt.UInt8]: ...
    @typing.overload
    def read_date_time(self) -> winsdk.windows.foundation.DateTime: ...
    @typing.overload
    def read_double(self) -> _winrt.Double: ...
    @typing.overload
    def read_guid(self) -> uuid.UUID: ...
    @typing.overload
    def read_int16(self) -> _winrt.Int16: ...
    @typing.overload
    def read_int32(self) -> _winrt.Int32: ...
    @typing.overload
    def read_int64(self) -> _winrt.Int64: ...
    @typing.overload
    def read_single(self) -> _winrt.Single: ...
    @typing.overload
    def read_string(self, code_unit_count: _winrt.UInt32) -> str: ...
    @typing.overload
    def read_time_span(self) -> winsdk.windows.foundation.TimeSpan: ...
    @typing.overload
    def read_uint16(self) -> _winrt.UInt16: ...
    @typing.overload
    def read_uint32(self) -> _winrt.UInt32: ...
    @typing.overload
    def read_uint64(self) -> _winrt.UInt64: ...

class IDataWriter(_winrt.Object):
    byte_order: ByteOrder
    unicode_encoding: UnicodeEncoding
    unstored_buffer_length: _winrt.UInt32
    @staticmethod
    def _from(obj: _winrt.Object) -> IDataWriter: ...
    @typing.overload
    def detach_buffer(self) -> IBuffer: ...
    @typing.overload
    def detach_stream(self) -> IOutputStream: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def measure_string(self, value: str) -> _winrt.UInt32: ...
    @typing.overload
    def store_async(self) -> DataWriterStoreOperation: ...
    @typing.overload
    def write_boolean(self, value: _winrt.Boolean) -> None: ...
    @typing.overload
    def write_buffer(self, buffer: IBuffer) -> None: ...
    @typing.overload
    def write_buffer(self, buffer: IBuffer, start: _winrt.UInt32, count: _winrt.UInt32) -> None: ...
    @typing.overload
    def write_byte(self, value: _winrt.UInt8) -> None: ...
    @typing.overload
    def write_bytes(self, value: typing.Sequence[_winrt.UInt8]) -> None: ...
    @typing.overload
    def write_date_time(self, value: winsdk.windows.foundation.DateTime) -> None: ...
    @typing.overload
    def write_double(self, value: _winrt.Double) -> None: ...
    @typing.overload
    def write_guid(self, value: uuid.UUID) -> None: ...
    @typing.overload
    def write_int16(self, value: _winrt.Int16) -> None: ...
    @typing.overload
    def write_int32(self, value: _winrt.Int32) -> None: ...
    @typing.overload
    def write_int64(self, value: _winrt.Int64) -> None: ...
    @typing.overload
    def write_single(self, value: _winrt.Single) -> None: ...
    @typing.overload
    def write_string(self, value: str) -> _winrt.UInt32: ...
    @typing.overload
    def write_time_span(self, value: winsdk.windows.foundation.TimeSpan) -> None: ...
    @typing.overload
    def write_uint16(self, value: _winrt.UInt16) -> None: ...
    @typing.overload
    def write_uint32(self, value: _winrt.UInt32) -> None: ...
    @typing.overload
    def write_uint64(self, value: _winrt.UInt64) -> None: ...

class IInputStream(winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IInputStream: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...
    @typing.overload
    def close(self) -> None: ...

class IInputStreamReference(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IInputStreamReference: ...
    @typing.overload
    def open_sequential_read_async(self) -> winsdk.windows.foundation.IAsyncOperation[IInputStream]: ...

class IOutputStream(winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IOutputStream: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...
    @typing.overload
    def close(self) -> None: ...

class IPropertySetSerializer(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IPropertySetSerializer: ...
    @typing.overload
    def deserialize(self, property_set: winsdk.windows.foundation.collections.IPropertySet, buffer: IBuffer) -> None: ...
    @typing.overload
    def serialize(self, property_set: winsdk.windows.foundation.collections.IPropertySet) -> IBuffer: ...

class IRandomAccessStream(winsdk.windows.foundation.IClosable, IInputStream, IOutputStream, _winrt.Object):
    can_read: _winrt.Boolean
    can_write: _winrt.Boolean
    position: _winrt.UInt64
    size: _winrt.UInt64
    @staticmethod
    def _from(obj: _winrt.Object) -> IRandomAccessStream: ...
    @typing.overload
    def clone_stream(self) -> IRandomAccessStream: ...
    @typing.overload
    def get_input_stream_at(self, position: _winrt.UInt64) -> IInputStream: ...
    @typing.overload
    def get_output_stream_at(self, position: _winrt.UInt64) -> IOutputStream: ...
    @typing.overload
    def seek(self, position: _winrt.UInt64) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

class IRandomAccessStreamReference(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IRandomAccessStreamReference: ...
    @typing.overload
    def open_read_async(self) -> winsdk.windows.foundation.IAsyncOperation[IRandomAccessStreamWithContentType]: ...

class IRandomAccessStreamWithContentType(IRandomAccessStream, winsdk.windows.foundation.IClosable, IInputStream, IOutputStream, IContentTypeProvider, _winrt.Object):
    can_read: _winrt.Boolean
    can_write: _winrt.Boolean
    position: _winrt.UInt64
    size: _winrt.UInt64
    content_type: str
    @staticmethod
    def _from(obj: _winrt.Object) -> IRandomAccessStreamWithContentType: ...
    @typing.overload
    def clone_stream(self) -> IRandomAccessStream: ...
    @typing.overload
    def get_input_stream_at(self, position: _winrt.UInt64) -> IInputStream: ...
    @typing.overload
    def get_output_stream_at(self, position: _winrt.UInt64) -> IOutputStream: ...
    @typing.overload
    def seek(self, position: _winrt.UInt64) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def read_async(self, buffer: IBuffer, count: _winrt.UInt32, options: InputStreamOptions) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IBuffer, _winrt.UInt32]: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def write_async(self, buffer: IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

