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 -> '-> 'Eliom_reference.eref
  val eref_from_fun :
    scope:[< Eliom_common.all_scope ] ->
    ?secure:bool ->
    ?persistent:string -> (unit -> 'a) -> 'Eliom_reference.eref
  val get : 'Eliom_reference.eref -> 'Lwt.t
  val set : 'Eliom_reference.eref -> '-> unit Lwt.t
  val modify : 'Eliom_reference.eref -> ('-> 'a) -> unit Lwt.t
  val unset : '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 -> '-> 'Eliom_reference.Volatile.eref
      val eref_from_fun :
        scope:[< Eliom_common.all_scope ] ->
        ?secure:bool -> (unit -> 'a) -> 'Eliom_reference.Volatile.eref
      val get : 'Eliom_reference.Volatile.eref -> 'a
      val set : 'Eliom_reference.Volatile.eref -> '-> unit
      val modify : 'Eliom_reference.Volatile.eref -> ('-> 'a) -> unit
      val unset : 'Eliom_reference.Volatile.eref -> unit
    end
end