import { TTransIteratorSyncOrAsync } from "../../types.js"; /** * This operator should make it easy to perform multiple calculations on the same input * operator, and returning a tuple containing the multiple outputs. * This can be useful for example if you need to add a timestamp, get the running average, * the running max, and the running total of the same data, and you only want to iterate * over the data once. * * ``` * ┌──────────────┐ * │input iterator│ * └──────┬───────┘ * │ * ├─────────────┐─────────────┐─────────────┐ * │ │ │ │ * ┌────▼────┐ ┌────▼────┐ ┌────▼────┐ * │ transIt │ │ transIt │ │ transIt │ * │ 1 │ │ 2 │ ... │ n │ * └────┬────┘ └────┬────┘ └────┬────┘ * │ │ | │ * │ │ | │ * ├─────────────┘─────────────┘─────────────┘ * │ * * │ * ┌──────▼────────┐ * │output iterator│ * └───────────────┘ * ``` * * All arguments are the transIterators that need to be run (use compose(for more complex operations)). * * @example * ```typescript * await pipe( * itr8FromArray([ 1, 2, 3, 4 ]) * branchAndMerge( * identity(), // keep the original values as the first element of the tuple * runningAverage(), * runningTotal(), * ), * map(([value, avg, total]) => ({ value, avg, total })), * itr8ToArray, * ) * // => [ * // { value: 1, avg: 1, total: 1 }, * // { value: 2, avg: 1.5, total: 3 }, * // { value: 3, avg: 2, total: 6 }, * // { value: 4, avg: 2.5, total: 10 }, * // ] * ``` * * @param options * @param transIt * @param {...(it:Iterator | AsyncIterator)=>Iterator | AsyncIterator} moreTransIts * @returns * * @category operators/general */ declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync, transIt2: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync, transIt2: TTransIteratorSyncOrAsync, transIt3: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync, transIt2: TTransIteratorSyncOrAsync, transIt3: TTransIteratorSyncOrAsync, transIt4: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync, transIt2: TTransIteratorSyncOrAsync, transIt3: TTransIteratorSyncOrAsync, transIt4: TTransIteratorSyncOrAsync, transIt5: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync, transIt2: TTransIteratorSyncOrAsync, transIt3: TTransIteratorSyncOrAsync, transIt4: TTransIteratorSyncOrAsync, transIt5: TTransIteratorSyncOrAsync, transIt6: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync, transIt2: TTransIteratorSyncOrAsync, transIt3: TTransIteratorSyncOrAsync, transIt4: TTransIteratorSyncOrAsync, transIt5: TTransIteratorSyncOrAsync, transIt6: TTransIteratorSyncOrAsync, transIt7: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; declare function branchAndMerge(transIt1: TTransIteratorSyncOrAsync, transIt2: TTransIteratorSyncOrAsync, transIt3: TTransIteratorSyncOrAsync, transIt4: TTransIteratorSyncOrAsync, transIt5: TTransIteratorSyncOrAsync, transIt6: TTransIteratorSyncOrAsync, transIt7: TTransIteratorSyncOrAsync, transIt8: TTransIteratorSyncOrAsync): TTransIteratorSyncOrAsync; export { branchAndMerge };