import type { Fn, Maybe } from "@thi.ng/api";
import type { TxLike } from "./api.js";
/**
* Single-step transducer execution wrapper. Returns array if the given
* transducer produces multiple results and undefined if there was no output. If
* the transducer only produces a single result (per step) and if `unwrap`
* is true (default), the function returns that single result value itself.
*
* @remarks
* Likewise, once a transducer has produced a final / reduced value, all further
* invocations of the stepper function will return undefined.
*
* @example
* ```ts tangle:../export/step.ts
* import { filter, map, mapcat, step, take } from "@thi.ng/transducers";
*
* // single result (unwrapped, default)
* console.log(
* step(map((x: number) => x * 10))(1)
* );
* // 10
*
* // single result (no unwrapping)
* console.log(
* step(map((x: number) => x * 10), false)(1)
* );
* // [10]
*
* // multiple results
* console.log(
* step(mapcat((x: number) => [x, x + 1, x + 2]))(1)
* );
* // [ 1, 2, 3 ]
*
* // multiple results (default behavior)
* console.log(
* step(mapcat((x: number[]) => take(2, x)))([1, 2, 3, 4])
* );
* // [1, 2]
*
* console.log(
* step(mapcat((x: number[]) => x))([3])
* );
* // 3
*
* // ...once more without unwrapping
* console.log(
* step(mapcat((x: number[]) => x), false)([3])
* );
* // [3]
*
* // filter even values
* const f = step(filter((x: number) => !(x & 1)))
*
* console.log(f(1)); // undefined
* console.log(f(2)); // 2
*
* // reduced value termination
* const g = step(take(2));
* console.log(g(1)); // 1
* console.log(g(1)); // 1
* console.log(g(1)); // undefined
* console.log(g(1)); // undefined
* ```
*
* @param tx -
* @param unwrap -
*/
export declare const step: (tx: TxLike, unwrap?: boolean) => Fn>;
//# sourceMappingURL=step.d.ts.map