sig
  type compression_method = Stored | Deflated
  type entry = {
    filename : string;
    extra : string;
    comment : string;
    methd : Zip.compression_method;
    mtime : float;
    crc : int32;
    uncompressed_size : int;
    compressed_size : int;
    is_directory : bool;
    file_offset : int64;
  }
  type in_file
  val open_in : string -> Zip.in_file
  val entries : Zip.in_file -> Zip.entry list
  val comment : Zip.in_file -> string
  val find_entry : Zip.in_file -> string -> Zip.entry
  val read_entry : Zip.in_file -> Zip.entry -> string
  val copy_entry_to_channel :
    Zip.in_file -> Zip.entry -> Pervasives.out_channel -> unit
  val copy_entry_to_file : Zip.in_file -> Zip.entry -> string -> unit
  val close_in : Zip.in_file -> unit
  type out_file
  val open_out : ?comment:string -> string -> Zip.out_file
  val add_entry :
    string ->
    Zip.out_file ->
    ?extra:string ->
    ?comment:string -> ?level:int -> ?mtime:float -> string -> unit
  val copy_channel_to_entry :
    Pervasives.in_channel ->
    Zip.out_file ->
    ?extra:string ->
    ?comment:string -> ?level:int -> ?mtime:float -> string -> unit
  val copy_file_to_entry :
    string ->
    Zip.out_file ->
    ?extra:string ->
    ?comment:string -> ?level:int -> ?mtime:float -> string -> unit
  val add_entry_generator :
    Zip.out_file ->
    ?extra:string ->
    ?comment:string ->
    ?level:int ->
    ?mtime:float -> string -> (string -> int -> int -> unit) * (unit -> unit)
  val close_out : Zip.out_file -> unit
  exception Error of string * string * string
end