import type { Arr } from './types'; export declare type Function0 = () => R; export declare type Function1 = (arg1: Arg1) => R; export declare type Function2 = (arg1: Arg1, arg2: Arg2) => R; export declare type Function3 = (arg1: Arg1, arg2: Arg2, arg3: Arg3) => R; export declare type Function4 = (arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4) => R; export declare type Function5 = (arg1: Arg1, arg2: Arg2, arg3: Arg3, arg4: Arg4, arg5: Arg5) => R; export declare type FunctionN = (...args: T) => R; export declare type AnyFunction = FunctionN; export declare type Constructor0 = new () => R; export declare type Constructor1 = new (p1: P1) => R; export declare type Constructor2 = new (p1: P1, p2: P2) => R; export declare type Constructor3 = new (p1: P1, p2: P2, p3: P3) => R; export declare type Constructor4 = new (p1: P1, p2: P2, p3: P3, p4: P4) => R; export declare type Constructor5 = new (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => R; export declare type Constructor = new (...args: T) => R; export declare type AnyConstructor = Constructor; export declare const partialHeadCall: (f: FunctionN<[...T, ...U], R>, ...headArgs: T) => FunctionN; export declare const partialTailCall: (f: FunctionN<[...T, ...U], R>, ...tailArgs: U) => FunctionN; export declare const bind: (f: FunctionN<[...T, ...U], R>, thisArg: unknown, ...headArgs: T) => FunctionN; export declare const repeatChained: (func: (value: T, i?: number) => T, n: number, init: T) => T; export declare type PipelineNext = (data: D) => N; export declare const pipeline: (data: D) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: (next: PipelineNext) => { pipe: any; value: N_10; }; value: N_9; }; value: N_8; }; value: N_7; }; value: N_6; }; value: N_5; }; value: N_4; }; value: N_3; }; value: N_2; }; value: N_1; }; value: N; }; }; export declare const composeLeft: any, V extends Parameters[0] = Parameters[0], R = ReturnType>(functions: FN[], value: V) => R; export declare const compose: any, V extends Parameters[0] = Parameters[0], R = ReturnType>(functions: FN[], value: V) => R; export declare const composeRight: any, V extends Parameters[0] = Parameters[0], R = ReturnType>(functions: FN[], value: V) => R;