sig
  type filename = string
  module Read :
    sig
      type ('a, 'b) input =
          [ `Callback of
              'a * ('a, 'b) ArchiveLow.open_callback *
              'ArchiveLow.read_callback * 'ArchiveLow.skip_callback *
              'ArchiveLow.close_callback
          | `Filename of Archive.filename ]
      type ('a, 'b) t
      val create : ('a, 'b) Archive.Read.input -> ('a, 'b) Archive.Read.t
      val file_exists : ('a, 'b) Archive.Read.t -> Archive.filename -> bool
      val stat :
        ('a, 'b) Archive.Read.t -> Archive.filename -> Unix.LargeFile.stats
      val is_directory : ('a, 'b) Archive.Read.t -> Archive.filename -> bool
      val entry :
        ('a, 'b) Archive.Read.t -> Archive.filename -> ArchiveLow.Entry.t
      val with_file :
        ('a, 'b) Archive.Read.t ->
        Archive.filename ->
        (ArchiveLow.Entry.t -> 'c) ->
        ('-> string -> int -> 'c) -> ('-> 'd) -> 'd
      val content : ('a, 'b) Archive.Read.t -> Archive.filename -> string
      val readdir :
        ('a, 'b) Archive.Read.t -> Archive.filename -> Archive.filename array
    end
end