import { TupleLast } from './TupleT'; declare type PipeFn = (a: A) => B; /** * Performs left-to-right function composition. The first argument may have any arity, the remaining arguments must be unary. * * @example * * ```ts * const len = (s: string): number => s.length * const double = (n: number): number => n * 2 * * // without flow * assert.strictEqual(double(len('aaa')), 6) * assert.strictEqual(double(len('b')), 2) * * // with flow * const f = flow(len, double) * assert.strictEqual(f('aaa'), 6) * assert.strictEqual(f('b'), 2) * ``` */ export declare function flow(a: (...args: Args) => A): (...args: Args) => A; export declare function flow(a: (...args: Args) => A, ab: PipeFn): (...args: Args) => B; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn): (...args: Args) => C; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn): (...args: Args) => D; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn): (...args: Args) => E; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn): (...args: Args) => F; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn): (...args: Args) => G; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn): (...args: Args) => H; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn): (...args: Args) => I; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn): (...args: Args) => J; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn): (...args: Args) => K; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn): (...args: Args) => L; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn): (...args: Args) => M; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn): (...args: Args) => N; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn): (...args: Args) => O; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn): (...args: Args) => P; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn, pq: PipeFn): (...args: Args) => Q; export declare function flow(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn, pq: PipeFn, qr: PipeFn): (...args: Args) => R; export declare function flow[]>(a: (...args: Args) => A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn, pq: PipeFn, qr: PipeFn, ...fns: Other): (...args: Args) => ReturnType>; /** * Pipes the value of an expression into a pipeline of functions. * * @example * * ```ts * const len = (s: string): number => s.length * const double = (n: number): number => n * 2 * * // without pipe * assert.strictEqual(double(len('aaa')), 6) * * // with pipe * assert.strictEqual(pipe('aaa', len, double)), 6) * ``` */ export declare function pipe(a: A, ab: PipeFn): B; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn): C; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn): D; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn): E; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn): F; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn): G; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn): H; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn): I; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn): J; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn): K; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn): L; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn): M; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn): N; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn): O; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn): P; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn, pq: PipeFn): Q; export declare function pipe(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn, pq: PipeFn, qr: PipeFn): R; export declare function pipe[]>(a: A, ab: PipeFn, bc: PipeFn, cd: PipeFn, de: PipeFn, ef: PipeFn, fg: PipeFn, gh: PipeFn, hi: PipeFn, ij: PipeFn, jk: PipeFn, kl: PipeFn, lm: PipeFn, mn: PipeFn, no: PipeFn, op: PipeFn, pq: PipeFn, qr: PipeFn, ...fns: Other): ReturnType>; export {};