functor (Key : Shredded_Type) (Value : Shredded_Type->
  sig
    type hash
    type hash_key = Key.t
    type hash_value = Value.t
    val hash_open :
      string ->
      int -> bool -> Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash
    val hash_put :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value -> unit
    val hash_get :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value option
    val hash_get_all :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value Cursor.cursor
    val hash_delete :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key -> unit
    val hash_close :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash -> unit
    val hash_sync :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash -> unit
    type hash_cursor
    type cursor_direction = Next | Prev
    val hash_cursor_to_cursor :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.cursor_direction ->
      (Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
       Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value)
      Cursor.cursor
    val hash_cursor_open :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor
    val hash_cursor_put :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value -> unit
    val hash_cursor_get_next :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      (Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
       Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value)
      option
    val hash_cursor_get_prev :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      (Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
       Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value)
      option
    val hash_cursor_get_first :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      (Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
       Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value)
      option
    val hash_cursor_get_last :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      (Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
       Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value)
      option
    val hash_cursor_get_set :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key ->
      (Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
       Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value)
      option
    val hash_cursor_get_both :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor ->
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value ->
      (Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_key *
       Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_value)
      option
    val hash_cursor_del :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor -> unit
    val hash_cursor_close :
      Shredded_store_sigs.Shredded_Hash_Functor_Sig.hash_cursor -> unit
  end