import { AsyncIterableX } from './asynciterablex.js';
type CommonEventHandler = (...args: any[]) => void;
/** @ignore */
export interface OnOffEventEmitter {
    on(event: string | symbol, listener: CommonEventHandler): this;
    off(event: string | symbol, listener: CommonEventHandler): this;
}
/** @ignore */
export interface NodeEventEmitter {
    addListener(event: string | symbol, listener: CommonEventHandler): this;
    removeListener(event: string | symbol, listener: CommonEventHandler): this;
}
/** @ignore */
export type EventListenerOptions = {
    capture?: boolean;
    passive?: boolean;
    once?: boolean;
} | boolean;
/** @ignore */
export type EventedTarget = EventTarget | OnOffEventEmitter | NodeEventEmitter;
export declare function fromEvent<TSource>(obj: EventedTarget, eventName: string): AsyncIterableX<TSource>;
export declare function fromEvent<TSource>(obj: EventedTarget, eventName: string, resultSelector: (...args: any[]) => TSource): AsyncIterableX<TSource>;
export declare function fromEvent<TSource>(obj: EventedTarget, eventName: string, options: EventListenerOptions): AsyncIterableX<TSource>;
export declare function fromEvent<TSource>(obj: EventedTarget, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => TSource): AsyncIterableX<TSource>;
export {};
