sig
  exception Not_supported
  class type ['message] messageEvent = ['message] EventSource.messageEvent
  type 'a message = 'BroadcastChannel.messageEvent Js.t
  class type ['message] broadcaster =
    object ('a)
      method close : unit -> unit Js.meth
      method name : Js.js_string Js.t Js.readonly_prop
      method onclick :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondblclick :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondrag :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragend :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragenter :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragleave :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragover :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondragstart :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method ondrop :
        ('Js.t, Dom_html.dragEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onkeydown :
        ('Js.t, Dom_html.keyboardEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onkeypress :
        ('Js.t, Dom_html.keyboardEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onkeyup :
        ('Js.t, Dom_html.keyboardEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmessage :
        ('Js.t, 'message BroadcastChannel.message) Dom_html.event_listener
        Js.writeonly_prop
      method onmousedown :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmousemove :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmouseout :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmouseover :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onmouseup :
        ('Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method onscroll :
        ('Js.t, Dom_html.event Js.t) Dom_html.event_listener
        Js.writeonly_prop
      method postMessage : 'message -> unit Js.meth
    end
  type 'a t = 'BroadcastChannel.broadcaster Js.t
  val is_supported : unit -> bool
  val create : string -> 'message BroadcastChannel.t
  val create_with :
    string ->
    '-> 'BroadcastChannel.t * 'BroadcastChannel.message Dom.Event.typ
  val close : 'message BroadcastChannel.t -> unit
  val name : 'message BroadcastChannel.t -> string
  val post : 'message BroadcastChannel.t -> 'message -> unit
  val on :
    'message BroadcastChannel.t ->
    ('message BroadcastChannel.message -> bool Js.t) -> unit
  val addEventListener :
    'BroadcastChannel.t ->
    'BroadcastChannel.message Dom.Event.typ ->
    ('BroadcastChannel.t, 'BroadcastChannel.message) Dom.event_listener ->
    bool Js.t -> Dom.event_listener_id
  val message :
    'BroadcastChannel.t -> 'BroadcastChannel.message Dom.Event.typ
  val lwt_js_message :
    ?use_capture:bool ->
    'BroadcastChannel.t -> 'BroadcastChannel.messageEvent Js.t Lwt.t
end