rx-lite.d.ts 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  1. // DefinitelyTyped: partial
  2. // This file contains common part of defintions for rx.d.ts and rx.lite.d.ts
  3. // Do not include the file separately.
  4. declare module Rx {
  5. export module internals {
  6. function isEqual(left: any, right: any): boolean;
  7. function addRef<T>(xs: Observable<T>, r: { getDisposable(): IDisposable; }): Observable<T>;
  8. // Priority Queue for Scheduling
  9. export class PriorityQueue<TTime> {
  10. constructor(capacity: number);
  11. length: number;
  12. isHigherPriority(left: number, right: number): boolean;
  13. percolate(index: number): void;
  14. heapify(index: number): void;
  15. peek(): ScheduledItem<TTime>;
  16. removeAt(index: number): void;
  17. dequeue(): ScheduledItem<TTime>;
  18. enqueue(item: ScheduledItem<TTime>): void;
  19. remove(item: ScheduledItem<TTime>): boolean;
  20. static count: number;
  21. }
  22. export class ScheduledItem<TTime> {
  23. constructor(scheduler: IScheduler, state: any, action: (scheduler: IScheduler, state: any) => IDisposable, dueTime: TTime, comparer?: (x: TTime, y: TTime) => number);
  24. scheduler: IScheduler;
  25. state: TTime;
  26. action: (scheduler: IScheduler, state: any) => IDisposable;
  27. dueTime: TTime;
  28. comparer: (x: TTime, y: TTime) => number;
  29. disposable: SingleAssignmentDisposable;
  30. invoke(): void;
  31. compareTo(other: ScheduledItem<TTime>): number;
  32. isCancelled(): boolean;
  33. invokeCore(): IDisposable;
  34. }
  35. }
  36. export module config {
  37. export var Promise: { new <T>(resolver: (resolvePromise: (value: T) => void, rejectPromise: (reason: any) => void) => void): IPromise<T>; };
  38. }
  39. export module helpers {
  40. function noop(): void;
  41. function notDefined(value: any): boolean;
  42. function identity<T>(value: T): T;
  43. function defaultNow(): number;
  44. function defaultComparer(left: any, right: any): boolean;
  45. function defaultSubComparer(left: any, right: any): number;
  46. function defaultKeySerializer(key: any): string;
  47. function defaultError(err: any): void;
  48. function isPromise(p: any): boolean;
  49. function asArray<T>(...args: T[]): T[];
  50. function not(value: any): boolean;
  51. function isFunction(value: any): boolean;
  52. }
  53. export interface IDisposable {
  54. dispose(): void;
  55. }
  56. export class CompositeDisposable implements IDisposable {
  57. constructor (...disposables: IDisposable[]);
  58. constructor (disposables: IDisposable[]);
  59. isDisposed: boolean;
  60. length: number;
  61. dispose(): void;
  62. add(item: IDisposable): void;
  63. remove(item: IDisposable): boolean;
  64. toArray(): IDisposable[];
  65. }
  66. export class Disposable implements IDisposable {
  67. constructor(action: () => void);
  68. static create(action: () => void): IDisposable;
  69. static empty: IDisposable;
  70. dispose(): void;
  71. }
  72. // Single assignment
  73. export class SingleAssignmentDisposable implements IDisposable {
  74. constructor();
  75. isDisposed: boolean;
  76. current: IDisposable;
  77. dispose(): void ;
  78. getDisposable(): IDisposable;
  79. setDisposable(value: IDisposable): void ;
  80. }
  81. // SerialDisposable it's an alias of SingleAssignmentDisposable
  82. export class SerialDisposable extends SingleAssignmentDisposable {
  83. constructor();
  84. }
  85. export class RefCountDisposable implements IDisposable {
  86. constructor(disposable: IDisposable);
  87. dispose(): void;
  88. isDisposed: boolean;
  89. getDisposable(): IDisposable;
  90. }
  91. export interface IScheduler {
  92. now(): number;
  93. isScheduler(value: any): boolean;
  94. schedule(action: () => void): IDisposable;
  95. scheduleWithState<TState>(state: TState, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable;
  96. scheduleWithAbsolute(dueTime: number, action: () => void): IDisposable;
  97. scheduleWithAbsoluteAndState<TState>(state: TState, dueTime: number, action: (scheduler: IScheduler, state: TState) =>IDisposable): IDisposable;
  98. scheduleWithRelative(dueTime: number, action: () => void): IDisposable;
  99. scheduleWithRelativeAndState<TState>(state: TState, dueTime: number, action: (scheduler: IScheduler, state: TState) =>IDisposable): IDisposable;
  100. scheduleRecursive(action: (action: () =>void ) =>void ): IDisposable;
  101. scheduleRecursiveWithState<TState>(state: TState, action: (state: TState, action: (state: TState) =>void ) =>void ): IDisposable;
  102. scheduleRecursiveWithAbsolute(dueTime: number, action: (action: (dueTime: number) => void) => void): IDisposable;
  103. scheduleRecursiveWithAbsoluteAndState<TState>(state: TState, dueTime: number, action: (state: TState, action: (state: TState, dueTime: number) => void) => void): IDisposable;
  104. scheduleRecursiveWithRelative(dueTime: number, action: (action: (dueTime: number) =>void ) =>void ): IDisposable;
  105. scheduleRecursiveWithRelativeAndState<TState>(state: TState, dueTime: number, action: (state: TState, action: (state: TState, dueTime: number) =>void ) =>void ): IDisposable;
  106. schedulePeriodic(period: number, action: () => void): IDisposable;
  107. schedulePeriodicWithState<TState>(state: TState, period: number, action: (state: TState) => TState): IDisposable;
  108. }
  109. export interface Scheduler extends IScheduler {
  110. }
  111. export interface SchedulerStatic {
  112. new (
  113. now: () => number,
  114. schedule: (state: any, action: (scheduler: IScheduler, state: any) => IDisposable) => IDisposable,
  115. scheduleRelative: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable) => IDisposable,
  116. scheduleAbsolute: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable) => IDisposable): Scheduler;
  117. normalize(timeSpan: number): number;
  118. immediate: IScheduler;
  119. currentThread: ICurrentThreadScheduler;
  120. default: IScheduler; // alias for Scheduler.timeout
  121. timeout: IScheduler;
  122. }
  123. export var Scheduler: SchedulerStatic;
  124. // Current Thread IScheduler
  125. interface ICurrentThreadScheduler extends IScheduler {
  126. scheduleRequired(): boolean;
  127. }
  128. // Notifications
  129. export class Notification<T> {
  130. accept(observer: IObserver<T>): void;
  131. accept<TResult>(onNext: (value: T) => TResult, onError?: (exception: any) => TResult, onCompleted?: () => TResult): TResult;
  132. toObservable(scheduler?: IScheduler): Observable<T>;
  133. hasValue: boolean;
  134. equals(other: Notification<T>): boolean;
  135. kind: string;
  136. value: T;
  137. exception: any;
  138. static createOnNext<T>(value: T): Notification<T>;
  139. static createOnError<T>(exception: any): Notification<T>;
  140. static createOnCompleted<T>(): Notification<T>;
  141. }
  142. /**
  143. * Promise A+
  144. */
  145. export interface IPromise<T> {
  146. then<R>(onFulfilled: (value: T) => IPromise<R>, onRejected: (reason: any) => IPromise<R>): IPromise<R>;
  147. then<R>(onFulfilled: (value: T) => IPromise<R>, onRejected?: (reason: any) => R): IPromise<R>;
  148. then<R>(onFulfilled: (value: T) => R, onRejected: (reason: any) => IPromise<R>): IPromise<R>;
  149. then<R>(onFulfilled?: (value: T) => R, onRejected?: (reason: any) => R): IPromise<R>;
  150. }
  151. // Observer
  152. export interface IObserver<T> {
  153. onNext(value: T): void;
  154. onError(exception: any): void;
  155. onCompleted(): void;
  156. }
  157. export interface Observer<T> extends IObserver<T> {
  158. toNotifier(): (notification: Notification<T>) => void;
  159. asObserver(): Observer<T>;
  160. }
  161. interface ObserverStatic {
  162. create<T>(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observer<T>;
  163. fromNotifier<T>(handler: (notification: Notification<T>, thisArg?: any) => void): Observer<T>;
  164. }
  165. export var Observer: ObserverStatic;
  166. export interface IObservable<T> {
  167. subscribe(observer: Observer<T>): IDisposable;
  168. subscribe(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): IDisposable;
  169. subscribeOnNext(onNext: (value: T) => void, thisArg?: any): IDisposable;
  170. subscribeOnError(onError: (exception: any) => void, thisArg?: any): IDisposable;
  171. subscribeOnCompleted(onCompleted: () => void, thisArg?: any): IDisposable;
  172. }
  173. export interface Observable<T> extends IObservable<T> {
  174. forEach(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): IDisposable; // alias for subscribe
  175. toArray(): Observable<T[]>;
  176. catch(handler: (exception: any) => Observable<T>): Observable<T>;
  177. catchException(handler: (exception: any) => Observable<T>): Observable<T>; // alias for catch
  178. catch(handler: (exception: any) => IPromise<T>): Observable<T>;
  179. catchException(handler: (exception: any) => IPromise<T>): Observable<T>; // alias for catch
  180. catch(second: Observable<T>): Observable<T>;
  181. catchException(second: Observable<T>): Observable<T>; // alias for catch
  182. combineLatest<T2, TResult>(second: Observable<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  183. combineLatest<T2, TResult>(second: IPromise<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  184. combineLatest<T2, T3, TResult>(second: Observable<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  185. combineLatest<T2, T3, TResult>(second: Observable<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  186. combineLatest<T2, T3, TResult>(second: IPromise<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  187. combineLatest<T2, T3, TResult>(second: IPromise<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  188. combineLatest<T2, T3, T4, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  189. combineLatest<T2, T3, T4, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  190. combineLatest<T2, T3, T4, TResult>(second: Observable<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  191. combineLatest<T2, T3, T4, TResult>(second: Observable<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  192. combineLatest<T2, T3, T4, TResult>(second: IPromise<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  193. combineLatest<T2, T3, T4, TResult>(second: IPromise<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  194. combineLatest<T2, T3, T4, TResult>(second: IPromise<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  195. combineLatest<T2, T3, T4, TResult>(second: IPromise<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  196. combineLatest<T2, T3, T4, T5, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, fifth: Observable<T5>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable<TResult>;
  197. combineLatest<TOther, TResult>(souces: Observable<TOther>[], resultSelector: (firstValue: T, ...otherValues: TOther[]) => TResult): Observable<TResult>;
  198. combineLatest<TOther, TResult>(souces: IPromise<TOther>[], resultSelector: (firstValue: T, ...otherValues: TOther[]) => TResult): Observable<TResult>;
  199. withLatestFrom<T2, TResult>(second: Observable<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  200. withLatestFrom<T2, TResult>(second: IPromise<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  201. withLatestFrom<T2, T3, TResult>(second: Observable<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  202. withLatestFrom<T2, T3, TResult>(second: Observable<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  203. withLatestFrom<T2, T3, TResult>(second: IPromise<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  204. withLatestFrom<T2, T3, TResult>(second: IPromise<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  205. withLatestFrom<T2, T3, T4, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  206. withLatestFrom<T2, T3, T4, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  207. withLatestFrom<T2, T3, T4, TResult>(second: Observable<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  208. withLatestFrom<T2, T3, T4, TResult>(second: Observable<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  209. withLatestFrom<T2, T3, T4, TResult>(second: IPromise<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  210. withLatestFrom<T2, T3, T4, TResult>(second: IPromise<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  211. withLatestFrom<T2, T3, T4, TResult>(second: IPromise<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  212. withLatestFrom<T2, T3, T4, TResult>(second: IPromise<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  213. withLatestFrom<T2, T3, T4, T5, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, fifth: Observable<T5>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable<TResult>;
  214. withLatestFrom<TOther, TResult>(souces: Observable<TOther>[], resultSelector: (firstValue: T, ...otherValues: TOther[]) => TResult): Observable<TResult>;
  215. withLatestFrom<TOther, TResult>(souces: IPromise<TOther>[], resultSelector: (firstValue: T, ...otherValues: TOther[]) => TResult): Observable<TResult>;
  216. concat(...sources: Observable<T>[]): Observable<T>;
  217. concat(...sources: IPromise<T>[]): Observable<T>;
  218. concat(sources: Observable<T>[]): Observable<T>;
  219. concat(sources: IPromise<T>[]): Observable<T>;
  220. concatAll(): T;
  221. concatObservable(): T; // alias for concatAll
  222. concatMap<T2, R>(selector: (value: T, index: number) => Observable<T2>, resultSelector: (value1: T, value2: T2, index: number) => R): Observable<R>; // alias for selectConcat
  223. concatMap<T2, R>(selector: (value: T, index: number) => IPromise<T2>, resultSelector: (value1: T, value2: T2, index: number) => R): Observable<R>; // alias for selectConcat
  224. concatMap<R>(selector: (value: T, index: number) => Observable<R>): Observable<R>; // alias for selectConcat
  225. concatMap<R>(selector: (value: T, index: number) => IPromise<R>): Observable<R>; // alias for selectConcat
  226. concatMap<R>(sequence: Observable<R>): Observable<R>; // alias for selectConcat
  227. merge(maxConcurrent: number): T;
  228. merge(other: Observable<T>): Observable<T>;
  229. merge(other: IPromise<T>): Observable<T>;
  230. mergeAll(): T;
  231. mergeObservable(): T; // alias for mergeAll
  232. skipUntil<T2>(other: Observable<T2>): Observable<T>;
  233. skipUntil<T2>(other: IPromise<T2>): Observable<T>;
  234. switch(): T;
  235. switchLatest(): T; // alias for switch
  236. takeUntil<T2>(other: Observable<T2>): Observable<T>;
  237. takeUntil<T2>(other: IPromise<T2>): Observable<T>;
  238. zip<T2, TResult>(second: Observable<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  239. zip<T2, TResult>(second: IPromise<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  240. zip<T2, T3, TResult>(second: Observable<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  241. zip<T2, T3, TResult>(second: Observable<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  242. zip<T2, T3, TResult>(second: IPromise<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  243. zip<T2, T3, TResult>(second: IPromise<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  244. zip<T2, T3, T4, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  245. zip<T2, T3, T4, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  246. zip<T2, T3, T4, TResult>(second: Observable<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  247. zip<T2, T3, T4, TResult>(second: Observable<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  248. zip<T2, T3, T4, TResult>(second: IPromise<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  249. zip<T2, T3, T4, TResult>(second: IPromise<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  250. zip<T2, T3, T4, TResult>(second: IPromise<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  251. zip<T2, T3, T4, TResult>(second: IPromise<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  252. zip<T2, T3, T4, T5, TResult>(second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, fifth: Observable<T5>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable<TResult>;
  253. zip<TOther, TResult>(second: Observable<TOther>[], resultSelector: (left: T, ...right: TOther[]) => TResult): Observable<TResult>;
  254. zip<TOther, TResult>(second: IPromise<TOther>[], resultSelector: (left: T, ...right: TOther[]) => TResult): Observable<TResult>;
  255. asObservable(): Observable<T>;
  256. dematerialize<TOrigin>(): Observable<TOrigin>;
  257. distinctUntilChanged(skipParameter: boolean, comparer: (x: T, y: T) => boolean): Observable<T>;
  258. distinctUntilChanged<TValue>(keySelector?: (value: T) => TValue, comparer?: (x: TValue, y: TValue) => boolean): Observable<T>;
  259. do(observer: Observer<T>): Observable<T>;
  260. doAction(observer: Observer<T>): Observable<T>; // alias for do
  261. tap(observer: Observer<T>): Observable<T>; // alias for do
  262. do(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observable<T>;
  263. doAction(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observable<T>; // alias for do
  264. tap(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observable<T>; // alias for do
  265. doOnNext(onNext: (value: T) => void, thisArg?: any): Observable<T>;
  266. doOnError(onError: (exception: any) => void, thisArg?: any): Observable<T>;
  267. doOnCompleted(onCompleted: () => void, thisArg?: any): Observable<T>;
  268. tapOnNext(onNext: (value: T) => void, thisArg?: any): Observable<T>;
  269. tapOnError(onError: (exception: any) => void, thisArg?: any): Observable<T>;
  270. tapOnCompleted(onCompleted: () => void, thisArg?: any): Observable<T>;
  271. finally(action: () => void): Observable<T>;
  272. finallyAction(action: () => void): Observable<T>; // alias for finally
  273. ignoreElements(): Observable<T>;
  274. materialize(): Observable<Notification<T>>;
  275. repeat(repeatCount?: number): Observable<T>;
  276. retry(retryCount?: number): Observable<T>;
  277. scan<TAcc>(accumulator: (acc: TAcc, value: T, seed: TAcc) => TAcc): Observable<TAcc>;
  278. scan(accumulator: (acc: T, value: T) => T): Observable<T>;
  279. skipLast(count: number): Observable<T>;
  280. startWith(...values: T[]): Observable<T>;
  281. startWith(scheduler: IScheduler, ...values: T[]): Observable<T>;
  282. takeLast(count: number): Observable<T>;
  283. takeLastBuffer(count: number): Observable<T[]>;
  284. select<TResult>(selector: (value: T, index: number, source: Observable<T>) => TResult, thisArg?: any): Observable<TResult>;
  285. map<TResult>(selector: (value: T, index: number, source: Observable<T>) => TResult, thisArg?: any): Observable<TResult>; // alias for select
  286. pluck<TResult>(prop: string): Observable<TResult>;
  287. selectMany<TOther, TResult>(selector: (value: T) => Observable<TOther>, resultSelector: (item: T, other: TOther) => TResult): Observable<TResult>;
  288. selectMany<TOther, TResult>(selector: (value: T) => IPromise<TOther>, resultSelector: (item: T, other: TOther) => TResult): Observable<TResult>;
  289. selectMany<TResult>(selector: (value: T) => Observable<TResult>): Observable<TResult>;
  290. selectMany<TResult>(selector: (value: T) => IPromise<TResult>): Observable<TResult>;
  291. selectMany<TResult>(other: Observable<TResult>): Observable<TResult>;
  292. selectMany<TResult>(other: IPromise<TResult>): Observable<TResult>;
  293. selectMany<TResult>(selector: (value: T) => TResult[]): Observable<TResult>; // alias for selectMany
  294. flatMap<TOther, TResult>(selector: (value: T) => Observable<TOther>, resultSelector: (item: T, other: TOther) => TResult): Observable<TResult>; // alias for selectMany
  295. flatMap<TOther, TResult>(selector: (value: T) => IPromise<TOther>, resultSelector: (item: T, other: TOther) => TResult): Observable<TResult>; // alias for selectMany
  296. flatMap<TResult>(selector: (value: T) => Observable<TResult>): Observable<TResult>; // alias for selectMany
  297. flatMap<TResult>(selector: (value: T) => IPromise<TResult>): Observable<TResult>; // alias for selectMany
  298. flatMap<TResult>(other: Observable<TResult>): Observable<TResult>; // alias for selectMany
  299. flatMap<TResult>(other: IPromise<TResult>): Observable<TResult>; // alias for selectMany
  300. flatMap<TResult>(selector: (value: T) => TResult[]): Observable<TResult>; // alias for selectMany
  301. /**
  302. * Projects each notification of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.
  303. * @param {Function} onNext A transform function to apply to each element; the second parameter of the function represents the index of the source element.
  304. * @param {Function} onError A transform function to apply when an error occurs in the source sequence.
  305. * @param {Function} onCompleted A transform function to apply when the end of the source sequence is reached.
  306. * @param {Any} [thisArg] An optional "this" to use to invoke each transform.
  307. * @returns {Observable} An observable sequence whose elements are the result of invoking the one-to-many transform function corresponding to each notification in the input sequence.
  308. */
  309. selectManyObserver<T2, T3, T4>(onNext: (value: T, index: number) => Observable<T2>, onError: (exception: any) => Observable<T3>, onCompleted: () => Observable<T4>, thisArg?: any): Observable<T2 | T3 | T4>;
  310. /**
  311. * Projects each notification of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.
  312. * @param {Function} onNext A transform function to apply to each element; the second parameter of the function represents the index of the source element.
  313. * @param {Function} onError A transform function to apply when an error occurs in the source sequence.
  314. * @param {Function} onCompleted A transform function to apply when the end of the source sequence is reached.
  315. * @param {Any} [thisArg] An optional "this" to use to invoke each transform.
  316. * @returns {Observable} An observable sequence whose elements are the result of invoking the one-to-many transform function corresponding to each notification in the input sequence.
  317. */
  318. flatMapObserver<T2, T3, T4>(onNext: (value: T, index: number) => Observable<T2>, onError: (exception: any) => Observable<T3>, onCompleted: () => Observable<T4>, thisArg?: any): Observable<T2 | T3 | T4>;
  319. selectConcat<T2, R>(selector: (value: T, index: number) => Observable<T2>, resultSelector: (value1: T, value2: T2, index: number) => R): Observable<R>;
  320. selectConcat<T2, R>(selector: (value: T, index: number) => IPromise<T2>, resultSelector: (value1: T, value2: T2, index: number) => R): Observable<R>;
  321. selectConcat<R>(selector: (value: T, index: number) => Observable<R>): Observable<R>;
  322. selectConcat<R>(selector: (value: T, index: number) => IPromise<R>): Observable<R>;
  323. selectConcat<R>(sequence: Observable<R>): Observable<R>;
  324. /**
  325. * Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
  326. * transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
  327. * @param selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
  328. * @param [thisArg] Object to use as this when executing callback.
  329. * @returns An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
  330. * and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
  331. */
  332. selectSwitch<TResult>(selector: (value: T, index: number, source: Observable<T>) => Observable<TResult>, thisArg?: any): Observable<TResult>;
  333. /**
  334. * Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
  335. * transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
  336. * @param selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
  337. * @param [thisArg] Object to use as this when executing callback.
  338. * @returns An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
  339. * and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
  340. */
  341. flatMapLatest<TResult>(selector: (value: T, index: number, source: Observable<T>) => Observable<TResult>, thisArg?: any): Observable<TResult>; // alias for selectSwitch
  342. /**
  343. * Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
  344. * transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
  345. * @param selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
  346. * @param [thisArg] Object to use as this when executing callback.
  347. * @since 2.2.28
  348. * @returns An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
  349. * and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
  350. */
  351. switchMap<TResult>(selector: (value: T, index: number, source: Observable<T>) => TResult, thisArg?: any): Observable<TResult>; // alias for selectSwitch
  352. skip(count: number): Observable<T>;
  353. skipWhile(predicate: (value: T, index: number, source: Observable<T>) => boolean, thisArg?: any): Observable<T>;
  354. take(count: number, scheduler?: IScheduler): Observable<T>;
  355. takeWhile(predicate: (value: T, index: number, source: Observable<T>) => boolean, thisArg?: any): Observable<T>;
  356. where(predicate: (value: T, index: number, source: Observable<T>) => boolean, thisArg?: any): Observable<T>;
  357. filter(predicate: (value: T, index: number, source: Observable<T>) => boolean, thisArg?: any): Observable<T>; // alias for where
  358. /**
  359. * Converts an existing observable sequence to an ES6 Compatible Promise
  360. * @example
  361. * var promise = Rx.Observable.return(42).toPromise(RSVP.Promise);
  362. * @param promiseCtor The constructor of the promise.
  363. * @returns An ES6 compatible promise with the last value from the observable sequence.
  364. */
  365. toPromise<TPromise extends IPromise<T>>(promiseCtor: { new (resolver: (resolvePromise: (value: T) => void, rejectPromise: (reason: any) => void) => void): TPromise; }): TPromise;
  366. /**
  367. * Converts an existing observable sequence to an ES6 Compatible Promise
  368. * @example
  369. * var promise = Rx.Observable.return(42).toPromise(RSVP.Promise);
  370. *
  371. * // With config
  372. * Rx.config.Promise = RSVP.Promise;
  373. * var promise = Rx.Observable.return(42).toPromise();
  374. * @param [promiseCtor] The constructor of the promise. If not provided, it looks for it in Rx.config.Promise.
  375. * @returns An ES6 compatible promise with the last value from the observable sequence.
  376. */
  377. toPromise(promiseCtor?: { new (resolver: (resolvePromise: (value: T) => void, rejectPromise: (reason: any) => void) => void): IPromise<T>; }): IPromise<T>;
  378. // Experimental Flattening
  379. /**
  380. * Performs a exclusive waiting for the first to finish before subscribing to another observable.
  381. * Observables that come in between subscriptions will be dropped on the floor.
  382. * Can be applied on `Observable<Observable<R>>` or `Observable<IPromise<R>>`.
  383. * @since 2.2.28
  384. * @returns A exclusive observable with only the results that happen when subscribed.
  385. */
  386. exclusive<R>(): Observable<R>;
  387. /**
  388. * Performs a exclusive map waiting for the first to finish before subscribing to another observable.
  389. * Observables that come in between subscriptions will be dropped on the floor.
  390. * Can be applied on `Observable<Observable<I>>` or `Observable<IPromise<I>>`.
  391. * @since 2.2.28
  392. * @param selector Selector to invoke for every item in the current subscription.
  393. * @param [thisArg] An optional context to invoke with the selector parameter.
  394. * @returns {An exclusive observable with only the results that happen when subscribed.
  395. */
  396. exclusiveMap<I, R>(selector: (value: I, index: number, source: Observable<I>) => R, thisArg?: any): Observable<R>;
  397. }
  398. interface ObservableStatic {
  399. create<T>(subscribe: (observer: Observer<T>) => IDisposable): Observable<T>;
  400. create<T>(subscribe: (observer: Observer<T>) => () => void): Observable<T>;
  401. create<T>(subscribe: (observer: Observer<T>) => void): Observable<T>;
  402. createWithDisposable<T>(subscribe: (observer: Observer<T>) => IDisposable): Observable<T>;
  403. defer<T>(observableFactory: () => Observable<T>): Observable<T>;
  404. defer<T>(observableFactory: () => IPromise<T>): Observable<T>;
  405. empty<T>(scheduler?: IScheduler): Observable<T>;
  406. /**
  407. * This method creates a new Observable sequence from an array object.
  408. * @param array An array-like or iterable object to convert to an Observable sequence.
  409. * @param mapFn Map function to call on every element of the array.
  410. * @param [thisArg] The context to use calling the mapFn if provided.
  411. * @param [scheduler] Optional scheduler to use for scheduling. If not provided, defaults to Scheduler.currentThread.
  412. */
  413. from<T, TResult>(array: T[], mapFn: (value: T, index: number) => TResult, thisArg?: any, scheduler?: IScheduler): Observable<TResult>;
  414. /**
  415. * This method creates a new Observable sequence from an array object.
  416. * @param array An array-like or iterable object to convert to an Observable sequence.
  417. * @param [mapFn] Map function to call on every element of the array.
  418. * @param [thisArg] The context to use calling the mapFn if provided.
  419. * @param [scheduler] Optional scheduler to use for scheduling. If not provided, defaults to Scheduler.currentThread.
  420. */
  421. from<T>(array: T[], mapFn?: (value: T, index: number) => T, thisArg?: any, scheduler?: IScheduler): Observable<T>;
  422. /**
  423. * This method creates a new Observable sequence from an array-like object.
  424. * @param array An array-like or iterable object to convert to an Observable sequence.
  425. * @param mapFn Map function to call on every element of the array.
  426. * @param [thisArg] The context to use calling the mapFn if provided.
  427. * @param [scheduler] Optional scheduler to use for scheduling. If not provided, defaults to Scheduler.currentThread.
  428. */
  429. from<T, TResult>(array: { length: number;[index: number]: T; }, mapFn: (value: T, index: number) => TResult, thisArg?: any, scheduler?: IScheduler): Observable<TResult>;
  430. /**
  431. * This method creates a new Observable sequence from an array-like object.
  432. * @param array An array-like or iterable object to convert to an Observable sequence.
  433. * @param [mapFn] Map function to call on every element of the array.
  434. * @param [thisArg] The context to use calling the mapFn if provided.
  435. * @param [scheduler] Optional scheduler to use for scheduling. If not provided, defaults to Scheduler.currentThread.
  436. */
  437. from<T>(array: { length: number;[index: number]: T; }, mapFn?: (value: T, index: number) => T, thisArg?: any, scheduler?: IScheduler): Observable<T>;
  438. /**
  439. * This method creates a new Observable sequence from an array-like or iterable object.
  440. * @param array An array-like or iterable object to convert to an Observable sequence.
  441. * @param [mapFn] Map function to call on every element of the array.
  442. * @param [thisArg] The context to use calling the mapFn if provided.
  443. * @param [scheduler] Optional scheduler to use for scheduling. If not provided, defaults to Scheduler.currentThread.
  444. */
  445. from<T>(iterable: any, mapFn?: (value: any, index: number) => T, thisArg?: any, scheduler?: IScheduler): Observable<T>;
  446. fromArray<T>(array: T[], scheduler?: IScheduler): Observable<T>;
  447. fromArray<T>(array: { length: number;[index: number]: T; }, scheduler?: IScheduler): Observable<T>;
  448. generate<TState, TResult>(initialState: TState, condition: (state: TState) => boolean, iterate: (state: TState) => TState, resultSelector: (state: TState) => TResult, scheduler?: IScheduler): Observable<TResult>;
  449. never<T>(): Observable<T>;
  450. /**
  451. * This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
  452. *
  453. * @example
  454. * var res = Rx.Observable.of(1, 2, 3);
  455. * @since 2.2.28
  456. * @returns The observable sequence whose elements are pulled from the given arguments.
  457. */
  458. of<T>(...values: T[]): Observable<T>;
  459. /**
  460. * This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
  461. * @example
  462. * var res = Rx.Observable.ofWithScheduler(Rx.Scheduler.timeout, 1, 2, 3);
  463. * @since 2.2.28
  464. * @param [scheduler] A scheduler to use for scheduling the arguments.
  465. * @returns The observable sequence whose elements are pulled from the given arguments.
  466. */
  467. ofWithScheduler<T>(scheduler?: IScheduler, ...values: T[]): Observable<T>;
  468. range(start: number, count: number, scheduler?: IScheduler): Observable<number>;
  469. repeat<T>(value: T, repeatCount?: number, scheduler?: IScheduler): Observable<T>;
  470. return<T>(value: T, scheduler?: IScheduler): Observable<T>;
  471. /**
  472. * @since 2.2.28
  473. */
  474. just<T>(value: T, scheduler?: IScheduler): Observable<T>; // alias for return
  475. returnValue<T>(value: T, scheduler?: IScheduler): Observable<T>; // alias for return
  476. throw<T>(exception: Error, scheduler?: IScheduler): Observable<T>;
  477. throw<T>(exception: any, scheduler?: IScheduler): Observable<T>;
  478. throwException<T>(exception: Error, scheduler?: IScheduler): Observable<T>; // alias for throw
  479. throwException<T>(exception: any, scheduler?: IScheduler): Observable<T>; // alias for throw
  480. throwError<T>(error: Error, scheduler?: IScheduler): Observable<T>; // alias for throw
  481. throwError<T>(error: any, scheduler?: IScheduler): Observable<T>; // alias for throw
  482. catch<T>(sources: Observable<T>[]): Observable<T>;
  483. catch<T>(sources: IPromise<T>[]): Observable<T>;
  484. catchException<T>(sources: Observable<T>[]): Observable<T>; // alias for catch
  485. catchException<T>(sources: IPromise<T>[]): Observable<T>; // alias for catch
  486. catchError<T>(sources: Observable<T>[]): Observable<T>; // alias for catch
  487. catchError<T>(sources: IPromise<T>[]): Observable<T>; // alias for catch
  488. catch<T>(...sources: Observable<T>[]): Observable<T>;
  489. catch<T>(...sources: IPromise<T>[]): Observable<T>;
  490. catchException<T>(...sources: Observable<T>[]): Observable<T>; // alias for catch
  491. catchException<T>(...sources: IPromise<T>[]): Observable<T>; // alias for catch
  492. catchError<T>(...sources: Observable<T>[]): Observable<T>; // alias for catch
  493. catchError<T>(...sources: IPromise<T>[]): Observable<T>; // alias for catch
  494. combineLatest<T, T2, TResult>(first: Observable<T>, second: Observable<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  495. combineLatest<T, T2, TResult>(first: IPromise<T>, second: Observable<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  496. combineLatest<T, T2, TResult>(first: Observable<T>, second: IPromise<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  497. combineLatest<T, T2, TResult>(first: IPromise<T>, second: IPromise<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  498. combineLatest<T, T2, T3, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  499. combineLatest<T, T2, T3, TResult>(first: Observable<T>, second: Observable<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  500. combineLatest<T, T2, T3, TResult>(first: Observable<T>, second: IPromise<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  501. combineLatest<T, T2, T3, TResult>(first: Observable<T>, second: IPromise<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  502. combineLatest<T, T2, T3, TResult>(first: IPromise<T>, second: Observable<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  503. combineLatest<T, T2, T3, TResult>(first: IPromise<T>, second: Observable<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  504. combineLatest<T, T2, T3, TResult>(first: IPromise<T>, second: IPromise<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  505. combineLatest<T, T2, T3, TResult>(first: IPromise<T>, second: IPromise<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  506. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  507. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  508. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  509. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  510. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  511. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  512. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  513. combineLatest<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  514. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  515. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  516. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  517. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  518. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  519. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  520. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  521. combineLatest<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  522. combineLatest<T, T2, T3, T4, T5, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, fifth: Observable<T5>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable<TResult>;
  523. combineLatest<TOther, TResult>(souces: Observable<TOther>[], resultSelector: (...otherValues: TOther[]) => TResult): Observable<TResult>;
  524. combineLatest<TOther, TResult>(souces: IPromise<TOther>[], resultSelector: (...otherValues: TOther[]) => TResult): Observable<TResult>;
  525. withLatestFrom<T, T2, TResult>(first: Observable<T>, second: Observable<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  526. withLatestFrom<T, T2, TResult>(first: IPromise<T>, second: Observable<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  527. withLatestFrom<T, T2, TResult>(first: Observable<T>, second: IPromise<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  528. withLatestFrom<T, T2, TResult>(first: IPromise<T>, second: IPromise<T2>, resultSelector: (v1: T, v2: T2) => TResult): Observable<TResult>;
  529. withLatestFrom<T, T2, T3, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  530. withLatestFrom<T, T2, T3, TResult>(first: Observable<T>, second: Observable<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  531. withLatestFrom<T, T2, T3, TResult>(first: Observable<T>, second: IPromise<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  532. withLatestFrom<T, T2, T3, TResult>(first: Observable<T>, second: IPromise<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  533. withLatestFrom<T, T2, T3, TResult>(first: IPromise<T>, second: Observable<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  534. withLatestFrom<T, T2, T3, TResult>(first: IPromise<T>, second: Observable<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  535. withLatestFrom<T, T2, T3, TResult>(first: IPromise<T>, second: IPromise<T2>, third: Observable<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  536. withLatestFrom<T, T2, T3, TResult>(first: IPromise<T>, second: IPromise<T2>, third: IPromise<T3>, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
  537. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  538. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  539. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  540. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: Observable<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  541. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  542. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  543. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  544. withLatestFrom<T, T2, T3, T4, TResult>(first: Observable<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  545. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  546. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  547. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  548. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: Observable<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  549. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: Observable<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  550. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: Observable<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  551. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: Observable<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  552. withLatestFrom<T, T2, T3, T4, TResult>(first: IPromise<T>, second: IPromise<T2>, third: IPromise<T3>, fourth: IPromise<T4>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
  553. withLatestFrom<T, T2, T3, T4, T5, TResult>(first: Observable<T>, second: Observable<T2>, third: Observable<T3>, fourth: Observable<T4>, fifth: Observable<T5>, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable<TResult>;
  554. withLatestFrom<TOther, TResult>(souces: Observable<TOther>[], resultSelector: (...otherValues: TOther[]) => TResult): Observable<TResult>;
  555. withLatestFrom<TOther, TResult>(souces: IPromise<TOther>[], resultSelector: (...otherValues: TOther[]) => TResult): Observable<TResult>;
  556. concat<T>(...sources: Observable<T>[]): Observable<T>;
  557. concat<T>(...sources: IPromise<T>[]): Observable<T>;
  558. concat<T>(sources: Observable<T>[]): Observable<T>;
  559. concat<T>(sources: IPromise<T>[]): Observable<T>;
  560. merge<T>(...sources: Observable<T>[]): Observable<T>;
  561. merge<T>(...sources: IPromise<T>[]): Observable<T>;
  562. merge<T>(sources: Observable<T>[]): Observable<T>;
  563. merge<T>(sources: IPromise<T>[]): Observable<T>;
  564. merge<T>(scheduler: IScheduler, ...sources: Observable<T>[]): Observable<T>;
  565. merge<T>(scheduler: IScheduler, ...sources: IPromise<T>[]): Observable<T>;
  566. merge<T>(scheduler: IScheduler, sources: Observable<T>[]): Observable<T>;
  567. merge<T>(scheduler: IScheduler, sources: IPromise<T>[]): Observable<T>;
  568. pairs<T>(obj: { [key: string]: T }, scheduler?: IScheduler): Observable<[string, T]>;
  569. zip<T1, T2, TResult>(first: Observable<T1>, sources: Observable<T2>[], resultSelector: (item1: T1, ...right: T2[]) => TResult): Observable<TResult>;
  570. zip<T1, T2, TResult>(first: Observable<T1>, sources: IPromise<T2>[], resultSelector: (item1: T1, ...right: T2[]) => TResult): Observable<TResult>;
  571. zip<T1, T2, TResult>(source1: Observable<T1>, source2: Observable<T2>, resultSelector: (item1: T1, item2: T2) => TResult): Observable<TResult>;
  572. zip<T1, T2, TResult>(source1: Observable<T1>, source2: IPromise<T2>, resultSelector: (item1: T1, item2: T2) => TResult): Observable<TResult>;
  573. zip<T1, T2, T3, TResult>(source1: Observable<T1>, source2: Observable<T2>, source3: Observable<T3>, resultSelector: (item1: T1, item2: T2, item3: T3) => TResult): Observable<TResult>;
  574. zip<T1, T2, T3, TResult>(source1: Observable<T1>, source2: Observable<T2>, source3: IPromise<T3>, resultSelector: (item1: T1, item2: T2, item3: T3) => TResult): Observable<TResult>;
  575. zip<T1, T2, T3, TResult>(source1: Observable<T1>, source2: IPromise<T2>, source3: Observable<T3>, resultSelector: (item1: T1, item2: T2, item3: T3) => TResult): Observable<TResult>;
  576. zip<T1, T2, T3, TResult>(source1: Observable<T1>, source2: IPromise<T2>, source3: IPromise<T3>, resultSelector: (item1: T1, item2: T2, item3: T3) => TResult): Observable<TResult>;
  577. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: Observable<T2>, source3: Observable<T3>, source4: Observable<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  578. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: Observable<T2>, source3: Observable<T3>, source4: IPromise<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  579. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: Observable<T2>, source3: IPromise<T3>, source4: Observable<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  580. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: Observable<T2>, source3: IPromise<T3>, source4: IPromise<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  581. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: IPromise<T2>, source3: Observable<T3>, source4: Observable<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  582. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: IPromise<T2>, source3: Observable<T3>, source4: IPromise<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  583. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: IPromise<T2>, source3: IPromise<T3>, source4: Observable<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  584. zip<T1, T2, T3, T4, TResult>(source1: Observable<T1>, source2: IPromise<T2>, source3: IPromise<T3>, source4: IPromise<T4>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable<TResult>;
  585. zip<T1, T2, T3, T4, T5, TResult>(source1: Observable<T1>, source2: Observable<T2>, source3: Observable<T3>, source4: Observable<T4>, source5: Observable<T5>, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4, item5: T5) => TResult): Observable<TResult>;
  586. zipArray<T>(...sources: Observable<T>[]): Observable<T[]>;
  587. zipArray<T>(sources: Observable<T>[]): Observable<T[]>;
  588. /**
  589. * Converts a Promise to an Observable sequence
  590. * @param promise An ES6 Compliant promise.
  591. * @returns An Observable sequence which wraps the existing promise success and failure.
  592. */
  593. fromPromise<T>(promise: IPromise<T>): Observable<T>;
  594. prototype: any;
  595. }
  596. export var Observable: ObservableStatic;
  597. interface ISubject<T> extends Observable<T>, Observer<T>, IDisposable {
  598. hasObservers(): boolean;
  599. }
  600. export interface Subject<T> extends ISubject<T> {
  601. }
  602. interface SubjectStatic {
  603. new <T>(): Subject<T>;
  604. create<T>(observer?: Observer<T>, observable?: Observable<T>): ISubject<T>;
  605. }
  606. export var Subject: SubjectStatic;
  607. export interface AsyncSubject<T> extends Subject<T> {
  608. }
  609. interface AsyncSubjectStatic {
  610. new <T>(): AsyncSubject<T>;
  611. }
  612. export var AsyncSubject: AsyncSubjectStatic;
  613. }