sig
  type +'a event
  type +'a behavior
  val never : 'Fr.event
  val now : unit Fr.event
  type -'a event_receiver
  val event_receiver : unit -> 'Fr.event_receiver * 'Fr.event
  val send_event : 'Fr.event_receiver -> '-> unit
  val tag_e : '-> 'Fr.event -> 'Fr.event
  val map_e : ('-> 'b) -> 'Fr.event -> 'Fr.event
  val filter_e : ('-> bool) -> 'Fr.event -> 'Fr.event
  val may_e : 'a option Fr.event -> 'Fr.event
  val zip_e : 'Fr.event -> 'Fr.event -> ('a * 'b) Fr.event
  val unzip_e : ('a * 'b) Fr.event -> 'Fr.event * 'Fr.event
  val merge_e : 'Fr.event list -> 'Fr.event
  val par_e : 'Fr.event list -> 'a list Fr.event
  val once_e : 'Fr.event -> 'Fr.event
  val snapshot_e : 'Fr.event -> 'Fr.event -> 'a option Fr.event
  val accum_e : '-> ('-> 'a) Fr.event -> 'Fr.event
  val collect_e : ('-> '-> 'a) -> '-> 'Fr.event -> 'Fr.event
  val changes : 'Fr.behavior -> 'Fr.event
  val changesq : 'Fr.behavior -> 'Fr.event
  val delta : ('-> '-> 'b) -> 'Fr.behavior -> 'Fr.event
  val when_e : bool Fr.behavior -> unit Fr.event
  val edge_e : 'a option Fr.behavior -> 'Fr.event
  val switch_e : 'Fr.event -> 'Fr.event Fr.event -> 'Fr.event
  val map_wait_e : ('-> 'Fr.event) -> 'Fr.event -> 'Fr.event
  val collapse_e : 'Fr.event Fr.behavior -> 'Fr.event
  val fix_e : ('-> 'Fr.event) -> ('Fr.event -> 'a) -> 'a
  type -'a cell
  val new_cell : '-> 'Fr.cell * 'Fr.behavior
  val set_cell : 'Fr.cell -> '-> unit
  val snapshot_b : 'Fr.behavior -> 'Fr.event -> 'Fr.event
  val latch : 'Fr.behavior -> 'Fr.event -> 'Fr.event
  val hold : '-> 'Fr.event -> 'Fr.behavior
  val gate_b : 'Fr.behavior -> 'Fr.event -> 'Fr.behavior
  val track : '-> 'a option Fr.behavior -> 'Fr.behavior
  val zip_b : 'Fr.behavior -> 'Fr.behavior -> ('a * 'b) Fr.behavior
  val unzip_b : ('a * 'b) Fr.behavior -> 'Fr.behavior * 'Fr.behavior
  val par_b : 'Fr.behavior list -> 'a list Fr.behavior
  val accum_b : '-> ('-> 'a) Fr.event -> 'Fr.behavior
  val collect_b : ('-> '-> 'a) -> '-> 'Fr.event -> 'Fr.behavior
  val switch_b : 'Fr.behavior -> 'Fr.behavior Fr.event -> 'Fr.behavior
  val sswitch_b :
    ('-> 'b) ->
    ('-> 'Fr.behavior) ->
    '-> ('-> 'Fr.behavior) Fr.event -> 'Fr.behavior
  val collapse_b : 'Fr.behavior Fr.behavior -> 'Fr.behavior
  val scollapse_b :
    ('-> 'b) -> '-> ('-> 'Fr.behavior) Fr.behavior -> 'Fr.behavior
  val fix_b : ('-> 'Fr.behavior) -> ('Fr.behavior -> 'a) -> 'a
  val lift0 : '-> 'Fr.behavior
  val lift1 : ('-> 'b) -> 'Fr.behavior -> 'Fr.behavior
  val lift2 :
    ('-> '-> 'c) -> 'Fr.behavior -> 'Fr.behavior -> 'Fr.behavior
  val lift3 :
    ('-> '-> '-> 'd) ->
    'Fr.behavior -> 'Fr.behavior -> 'Fr.behavior -> 'Fr.behavior
  val lift1q : ('-> 'b) -> 'Fr.behavior -> 'Fr.behavior
  val lift2q :
    ('-> '-> 'c) -> 'Fr.behavior -> 'Fr.behavior -> 'Fr.behavior
  val lift3q :
    ('-> '-> '-> 'd) ->
    'Fr.behavior -> 'Fr.behavior -> 'Fr.behavior -> 'Fr.behavior
  type endpoint
  val register_e : 'Fr.event -> Fr.endpoint
  val register_b : 'Fr.behavior -> Fr.endpoint
  val unregister : Fr.endpoint -> unit
  val event_source :
    ('Fr.event_receiver -> 'b) -> ('-> unit) -> 'Fr.event
  val behavior_source :
    (unit -> 'a) -> ('Fr.cell -> 'b) -> ('-> unit) -> 'Fr.behavior
  val id : '-> 'a
  val dup : '-> 'a * 'a
  val some : '-> 'a option
  val curry2 : ('a * '-> 'c) -> '-> '-> 'c
  val uncurry2 : ('-> '-> 'c) -> 'a * '-> 'c
  val curry3 : (('a * 'b) * '-> 'd) -> '-> '-> '-> 'd
  val uncurry3 : ('-> '-> '-> 'd) -> ('a * 'b) * '-> 'd
  val ( $ ) : ('-> 'b) -> ('-> 'a) -> '-> 'b
  val first : '-> '-> 'a
  val second : '-> '-> 'b
  val ( =* ) : '-> '-> bool
  val ( <>* ) : '-> '-> bool
  module Mixed :
    sig
      type +'a t
      val construct : 'Fr.behavior -> 'Fr.event -> 'Fr.Mixed.t
      val of_event : 'Fr.event -> 'a option Fr.Mixed.t
      val of_behavior : 'Fr.behavior -> 'Fr.Mixed.t
      val with_event : 'Fr.Mixed.t -> 'Fr.event -> 'Fr.Mixed.t
      val with_behavior : 'Fr.Mixed.t -> 'Fr.behavior -> 'Fr.Mixed.t
      val behavior_part : 'Fr.Mixed.t -> 'Fr.behavior
      val event_part : 'Fr.Mixed.t -> 'Fr.event
      val destruct : 'Fr.Mixed.t -> 'Fr.behavior * 'Fr.event
      val nothing : 'a option Fr.Mixed.t
      val map : ('-> 'b) -> 'Fr.Mixed.t -> 'Fr.Mixed.t
      val merge :
        ('-> '-> 'c) -> 'Fr.Mixed.t -> 'Fr.Mixed.t -> 'Fr.Mixed.t
      val zip : 'Fr.Mixed.t -> 'Fr.Mixed.t -> ('a * 'b) Fr.Mixed.t
      val snapshot : 'Fr.Mixed.t -> 'Fr.event -> 'Fr.event
      val unzip : ('a * 'b) Fr.Mixed.t -> 'Fr.Mixed.t * 'Fr.Mixed.t
      val par : 'Fr.Mixed.t list -> 'a list Fr.Mixed.t
      val may : '-> 'a option Fr.Mixed.t -> 'Fr.Mixed.t
      val switch : 'Fr.Mixed.t -> 'Fr.Mixed.t Fr.event -> 'Fr.Mixed.t
      val collapse : 'Fr.Mixed.t Fr.behavior -> 'Fr.Mixed.t
      val meta : 'Fr.Mixed.t Fr.Mixed.t -> 'Fr.Mixed.t
      val fix : ('-> 'Fr.Mixed.t) -> ('Fr.Mixed.t -> 'a) -> 'a
    end
  type 'a mixed = 'Fr.Mixed.t
end