sig
  module type Shredded_Cell_Type =
    sig
      type t
      type encoded_type = char array
      val encode :
        Shredded_store_sigs.Shredded_Cell_Type.t ->
        Shredded_store_sigs.Shredded_Cell_Type.encoded_type
      val decode :
        Shredded_store_sigs.Shredded_Cell_Type.encoded_type ->
        Shredded_store_sigs.Shredded_Cell_Type.t
      val in_same_cell :
        Shredded_store_sigs.Shredded_Cell_Type.t ->
        Shredded_store_sigs.Shredded_Cell_Type.t -> int -> bool
    end
  module type Shredded_Type =
    sig
      type t
      type encoded_type = char array
      val encode :
        Shredded_store_sigs.Shredded_Type.t ->
        Shredded_store_sigs.Shredded_Type.encoded_type
      val decode :
        Shredded_store_sigs.Shredded_Type.encoded_type ->
        Shredded_store_sigs.Shredded_Type.t
    end
  module type Shredded_OrderedType =
    sig
      type t
      type encoded_type = char array
      val encode :
        Shredded_store_sigs.Shredded_OrderedType.t ->
        Shredded_store_sigs.Shredded_OrderedType.encoded_type
      val decode :
        Shredded_store_sigs.Shredded_OrderedType.encoded_type ->
        Shredded_store_sigs.Shredded_OrderedType.t
      val compare :
        Shredded_store_sigs.Shredded_OrderedType.t ->
        Shredded_store_sigs.Shredded_OrderedType.t -> int
      val fprintf_value :
        Format.formatter ->
        Shredded_store_sigs.Shredded_OrderedType.t -> unit
    end
  module type Record_Type =
    sig
      type record
      val is_fixed_length : unit -> bool
      val get_record_size : unit -> int
      val encode : Shredded_store_sigs.Record_Type.record -> char array
      val decode : char array -> Shredded_store_sigs.Record_Type.record
    end
  module type Generator =
    sig
      type handle
      type t
      val seed_value : Shredded_store_sigs.Generator.t
      val build_gen :
        Shredded_store_sigs.Generator.t ->
        Shredded_store_sigs.Generator.handle
      val new_value :
        Shredded_store_sigs.Generator.handle ->
        Shredded_store_sigs.Generator.t
    end
  module type Shredded_Basetypes =
    sig
      val implemid : Nodeid.implemid
      val implem_name : string
      val is_persistent : unit -> bool
      type store_id
      type docorder = Nodeid.docorder
      type preorder = Nodeid.large_preorder
      module Preorder_Module :
        sig
          type t = preorder
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
          val compare : t -> t -> int
          val fprintf_value : Format.formatter -> t -> unit
        end
      type nodeid = Nodeid.nodeid
      type stored_nodeid = int
      module Stored_Nodeid_Module :
        sig
          type t = stored_nodeid
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
          val compare : t -> t -> int
          val fprintf_value : Format.formatter -> t -> unit
        end
      type stored_preorder_nodeid_pair =
          Shredded_store_sigs.Shredded_Basetypes.preorder *
          Shredded_store_sigs.Shredded_Basetypes.stored_nodeid
      module Stored_Preorder_Nodeid_Module :
        sig
          type t = stored_preorder_nodeid_pair
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
          val compare : t -> t -> int
          val fprintf_value : Format.formatter -> t -> unit
        end
      module Stored_Preorder_Nodeid_Record_Module :
        sig
          type record = stored_preorder_nodeid_pair
          val is_fixed_length : unit -> bool
          val get_record_size : unit -> int
          val encode : record -> char array
          val decode : char array -> record
        end
      type textid = int
      module Textid_Module :
        sig
          type t = textid
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
          val compare : t -> t -> int
          val fprintf_value : Format.formatter -> t -> unit
        end
      type namespaceid = int
      module Namespaceid_Module :
        sig
          type t = namespaceid
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type binding =
          Shredded_store_sigs.Shredded_Basetypes.namespaceid *
          Namespace_context.binding_table
      module Binding_Module :
        sig
          type t = binding
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type comment = string
      module Comment_Module :
        sig
          type t = comment
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type eqnameid = int
      module Eqnameid_Module :
        sig
          type t = eqnameid
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type eqname = Namespace_names.uri * Namespace_names.ncname
      module Eqname_Module :
        sig
          type t = eqname
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type prefixid = int
      module Prefixid_Module :
        sig
          type t = prefixid
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type prefix = string
      module Prefix_Module :
        sig
          type t = prefix
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type stored_atomic_value_list =
          Shredded_store_sigs.Shredded_Basetypes.namespaceid *
          (Datatypes.atomic_type * string) list
      module Stored_Atomic_Value_List_Module :
        sig
          type t = stored_atomic_value_list
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type stored_atomic_value_list_with_nilled =
          bool *
          Shredded_store_sigs.Shredded_Basetypes.stored_atomic_value_list
      module Stored_Atomic_Value_List_With_Nilled_Module :
        sig
          type t = stored_atomic_value_list_with_nilled
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type commentid = int
      module Commentid_Module :
        sig
          type t = commentid
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type processing = Namespace_names.ncname * Datatypes.xs_untyped
      module Processing_Instruction_Module :
        sig
          type t = processing
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type processingid = int
      module Processingid_Module :
        sig
          type t = processingid
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type text
      module Text_Module :
        sig
          type t = text
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
          val compare : t -> t -> int
          val fprintf_value : Format.formatter -> t -> unit
        end
      type metadata_key = string
      module Metadata_Key_Module :
        sig
          type t = metadata_key
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type metadata_value = string
      module Metadata_Value_Module :
        sig
          type t = metadata_value
          type encoded_type = char array
          val encode : t -> encoded_type
          val decode : encoded_type -> t
        end
      type cell_id
      module Cell_Id : Shredded_Cell_Type
      val string_of_text :
        Shredded_store_sigs.Shredded_Basetypes.text -> string
      val text_of_xml_attribute :
        string -> Shredded_store_sigs.Shredded_Basetypes.text
      val xml_attribute_of_text :
        Shredded_store_sigs.Shredded_Basetypes.text -> string
      val text_of_text_desc :
        string -> Shredded_store_sigs.Shredded_Basetypes.text
      val text_desc_of_text :
        Shredded_store_sigs.Shredded_Basetypes.text -> string
      val xs_untyped_of_text :
        Shredded_store_sigs.Shredded_Basetypes.text -> Datatypes.xs_untyped
      val text_of_xs_untyped :
        Datatypes.xs_untyped -> Shredded_store_sigs.Shredded_Basetypes.text
      type elem_eqnameid = Shredded_store_sigs.Shredded_Basetypes.eqnameid
      type attr_eqnameid = Shredded_store_sigs.Shredded_Basetypes.eqnameid
      type type_eqnameid = Shredded_store_sigs.Shredded_Basetypes.eqnameid
      type elem_symbol =
          Shredded_store_sigs.Shredded_Basetypes.prefixid *
          Shredded_store_sigs.Shredded_Basetypes.elem_eqnameid
      type attr_symbol =
          Shredded_store_sigs.Shredded_Basetypes.prefixid *
          Shredded_store_sigs.Shredded_Basetypes.attr_eqnameid
      type type_symbol =
          Shredded_store_sigs.Shredded_Basetypes.prefixid *
          Shredded_store_sigs.Shredded_Basetypes.type_eqnameid
      type record_specific =
          ElementRecord of
            (Shredded_store_sigs.Shredded_Basetypes.elem_symbol *
             Shredded_store_sigs.Shredded_Basetypes.namespaceid *
             Shredded_store_sigs.Shredded_Basetypes.type_symbol option)
        | AttributeRecord of
            (Shredded_store_sigs.Shredded_Basetypes.attr_symbol *
             Shredded_store_sigs.Shredded_Basetypes.textid *
             Shredded_store_sigs.Shredded_Basetypes.type_symbol option)
        | TextRecord of Shredded_store_sigs.Shredded_Basetypes.textid
        | PIRecord of Shredded_store_sigs.Shredded_Basetypes.processingid
        | CommentRecord of Shredded_store_sigs.Shredded_Basetypes.commentid
        | DocumentRecord
      type record_kind =
          ElementRecordKind
        | AttributeRecordKind
        | TextRecordKind
        | PIRecordKind
        | CommentRecordKind
        | DocumentRecordKind
      type nsenv_hash_table_type =
          (Shredded_store_sigs.Shredded_Basetypes.namespaceid,
           Namespace_context.nsenv)
          Hashtbl.t
      module Stored_Nodeid_Generator :
        sig
          type handle
          type t = stored_nodeid
          val seed_value : t
          val build_gen : t -> handle
          val new_value : handle -> t
        end
      module Textid_Generator :
        sig
          type handle
          type t = textid
          val seed_value : t
          val build_gen : t -> handle
          val new_value : handle -> t
        end
      module Namespaceid_Generator :
        sig
          type handle
          type t = namespaceid
          val seed_value : t
          val build_gen : t -> handle
          val new_value : handle -> t
        end
      module Commentid_Generator :
        sig
          type handle
          type t = commentid
          val seed_value : t
          val build_gen : t -> handle
          val new_value : handle -> t
        end
      module Processingid_Generator :
        sig
          type handle
          type t = processingid
          val seed_value : t
          val build_gen : t -> handle
          val new_value : handle -> t
        end
      module Prefixid_Generator :
        sig
          type handle
          type t = prefixid
          val seed_value : t
          val build_gen : t -> handle
          val new_value : handle -> t
        end
      module Eqnameid_Generator :
        sig
          type handle
          type t = eqnameid
          val seed_value : t
          val build_gen : t -> handle
          val new_value : handle -> t
        end
    end
  module type Node_Record =
    sig
      type record
      type preorder
      type stored_nodeid
      type record_specific
      type record_kind
      type eqnameid
      type namespaceid
      type prefixid
      type textid
      type commentid
      type processingid
      type symbol =
          Shredded_store_sigs.Node_Record.prefixid *
          Shredded_store_sigs.Node_Record.eqnameid
      val is_fixed_length : unit -> bool
      val get_record_size : unit -> int
      val encode : Shredded_store_sigs.Node_Record.record -> char array
      val decode : char array -> Shredded_store_sigs.Node_Record.record
      val create_record :
        Shredded_store_sigs.Node_Record.preorder ->
        Shredded_store_sigs.Node_Record.stored_nodeid option ->
        Shredded_store_sigs.Node_Record.record_specific ->
        Shredded_store_sigs.Node_Record.record
      val get_preorder :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.preorder
      val set_preorder :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.preorder ->
        Shredded_store_sigs.Node_Record.record
      val get_parent :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.stored_nodeid option
      val set_parent :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.stored_nodeid option ->
        Shredded_store_sigs.Node_Record.record
      val get_name_eqnameid :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.eqnameid
      val get_name_prefixid :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.prefixid
      val get_name_symbol :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.symbol
      val set_name_symbol :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.symbol ->
        Shredded_store_sigs.Node_Record.record
      val get_type_eqnameid :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.eqnameid option
      val get_type_prefixid :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.prefixid option
      val get_type_symbol :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.symbol option
      val set_type_symbol :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.symbol option ->
        Shredded_store_sigs.Node_Record.record
      val get_attribute_value_id :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.textid
      val get_textid :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.textid
      val get_kind :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.record_kind
      val get_specific :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.record_specific
      val get_namespaceid :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.namespaceid
      val is_text_record : Shredded_store_sigs.Node_Record.record -> bool
      val is_elem_record : Shredded_store_sigs.Node_Record.record -> bool
      val is_attr_record : Shredded_store_sigs.Node_Record.record -> bool
      val get_commentid :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.commentid
      val get_processing_instruction_id :
        Shredded_store_sigs.Node_Record.record ->
        Shredded_store_sigs.Node_Record.processingid
    end
  module type Shredded_Recno_Functor_Sig =
    functor (BaseTypes : Shredded_Basetypes) (Record : Record_Type->
      sig
        type recno_handle
        type record = Record.record
        type cursor_direction = Next | Prev
        val recno_open :
          string ->
          int -> Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle
        val recno_put :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle ->
          BaseTypes.stored_nodeid ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record -> unit
        val recno_get :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle ->
          BaseTypes.stored_nodeid ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record option
        val recno_get_unsafe :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle ->
          BaseTypes.stored_nodeid ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record
        val recno_delete :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle ->
          BaseTypes.stored_nodeid -> unit
        val recno_close :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle -> unit
        val recno_close_no_sync :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle -> unit
        val recno_sync :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle -> unit
        type recno_cursor
        val recno_cursor_to_cursor :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.cursor_direction ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record Cursor.cursor
        val recno_cursor_open :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_handle ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor
        val recno_cursor_put :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          BaseTypes.stored_nodeid ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record -> unit
        val recno_cursor_get_next :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record option
        val recno_cursor_get_prev :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record option
        val recno_cursor_get_first :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record option
        val recno_cursor_get_last :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record option
        val recno_cursor_get_next_dup :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record option
        val recno_cursor_get_set :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor ->
          BaseTypes.stored_nodeid ->
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.record option
        val recno_cursor_del :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor -> unit
        val recno_cursor_close :
          Shredded_store_sigs.Shredded_Recno_Functor_Sig.recno_cursor -> unit
      end
  module type Shredded_Btree_Functor_Sig =
    functor (Key : Shredded_OrderedType) (Value : Shredded_OrderedType->
      sig
        type btree_handle
        type btree_key = Key.t
        type btree_value = Value.t
        type btree_cursor
        type cursor_direction = Next | Prev
        val btree_open :
          string ->
          int ->
          bool -> Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle
        val btree_put :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value -> unit
        val btree_get :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value option
        val btree_get_all :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value
          Cursor.cursor
        val btree_delete :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value -> unit
        val btree_delete_all :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key -> unit
        val btree_close :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle -> unit
        val btree_sync :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle -> unit
        val btree_cursor_to_cursor :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.cursor_direction ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          Cursor.cursor
        val btree_cursor_open :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_handle ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor
        val btree_cursor_put :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value -> unit
        val btree_cursor_get_first :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_get_last :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_get_next :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_get_prev :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_get_set :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_get_both :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_get_set_range :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_get_both_range :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor ->
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value ->
          (Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_key *
           Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_value)
          option
        val btree_cursor_del :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor -> unit
        val btree_cursor_close :
          Shredded_store_sigs.Shredded_Btree_Functor_Sig.btree_cursor -> unit
      end
  module type Shredded_Hash_Functor_Sig =
    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
end