sig
  type in_channel
  type out_channel
  exception Error of string
  val version : string
  type zstrategy = Default | Filtered | Huffman_only
  val open_out :
    ?compression:int -> ?strategy:Gz.zstrategy -> string -> Gz.out_channel
  external setparams :
    Gz.out_channel -> compression:int -> strategy:Gz.zstrategy -> unit
    = "mlgz_gzsetparams"
  external write : Gz.out_channel -> buf:string -> pos:int -> len:int -> unit
    = "mlgz_gzwrite"
  external output_string : Gz.out_channel -> string -> unit = "mlgz_gzputs"
  external output_char : Gz.out_channel -> char -> unit = "mlgz_gzputc"
  external output_byte : Gz.out_channel -> int -> unit = "mlgz_gzputc"
  val output_newline : Gz.out_channel -> unit
  val output_endline : Gz.out_channel -> string -> unit
  val output_value : Gz.out_channel -> '-> unit
  type flush = Sync_flush | Full_flush | Finish_flush
  val flush : ?flush:Gz.flush -> Gz.out_channel -> unit
  val seek_out : Gz.out_channel -> offset:int -> unit
  val pos_out : Gz.out_channel -> int
  external close_out : Gz.out_channel -> unit = "mlgz_gzclose"
  val open_in : string -> Gz.in_channel
  external read : Gz.in_channel -> buf:string -> pos:int -> len:int -> int
    = "mlgz_gzread"
  external input_char : Gz.in_channel -> char = "mlgz_gzgetc"
  val input_line : Gz.in_channel -> string
  val input_value : Gz.in_channel -> 'a
  external rewind : Gz.in_channel -> unit = "mlgz_gzrewind"
  val seek_in : Gz.in_channel -> offset:int -> unit
  val pos_in : Gz.in_channel -> int
  external close_in : Gz.in_channel -> unit = "mlgz_gzclose"
  external compress :
    ?compression:int -> string -> pos:int -> len:int -> string
    = "mlgz_compress"
  external uncompress : string -> pos:int -> len:int -> string
    = "mlgz_uncompress"
end