// Type definitions for zen-observable 0.8 // Project: https://github.com/zenparsing/zen-observable // Definitions by: Kombu // JounQin // Thomas // BenoitZugmeyer // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare global { interface SymbolConstructor { readonly observable: symbol; } namespace ZenObservable { interface SubscriptionObserver { closed: boolean; next(value: T): void; error(errorValue: any): void; complete(): void; } interface Subscription { closed: boolean; unsubscribe(): void; } interface Observer { start?(subscription: Subscription): any; next?(value: T): void; error?(errorValue: any): void; complete?(): void; } type Subscriber = (observer: SubscriptionObserver) => void | (() => void) | Subscription; interface ObservableLike { subscribe?: Subscriber | undefined; [Symbol.observable](): Observable | ObservableLike; } } } declare class Observable { constructor(subscriber: ZenObservable.Subscriber); subscribe(observer: ZenObservable.Observer): ZenObservable.Subscription; subscribe( onNext: (value: T) => void, onError?: (error: any) => void, onComplete?: () => void, ): ZenObservable.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) => ZenObservable.ObservableLike): Observable; concat(...observable: Array>): Observable; static from(observable: Observable | ZenObservable.ObservableLike | ArrayLike): Observable; static of(...items: R[]): Observable; } declare namespace Observable {} export = Observable;