Module Make_helpers.Graph

type 'a t = 'a B.Node.t
type metadata = B.Node.Metadata.t
val metadata_t : metadata Irmin.Type.t
type contents_key = B.Node.Contents.key
val contents_key_t : contents_key Irmin.Type.t
type node_key = B.Node.key
val node_key_t : node_key Irmin.Type.t
type step = B.Node.Path.step
val step_t : step Irmin.Type.t
type path = B.Node.Path.t
val path_t : path Irmin.Type.t
type value = [
  1. | `Contents of contents_key * metadata
  2. | `Node of node_key
]
val value_t : value Irmin.Type.t
val empty : [> Irmin.Perms.write ] t -> node_key Lwt.t
val v : [> Irmin.Perms.write ] t -> (step * value) list -> node_key Lwt.t
val list : [> Irmin.Perms.read ] t -> node_key -> (step * value) list Lwt.t
val find : [> Irmin.Perms.read ] t -> node_key -> path -> value option Lwt.t
val add : [> Irmin.Perms.read_write ] t -> node_key -> path -> value -> node_key Lwt.t
val remove : [> Irmin.Perms.read_write ] t -> node_key -> path -> node_key Lwt.t
val closure : [> Irmin.Perms.read ] t -> min:node_key list -> max:node_key list -> node_key list Lwt.t
val iter : [> Irmin.Perms.read ] t -> min:node_key list -> max:node_key list -> ?node:(node_key -> unit Lwt.t) -> ?contents:(contents_key -> unit Lwt.t) -> ?edge:(node_key -> node_key -> unit Lwt.t) -> ?skip_node:(node_key -> bool Lwt.t) -> ?skip_contents:(contents_key -> bool Lwt.t) -> ?rev:bool -> unit -> unit Lwt.t