import { Observable, ObservableInput } from '../Observable'; /** * @param {Observable} observables the observables to get the latest values from. * @param {Function} [project] optional projection function for merging values together. Receives all values in order * of observables passed. (e.g. `a.withLatestFrom(b, c, (a1, b1, c1) => a1 + b1 + c1)`). If this is not passed, arrays * will be returned. * @description merges each value from an observable with the latest values from the other passed observables. * All observables must emit at least one value before the resulting observable will emit * * #### example * ``` * A.withLatestFrom(B, C) * * A: ----a-----------------b---------------c-----------| * B: ---d----------------e--------------f---------| * C: --x----------------y-------------z-------------| * result: ---([a,d,x])---------([b,e,y])--------([c,f,z])---| * ``` */ export declare function withLatestFrom(...args: Array | ((...values: Array) => R)>): Observable; export interface WithLatestFromSignature { (project: (v1: T) => R): Observable; (v2: ObservableInput, project: (v1: T, v2: T2) => R): Observable; (v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): Observable; (v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): Observable; (v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): Observable; (v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): Observable; (v2: ObservableInput): Observable<[T, T2]>; (v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>; (v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>; (v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>; (v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>; (...observables: Array | ((...values: Array) => R)>): Observable; (array: ObservableInput[]): Observable; (array: ObservableInput[], project: (...values: Array) => R): Observable; }