///
module Rx {
export interface Observable {
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
selectSwitch(selector: _ValueOrSelector>): Observable;
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
selectSwitch(selector: _ValueOrSelector>): Observable;
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
selectSwitch(selector: _ValueOrSelector>, resultSelector: special._FlatMapResultSelector, thisArg?: any): Observable;
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
selectSwitch(selector: _ValueOrSelector>, resultSelector: special._FlatMapResultSelector, thisArg?: any): Observable;
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
flatMapLatest(selector: _ValueOrSelector>): Observable;
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
flatMapLatest(selector: _ValueOrSelector>): Observable;
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
flatMapLatest(selector: _ValueOrSelector>, resultSelector: special._FlatMapResultSelector, thisArg?: any): Observable;
/**
* Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then
* transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
* @param {Any} [thisArg] Object to use as this when executing callback.
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source producing an Observable of Observable sequences
* and that at any point in time produces the elements of the most recent inner observable sequence that has been received.
*/
flatMapLatest(selector: _ValueOrSelector>, resultSelector: special._FlatMapResultSelector, thisArg?: any): Observable;
}
}
(function() {
var o: Rx.Observable;
var n: Rx.Observable;
n = o.flatMapLatest(x => Rx.Observable.from([1, 2, 3]));
n = o.flatMapLatest(x => Rx.Observable.from([1, 2, 3]).toPromise());
n = o.flatMapLatest(x => [1, 2, 3]);
n = o.flatMapLatest(x => Rx.Observable.from([1, 2, 3]), (x, y) => y);
n = o.flatMapLatest(x => Rx.Observable.from([1, 2, 3]).toPromise(), (x, y) => y);
n = o.flatMapLatest(x => [1, 2, 3], (x, y) => y);
n = o.flatMapLatest(Rx.Observable.from([1, 2, 3]));
n = o.flatMapLatest(Rx.Observable.from([1, 2, 3]).toPromise());
n = o.flatMapLatest([1, 2, 3]);
n = o.flatMapLatest(Rx.Observable.from([1, 2, 3]), (x, y) => y);
n = o.flatMapLatest(Rx.Observable.from([1, 2, 3]).toPromise(), (x, y) => y);
n = o.flatMapLatest([1, 2, 3], (x, y) => y);
n = o.selectSwitch(x => Rx.Observable.from([1, 2, 3]));
n = o.selectSwitch(x => Rx.Observable.from([1, 2, 3]).toPromise());
n = o.selectSwitch(x => [1, 2, 3]);
n = o.selectSwitch(x => Rx.Observable.from([1, 2, 3]), (x, y) => y);
n = o.selectSwitch(x => Rx.Observable.from([1, 2, 3]).toPromise(), (x, y) => y);
n = o.selectSwitch(x => [1, 2, 3], (x, y) => y);
n = o.selectSwitch(Rx.Observable.from([1, 2, 3]));
n = o.selectSwitch(Rx.Observable.from([1, 2, 3]).toPromise());
n = o.selectSwitch([1, 2, 3]);
n = o.selectSwitch(Rx.Observable.from([1, 2, 3]), (x, y) => y);
n = o.selectSwitch(Rx.Observable.from([1, 2, 3]).toPromise(), (x, y) => y);
n = o.selectSwitch([1, 2, 3], (x, y) => y);
});