sig
  type event = EVENT_VALUES of Unix.sockaddr list | EVENT_SEARCH_DONE
  val init : Unix.file_descr -> Unix.file_descr -> id:string -> unit
  val insert_node : id:string -> Unix.sockaddr -> unit
  val ping_node : Unix.sockaddr -> unit
  val periodic :
    (bytes * int * Unix.sockaddr) option ->
    (Dht.event -> id:string -> unit) -> float
  val search :
    id:string ->
    ?port:int ->
    ?af:Unix.socket_domain -> (Dht.event -> id:string -> unit) -> unit
  val get_nodes : int -> int -> Unix.sockaddr list
  type nodes = { good : int; dubious : int; cached : int; incoming : int; }
  val nodes : Unix.socket_domain -> Dht.nodes
end