import type { ReadOnlyIterable, Reducer } from "@lou.codes/types";
/**
 * Reducer function for iterables.
 *
 * @category Reducers
 * @example
 * ```typescript
 * const sum = reduce<number>(item => total => total + item);
 * const sumFrom0 = sum(0);
 *
 * sumFrom0([1, 2, 3]); // 6
 * ```
 * @param reducer Reducer function.
 * @returns Curried function with `reducer` in context.
 */
export declare const reduce: <Item, Accumulator>(
	reducer: Reducer<Item, Accumulator>,
) => (
	initialValue: Accumulator,
) => (iterable: ReadOnlyIterable<Item>) => Accumulator;
