export interface Subscription { closed: boolean; unsubscribe(): void; } interface SubscriptionObserver { closed: boolean; next(value: T): void; error(errorValue: any): void; complete(): void; } export interface Observer { start?(subscription: Subscription): any; next?(value: T): void; error?(errorValue: any): void; complete?(): void; } export type Subscriber = ( observer: SubscriptionObserver, ) => void | (() => void) | Subscription; interface ObservableLike { subscribe?: Subscriber | undefined; [Symbol.observable](): Observable | ObservableLike; } export declare class Observable { constructor(subscriber: Subscriber); // For backwards compatibility when super(subscriber) is transpiled to // Observable.call(this, subscriber), which typically happens when the // Observable class is compiled to ES5 function contructor syntax. static call(instance: Observable, subscriber: Subscriber): undefined; static apply(instance: Observable, args: IArguments | [Subscriber]): undefined; subscribe(observer: Observer): Subscription; subscribe( onNext: (value: T) => void, onError?: (error: any) => void, onComplete?: () => void, ): Subscription; [Symbol.observable](): Observable; forEach(callback: (value: T) => void): Promise; map(callback: (value: T) => R): Observable; filter(callback: (value: T) => value is S): Observable; filter(callback: (value: T) => boolean): Observable; reduce(callback: (previousValue: T, currentValue: T) => T, initialValue?: T): Observable; reduce(callback: (previousValue: R, currentValue: T) => R, initialValue?: R): Observable; flatMap(callback: (value: T) => ObservableLike): Observable; concat(...observable: Array>): Observable; static from(observable: Observable | ObservableLike | ArrayLike): Observable; static of(...items: R[]): Observable; }