Parameters
module OT : Stdlib.Map.OrderedTypeSignature
type 'a kind_gen = 'a K.ttype ('diff, 'info, 'property_data) tval empty : id -> ( 'diff, 'info, 'property_data ) tval current_branch : ( 'e, 'i, 'c ) t -> Branch.tval branches : ( 'e, 'i, 'c ) t -> Branch.t listval reset_branch : ( 'e, 'i, 'c ) t -> Branch.t -> id -> ( 'e, 'i, 'c ) tval branch : 
  ( 'e, 'i, 'c ) t ->
  ?root:id ->
  ?pos:id ->
  Branch.t ->
  kind ->
  ( 'e, 'i, 'c ) tval delete_branch : ( 'e, 'i, 'c ) t -> Branch.t -> ( 'e, 'i, 'c ) tval merge : 
  ( 'diff, 'i, 'c ) t ->
  id ->
  ours:'diff ->
  theirs:'diff ->
  ?into:Branch.t ->
  Branch.t ->
  ( 'diff, 'i, 'c ) tval commit : ( 'diff, 'i, 'c ) t -> id -> 'diff -> ( 'diff, 'i, 'c ) tval rewrite_merge : 
  ( 'diff, 'i, 'c ) t ->
  id ->
  ours:'diff ->
  theirs:'diff ->
  at:id ->
  Branch.t ->
  ( 'diff, 'i, 'c ) tval checkout : ( 'e, 'i, 'c ) t -> Branch.t -> ( 'e, 'i, 'c ) tval set_info : ( 'e, 'info, 'c ) t -> id -> 'info -> ( 'e, 'info, 'c ) tval get_info : ( 'e, 'info, 'c ) t -> id -> 'info optionmodule Dag : 
  Dag.S
    with type node = id
    with type node = OT.t
    with type NodeSet.t = Stdlib.Set.Make(OT).t
    with type NodeSet.elt = OT.tval dag : ( 'diff, 'info, 'cdata ) t -> ( 'diff, 'info, 'cdata ) Dag.tval create_property : ( 'e, 'i, 'c ) t -> id list -> 'c -> ( 'e, 'i, 'c ) tval gc : ( 'e, 'info, 'c ) t -> ( 'e, 'info, 'c ) t * Dag.NodeSet.tval reachable : ( 'e, 'info, 'c ) t -> id -> Dag.NodeSet.t