# 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.storage.streams
except Exception:
    pass

class CompressAlgorithm(enum.IntEnum):
    INVALID_ALGORITHM = 0
    NULL_ALGORITHM = 1
    MSZIP = 2
    XPRESS = 3
    XPRESS_HUFF = 4
    LZMS = 5

class Compressor(winsdk.windows.storage.streams.IOutputStream, winsdk.windows.foundation.IClosable, _winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> Compressor: ...
    @typing.overload
    def __init__(self, underlying_stream: winsdk.windows.storage.streams.IOutputStream) -> None: ...
    @typing.overload
    def __init__(self, underlying_stream: winsdk.windows.storage.streams.IOutputStream, algorithm: CompressAlgorithm, block_size: _winrt.UInt32) -> None: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def detach_stream(self) -> winsdk.windows.storage.streams.IOutputStream: ...
    @typing.overload
    def finish_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def flush_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def write_async(self, buffer: winsdk.windows.storage.streams.IBuffer) -> winsdk.windows.foundation.IAsyncOperationWithProgress[_winrt.UInt32, _winrt.UInt32]: ...

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

