module HTTPX module Plugins module Compression extend Registry[Symbol, Class] type deflatable = _Reader | _ToS interface _Deflater def deflate: (deflatable, _Writer, chunk_size: Integer) -> void | (deflatable, _Writer, chunk_size: Integer) { (String) -> void } -> void end interface _Inflater def inflate: (string) -> String def initialize: (Numeric bytesize) -> untyped end # def self.load_dependencies: (singleton(Session)) -> void interface _CompressionOptions def compression_threshold_size: () -> _Integer? def compression_threshold_size=: (int) -> int def with_compression_threshold_size: (int) -> instance end def self.extra_options: (Options) -> (Options & _CompressionOptions) module ResponseBodyMethods @encodings: Array[String] @_deflaters: Array[_Decoder] private def decompress: (string) -> String end class Encoder include Transcoder::_Encoder include _ToS include _Each[String] def close: () -> void private def initialize: (deflatable body, _Deflater deflater) -> untyped def deflate: () -> void | () { (String) -> void } -> void end end end end