import type { PipeStep } from './pipe$.js'; import type { AnyAsyncIterable, AnyAwaitableIterable, AnyIterable, AsyncIteratedValue, IteratedValue } from './types/inputs/MinimalIterator.js'; import type { AnySubscribable } from './types/inputs/Subscribable.js'; import type { Observable } from './types/outputs/Observable.js'; export type ReduceOrigin = AnyAwaitableIterable | AnySubscribable; export type ReduceOriginValue = (O extends AnyIterable ? IteratedValue : O extends AnyAsyncIterable ? AsyncIteratedValue : unknown) & (O extends AnySubscribable ? D : unknown); export type ReduceCallback = (state: S, item: T) => S; export type ReduceResult = O extends AnyIterable ? R : O extends AnyAsyncIterable ? Observable : O extends AnySubscribable ? Observable : never; /** * Apply reducer-like function to each emitted value, emitting final result with origin completes. * * @since 1.0.0 * @version 2.5.0 Add support for async iterators */ export declare function reduce$(cb: ReduceCallback, S>, init: S): PipeStep>;