type UnknownFunction = ( ... params : unknown [ ] ) => unknown ; export function pipe < A extends unknown [ ] , B > ( ab ) ; export function pipe < A extends unknown [ ] , B , C > ( ab , bc ) ; export function pipe < A extends unknown [ ] , B , C , D > ( ab , bc , cd ) ; export function pipe < A extends unknown [ ] , B , C , D , E > ( ab , bc , cd , de ) ; export function pipe < A extends unknown [ ] , B , C , D , E , F > ( ab , bc , cd , de , ef ) ; export function pipe < A extends unknown [ ] , B , C , D , E , F , G > ( ab , bc , cd , de , ef , fg ) ; export function pipe < A extends unknown [ ] , B , C , D , E , F , G , H > ( ab , bc , cd , de , ef , fg , gh ) ; export function pipe < A extends unknown [ ] , B , C , D , E , F , G , H , I > ( ab , bc , cd , de , ef , fg , gh , hi ) ; export function pipe < A extends unknown [ ] , B , C , D , E , F , G , H , I , J > ( ab , bc , cd , de , ef , fg , gh , hi , ij ) ; export function pipe ( ... fns ) { return ( ... initialParams ) : unknown => fns . reduce < unknown > ( ( value , fn , index ) => { const params = index === 0 ? ( value as unknown [ ] ) : [ value ] ; return fn ( ... params ) ; } , initialParams ) ; } export function pipeWith < A , B > ( a , ab ) ; export function pipeWith < A , B , C > ( a , ab , bc ) ; export function pipeWith < A , B , C , D > ( a , ab , bc , cd ) ; export function pipeWith < A , B , C , D , E > ( a , ab , bc , cd , de ) ; export function pipeWith < A , B , C , D , E , F > ( a , ab , bc , cd , de , ef ) ; export function pipeWith < A , B , C , D , E , F , G > ( a , ab , bc , cd , de , ef , fg ) ; export function pipeWith < A , B , C , D , E , F , G , H > ( a , ab , bc , cd , de , ef , fg , gh ) ; export function pipeWith < A , B , C , D , E , F , G , H , I > ( a , ab , bc , cd , de , ef , fg , gh , hi ) ; export function pipeWith < A , B , C , D , E , F , G , H , I , J > ( a , ab , bc , cd , de , ef , fg , gh , hi , ij ) ; export function pipeWith ( value , ... fns ) { return pipe ( ... fns ) ( value ) ; }