import type { _A, _E, _R } from "@effect/core/stream/Stream//definition" /** * @tsplus static effect/core/stream/Stream.Ops tuple */ export function tuple[]>( ...[s1, s2, ...streams]: SN & { readonly 0: Stream readonly 1: Stream } ): Stream< [SN[number]] extends [{ [_R]: () => infer R }] ? R : never, [SN[number]] extends [{ [_E]: () => infer E }] ? E : never, { [K in keyof SN]: [SN[number]] extends [{ [_A]: () => infer A }] ? A : never } > { const init = s1.zip(s2) return streams.reduce( (acc, v) => acc.zipWith(v, (a, b) => (a as ReadonlyArray).concat(b)), init ) }