// https://dom.spec.whatwg.org/#eventtarget
[Exposed=*]
interface EventTarget {
    constructor();

    undefined addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options = {});
    undefined removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options = {});
    [ImplementedAs=dispatch_event_binding] boolean dispatchEvent(Event event);
};

dictionary EventListenerOptions {
    boolean capture = false;
};

dictionary AddEventListenerOptions : EventListenerOptions {
    boolean passive;
    boolean once = false;
    AbortSignal signal;
};
