sig
  type t
  type package
  val open_in : string -> Dosebase.In.t
  val close_in : Dosebase.In.t -> unit
  val count_population : Dosebase.In.t -> int
  val get_type : Dosebase.In.t -> string
  val iter :
    ?package:(unit_name:string ->
              version:string ->
              architecture:string -> Dosebase.In.package -> unit) ->
    ?lifetime:(archive:string ->
               unit_name:string ->
               version:string ->
               architecture:string -> Lifetime.lifetime -> unit) ->
    Dosebase.In.t -> unit
  val iter_over_fields :
    (string * string * string list -> unit) ->
    Dosebase.In.t -> Dosebase.In.package -> unit
  val find_package :
    Dosebase.In.t ->
    unit_name:string ->
    version:string -> architecture:string -> Dosebase.In.package
  val find_lifetime :
    Dosebase.In.t ->
    architecture:string ->
    archive:string -> unit_name:string -> version:string -> Lifetime.lifetime
  val get_package_id : Dosebase.In.t -> Dosebase.In.package -> int
  val get_field :
    Dosebase.In.t -> Dosebase.In.package -> string -> string * string list
  val get_field_first :
    Dosebase.In.t -> Dosebase.In.package -> string -> string
  val known_fields : Dosebase.In.t -> string list
end