sig
  module Make :
    functor (A : sig type key type value end->
      sig
        class cache :
          (A.key -> A.value Lwt.t) ->
          ?timer:float ->
          int ->
          object
            method add : A.key -> A.value -> unit
            method clear : unit -> unit
            method find : A.key -> A.value Lwt.t
            method find_in_cache : A.key -> A.value
            method remove : A.key -> unit
            method size : int
          end
      end
  val clear_all_caches : unit -> unit
  module Dlist :
    sig
      type 'a t
      type 'a node
      val create : ?timer:float -> int -> 'Ocsigen_cache.Dlist.t
      val add : '-> 'Ocsigen_cache.Dlist.t -> 'a option
      val remove : 'Ocsigen_cache.Dlist.node -> unit
      val up : 'Ocsigen_cache.Dlist.node -> unit
      val newest :
        'Ocsigen_cache.Dlist.t -> 'Ocsigen_cache.Dlist.node option
      val oldest :
        'Ocsigen_cache.Dlist.t -> 'Ocsigen_cache.Dlist.node option
      val size : 'Ocsigen_cache.Dlist.t -> int
      val maxsize : 'Ocsigen_cache.Dlist.t -> int
      val value : 'Ocsigen_cache.Dlist.node -> 'a
      val get_timer : 'Ocsigen_cache.Dlist.t -> float option
      val list_of :
        'Ocsigen_cache.Dlist.node -> 'Ocsigen_cache.Dlist.t option
      val remove_n_oldest : 'Ocsigen_cache.Dlist.t -> int -> 'a list
      val fold : ('-> '-> 'b) -> '-> 'Ocsigen_cache.Dlist.t -> 'b
      val fold_back :
        ('-> '-> 'b) -> '-> 'Ocsigen_cache.Dlist.t -> 'b
      val lwt_fold :
        ('-> '-> 'Lwt.t) -> '-> 'Ocsigen_cache.Dlist.t -> 'Lwt.t
      val lwt_fold_back :
        ('-> '-> 'Lwt.t) -> '-> 'Ocsigen_cache.Dlist.t -> 'Lwt.t
      val move :
        'Ocsigen_cache.Dlist.node -> 'Ocsigen_cache.Dlist.t -> 'a option
      val set_maxsize : 'Ocsigen_cache.Dlist.t -> int -> 'a list
      val set_finaliser_before :
        ('Ocsigen_cache.Dlist.node -> unit) ->
        'Ocsigen_cache.Dlist.t -> unit
      val get_finaliser_before :
        'Ocsigen_cache.Dlist.t -> 'Ocsigen_cache.Dlist.node -> unit
      val set_finaliser_after :
        ('Ocsigen_cache.Dlist.node -> unit) ->
        'Ocsigen_cache.Dlist.t -> unit
      val get_finaliser_after :
        'Ocsigen_cache.Dlist.t -> 'Ocsigen_cache.Dlist.node -> unit
    end
end