sig
  type 'a p = I of int * 'a | R of int | U of int * 'a | X of int * int
  type 'a patch = 'a p list
  type 'a t = 'a ReactiveData.RList.t
  type 'a data = 'a list
  type 'a msg = Patch of 'a patch | Set of 'a data
  type 'a handle = 'a ReactiveData.RList.handle
  val empty : 'a t
  val from_event : 'a data -> 'a msg React.E.t -> 'a t
  val const : 'a data -> 'a t
  val patch : 'a handle -> 'a patch -> unit
  val set : 'a handle -> 'a data -> unit
  val map_msg : ('a -> 'b) -> 'a msg -> 'b msg
  val fold : ('a -> 'b msg -> 'a) -> 'b t -> 'a -> 'a React.signal
  val event : 'a t -> 'a msg React.E.t
  val cons : 'a -> 'a handle -> unit
  val snoc : 'a -> 'a handle -> unit
  val insert : 'a -> int -> 'a handle -> unit
  val remove : int -> 'a handle -> unit
  val remove_last : 'a t * 'a handle -> unit
  val remove_eq : ?eq:('a -> 'a -> bool) -> 'a t * 'a handle -> 'a -> unit
  val update : 'a -> int -> 'a handle -> unit
  val update_eq :
    ?eq:('a -> 'a -> bool) -> 'a t * 'a handle -> 'a -> 'a -> unit
  val move : int -> int -> 'a handle -> unit
  val singleton : 'a -> 'a t
  val rev : 'a t -> 'a t
  val filter : ('a -> bool) -> 'a t -> 'a t
  val for_all : ('a -> bool) -> 'a t -> bool React.S.t
  val create :
    ?default:('a ReactiveData.RList.t * 'a ReactiveData.RList.handle) option
             Eliom_client_value.t ->
    ?reset_default:bool -> 'a list -> 'a t * 'a handle
  val concat : 'a t -> 'a t -> 'a t
  val value : 'a t -> 'a list Value.t
  val signal : ?eq:('a -> 'a -> bool) Value.t -> 'a t -> 'a list React.S.t
  val singleton_s : 'a React.S.t -> 'a t
  val map : ('a -> 'b) Value.t -> 'a t -> 'b t
  val from_signal :
    ?eq:('a -> 'a -> bool) Value.t -> 'a list React.S.t -> 'a t
  val acc_e :
    ?init:'a t * 'a handle -> 'a React.E.t Eliom_client_value.t -> 'a t
  module Lwt :
    sig val map_p : ('a -> 'b Lwt.t) Value.t -> 'a t -> 'b t Lwt.t end
end