sig
  type id = [ `Object ] Id.t
  type archive = { files : (string * Digest.t) list; raw : Cstruct.t; }
  type file = string * Cstruct.t
  type contents = Archive of Object.archive | File of Object.file
  type kind = [ `Archive | `File ]
  type t
  val id : Object.t -> Object.id
  val contents : Object.t -> Object.contents
  val kind : Object.t -> Object.kind
  val archive : (string * Digest.t) list -> Cstruct.t -> Object.t
  val file : string -> Cstruct.t -> Object.t
  val equal : Object.t -> Object.t -> bool
  val pp : Object.t Fmt.t
  val json : Object.t Jsont.codec
end