sig
  type in_channel
  type out_channel
  exception IO_error of string
  exception Data_error
  exception Unexpected_EOF
  val version : string
  external open_in :
    ?small:bool -> ?unused:string -> Pervasives.in_channel -> Bz2.in_channel
    = "mlbz_readopen"
  external read : Bz2.in_channel -> string -> int -> int -> int = "mlbz_read"
  external read_get_unused : Bz2.in_channel -> string = "mlbz_readgetunused"
  external close_in : Bz2.in_channel -> unit = "mlbz_readclose"
  external open_out : ?block:int -> Pervasives.out_channel -> Bz2.out_channel
    = "mlbz_writeopen"
  external write : Bz2.out_channel -> string -> int -> int -> unit
    = "mlbz_write"
  external close_out : Bz2.out_channel -> unit = "mlbz_writeclose"
  external compress : ?block:int -> string -> int -> int -> string
    = "mlbz_compress"
  external uncompress : ?small:bool -> string -> int -> int -> string
    = "mlbz_uncompress"
end