1import { Observable } from '../Observable';
2export interface NodeStyleEventEmitter {
3    addListener: (eventName: string | symbol, handler: NodeEventHandler) => this;
4    removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this;
5}
6export declare type NodeEventHandler = (...args: any[]) => void;
7export interface NodeCompatibleEventEmitter {
8    addListener: (eventName: string, handler: NodeEventHandler) => void | {};
9    removeListener: (eventName: string, handler: NodeEventHandler) => void | {};
10}
11export interface JQueryStyleEventEmitter {
12    on: (eventName: string, handler: Function) => void;
13    off: (eventName: string, handler: Function) => void;
14}
15export interface HasEventTargetAddRemove<E> {
16    addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | AddEventListenerOptions): void;
17    removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: EventListenerOptions | boolean): void;
18}
19export declare type EventTargetLike<T> = HasEventTargetAddRemove<T> | NodeStyleEventEmitter | NodeCompatibleEventEmitter | JQueryStyleEventEmitter;
20export declare type FromEventTarget<T> = EventTargetLike<T> | ArrayLike<EventTargetLike<T>>;
21export interface EventListenerOptions {
22    capture?: boolean;
23    passive?: boolean;
24    once?: boolean;
25}
26export interface AddEventListenerOptions extends EventListenerOptions {
27    once?: boolean;
28    passive?: boolean;
29}
30export declare function fromEvent<T>(target: FromEventTarget<T>, eventName: string): Observable<T>;
31/** @deprecated resultSelector no longer supported, pipe to map instead */
32export declare function fromEvent<T>(target: FromEventTarget<T>, eventName: string, resultSelector: (...args: any[]) => T): Observable<T>;
33export declare function fromEvent<T>(target: FromEventTarget<T>, eventName: string, options: EventListenerOptions): Observable<T>;
34/** @deprecated resultSelector no longer supported, pipe to map instead */
35export declare function fromEvent<T>(target: FromEventTarget<T>, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => T): Observable<T>;
36