functor (Key : Shredded_Type->
  functor (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