module HTTPX module Plugins module Compression type encodings_registry = Registry[Symbol, Class] type deflatable = _Reader | _ToS interface _Deflater def deflate: (deflatable, ?_Writer, ?chunk_size: Integer) -> _ToS | (deflatable, ?_Writer, ?chunk_size: Integer) { (String) -> void } -> _ToS end interface _Inflater def inflate: (string) -> String def initialize: (Integer | Float bytesize) -> untyped end def self.configure: (singleton(Session)) -> void interface _CompressionOptions def compression_threshold_size: () -> Integer? def encodings: () -> encodings_registry? end def self.extra_options: (Options) -> (Options & _CompressionOptions) module ResponseBodyMethods @encodings: Array[String] @_deflaters: Array[_Deflater] 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