// Type definitions for rx-core 4.0 // Project: https://github.com/Reactive-Extensions/RxJS // Definitions by: gsino , Igor Oleinikov , Mizunashi Mana // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare namespace Rx { /** * Promise A+ */ interface IPromise { then(onFulfilled: (value: T) => IPromise, onRejected: (reason: any) => IPromise): IPromise; then(onFulfilled: (value: T) => IPromise, onRejected?: (reason: any) => R): IPromise; then(onFulfilled: (value: T) => R, onRejected: (reason: any) => IPromise): IPromise; then(onFulfilled?: (value: T) => R, onRejected?: (reason: any) => R): IPromise; } interface IDisposable { dispose(): void; } interface IScheduler { catch(handler: (exception: any) => boolean): IScheduler; catchException(handler: (exception: any) => boolean): IScheduler; } // Observer interface Observer { checked(): Observer; } interface ObserverStatic { /** * Schedules the invocation of observer methods on the given scheduler. * @param scheduler Scheduler to schedule observer messages on. * @returns Observer whose messages are scheduled on the given scheduler. */ notifyOn(scheduler: IScheduler): Observer; } interface Observable { observeOn(scheduler: IScheduler): Observable; subscribeOn(scheduler: IScheduler): Observable; amb(rightSource: IPromise | Observable): Observable; onErrorResumeNext(second: IPromise | Observable): Observable; bufferWithCount(count: number, skip?: number): Observable; windowWithCount(count: number, skip?: number): Observable>; defaultIfEmpty(defaultValue?: T): Observable; distinct(skipParameter: boolean, valueSerializer: (value: T) => string): Observable; distinct(keySelector?: (value: T) => TKey, keySerializer?: (key: TKey) => string): Observable; groupBy(keySelector: (value: T) => TKey, skipElementSelector?: boolean, keySerializer?: (key: TKey) => string): Observable>; groupBy(keySelector: (value: T) => TKey, elementSelector: (value: T) => TElement, keySerializer?: (key: TKey) => string): Observable>; groupByUntil( keySelector: (value: T) => TKey, skipElementSelector: boolean, durationSelector: (group: GroupedObservable) => Observable, keySerializer?: (key: TKey) => string): Observable>; groupByUntil( keySelector: (value: T) => TKey, elementSelector: (value: T) => TElement, durationSelector: (group: GroupedObservable) => Observable, keySerializer?: (key: TKey) => string): Observable>; } interface ObservableStatic { using(resourceFactory: () => TResource, observableFactory: (resource: TResource) => Observable): Observable; amb(...sources: Array>): Observable; amb(...sources: Array>): Observable; amb(sources: Array> | Array>): Observable; onErrorResumeNext(...sources: Array>): Observable; onErrorResumeNext(...sources: Array>): Observable; onErrorResumeNext(sources: Array> | Array>): Observable; } interface GroupedObservable extends Observable { key: TKey; underlyingObservable: Observable; } } declare module "rx-core" { export = Rx; }