import type { AnyFunction } from '../mod.ts'; export type FunctionPipe = List extends [ infer F1 extends AnyFunction, infer F2 extends AnyFunction, ...infer Rest extends AnyFunction[] ] ? [ReturnType] extends [Parameters[0]] ? [F1, ...FunctionPipe<[F2, ...Rest]>] : never : List; export type FirstItemParameters = List extends [ infer FirstFn extends AnyFunction, ...AnyFunction[] ] ? Parameters : never; export type LastItemReturnType = List extends [ ...AnyFunction[], infer LastFn extends AnyFunction ] ? ReturnType : never; export declare function pipe(): () => void; export declare function pipe(func: F): (...args: Parameters) => ReturnType; export declare function pipe(...funcs: FunctionPipe & Funcs): (...args: FirstItemParameters) => LastItemReturnType;