sig
  type 'a signal = 'React.S.t
  type 'a signal_list_wrap = 'ReactiveData.RList.t
  module Source :
    sig
      type 'a t
      val create :
        ?eq:('-> '-> bool) -> '-> 'Ketrew_pure.Reactive.Source.t
      val set : 'Ketrew_pure.Reactive.Source.t -> '-> unit
      val signal :
        'Ketrew_pure.Reactive.Source.t -> 'Ketrew_pure.Reactive.signal
      val value : 'Ketrew_pure.Reactive.Source.t -> 'a
      val modify : 'Ketrew_pure.Reactive.Source.t -> f:('-> 'a) -> unit
      val modify_opt :
        'Ketrew_pure.Reactive.Source.t -> f:('-> 'a option) -> unit
      val map_signal :
        'Ketrew_pure.Reactive.Source.t ->
        f:('-> 'b) -> 'Ketrew_pure.Reactive.signal
    end
  module Signal :
    sig
      type 'a t = 'Ketrew_pure.Reactive.signal
      val map :
        'Ketrew_pure.Reactive.Signal.t ->
        f:('-> 'b) -> 'Ketrew_pure.Reactive.Signal.t
      val bind :
        'Ketrew_pure.Reactive.Signal.t ->
        f:('-> 'Ketrew_pure.Reactive.Signal.t) ->
        'Ketrew_pure.Reactive.Signal.t
      val constant : '-> 'Ketrew_pure.Reactive.Signal.t
      val value : 'Ketrew_pure.Reactive.Signal.t -> 'a
      val singleton :
        'Ketrew_pure.Reactive.Signal.t ->
        'Ketrew_pure.Reactive.signal_list_wrap
      val list :
        'a list Ketrew_pure.Reactive.Signal.t ->
        'Ketrew_pure.Reactive.signal_list_wrap
      val tuple_2 :
        'Ketrew_pure.Reactive.Signal.t ->
        'Ketrew_pure.Reactive.Signal.t ->
        ('a * 'b) Ketrew_pure.Reactive.Signal.t
      val tuple_3 :
        'Ketrew_pure.Reactive.Signal.t ->
        'Ketrew_pure.Reactive.Signal.t ->
        'Ketrew_pure.Reactive.Signal.t ->
        ('a * 'b * 'c) Ketrew_pure.Reactive.Signal.t
    end
end