/**
 * mock-xmlhttprequest v8.4.1
 * (c) 2025 Bertrand Guay-Paquet
 * @license MIT
 */

/**
 * Implementation of XMLHttpRequestEventTarget. A target for dispatching events.
 *
 * See https://xhr.spec.whatwg.org/#xmlhttprequesteventtarget
 */
export default class XhrEventTarget implements XMLHttpRequestEventTarget {
    private _eventContext;
    private _listeners;
    constructor(eventContext?: XMLHttpRequestEventTarget);
    get onabort(): EventHandlerProperty | null;
    set onabort(value: EventHandlerProperty | null);
    get onerror(): EventHandlerProperty | null;
    set onerror(value: EventHandlerProperty | null);
    get onload(): EventHandlerProperty | null;
    set onload(value: EventHandlerProperty | null);
    get onloadend(): EventHandlerProperty | null;
    set onloadend(value: EventHandlerProperty | null);
    get onloadstart(): EventHandlerProperty | null;
    set onloadstart(value: EventHandlerProperty | null);
    get onprogress(): EventHandlerProperty | null;
    set onprogress(value: EventHandlerProperty | null);
    get ontimeout(): EventHandlerProperty | null;
    set ontimeout(value: EventHandlerProperty | null);
    /**
     * @returns Whether any event listener is registered
     */
    hasListeners(): boolean;
    /**
     * Add an event listener.
     * See https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener
     *
     * @param type Event type ('load', 'abort', etc)
     * @param listener Listener callback
     * @param options Options object or the useCapture flag
     */
    addEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
    addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
    /**
     * Remove an event listener.
     * See https://dom.spec.whatwg.org/#dom-eventtarget-removeeventlistener
     *
     * @param type Event type ('load', 'abort', etc)
     * @param listener Listener callback
     * @param options Options object or the useCapture flag
     */
    removeEventListener<K extends keyof XMLHttpRequestEventTargetEventMap>(type: K, listener: (this: XMLHttpRequestEventTarget, ev: XMLHttpRequestEventTargetEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
    removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
    /**
     * Calls all the listeners for the event.
     *
     * @param event Event
     * @returns Always true since none of the xhr event are cancelable
     */
    dispatchEvent(event: Event | EventMock): boolean;
    protected _getEventHandlerProperty(event: string): EventHandlerProperty | null;
    protected _setEventHandlerProperty(event: string, value?: EventHandlerProperty | null): void;
}
interface EventMock {
    type: string;
}
type EventHandlerProperty = ((this: XMLHttpRequest, ev: ProgressEvent) => unknown);
export {};
