sig
  type ('a, +'b) eref'
  type 'a eref = ('a, [ `Persistent | `Volatile ]) Eliom_reference.eref'
  val eref :
    scope:[< Eliom_common.all_scope ] ->
    ?secure:bool -> ?persistent:string -> 'a -> 'a Eliom_reference.eref
  val eref_from_fun :
    scope:[< Eliom_common.all_scope ] ->
    ?secure:bool ->
    ?persistent:string -> (unit -> 'a) -> 'a Eliom_reference.eref
  val get : 'a Eliom_reference.eref -> 'a Lwt.t
  val set : 'a Eliom_reference.eref -> 'a -> unit Lwt.t
  val modify : 'a Eliom_reference.eref -> ('a -> 'a) -> unit Lwt.t
  val unset : 'a Eliom_reference.eref -> unit Lwt.t
  module Volatile :
    sig
      type 'a eref = ('a, [ `Volatile ]) Eliom_reference.eref'
      val eref :
        scope:[< Eliom_common.all_scope ] ->
        ?secure:bool -> 'a -> 'a Eliom_reference.Volatile.eref
      val eref_from_fun :
        scope:[< Eliom_common.all_scope ] ->
        ?secure:bool -> (unit -> 'a) -> 'a Eliom_reference.Volatile.eref
      val get : 'a Eliom_reference.Volatile.eref -> 'a
      val set : 'a Eliom_reference.Volatile.eref -> 'a -> unit
      val modify : 'a Eliom_reference.Volatile.eref -> ('a -> 'a) -> unit
      val unset : 'a Eliom_reference.Volatile.eref -> unit
    end
end