sig
  type 'a t
  type store
  val open_store : string -> Ocsipersist.store
  val make_persistent :
    store:Ocsipersist.store ->
    name:string -> default:'a -> 'a Ocsipersist.t Lwt.t
  val make_persistent_lazy :
    store:Ocsipersist.store ->
    name:string -> default:(unit -> 'a) -> 'a Ocsipersist.t Lwt.t
  val make_persistent_lazy_lwt :
    store:Ocsipersist.store ->
    name:string -> default:(unit -> 'a Lwt.t) -> 'a Ocsipersist.t Lwt.t
  val get : 'a Ocsipersist.t -> 'a Lwt.t
  val set : 'a Ocsipersist.t -> 'a -> unit Lwt.t
  type 'value table
  val table_name : 'value Ocsipersist.table -> string Lwt.t
  val open_table : string -> 'value Ocsipersist.table
  val find : 'value Ocsipersist.table -> string -> 'value Lwt.t
  val add : 'value Ocsipersist.table -> string -> 'value -> unit Lwt.t
  val replace_if_exists :
    'value Ocsipersist.table -> string -> 'value -> unit Lwt.t
  val remove : 'value Ocsipersist.table -> string -> unit Lwt.t
  val length : 'value Ocsipersist.table -> int Lwt.t
  val iter_step :
    (string -> 'a -> unit Lwt.t) -> 'a Ocsipersist.table -> unit Lwt.t
  val iter_table :
    (string -> 'a -> unit Lwt.t) -> 'a Ocsipersist.table -> unit Lwt.t
  val fold_step :
    (string -> 'a -> 'b -> 'b Lwt.t) ->
    'a Ocsipersist.table -> 'b -> 'b Lwt.t
  val fold_table :
    (string -> 'a -> 'b -> 'b Lwt.t) ->
    'a Ocsipersist.table -> 'b -> 'b Lwt.t
  val iter_block :
    (string -> 'a -> unit) -> 'a Ocsipersist.table -> unit Lwt.t
end