export declare const of: (source: Source) => { pipe: (...funcs: Funcs["length"] extends 0 ? [] : Funcs extends [(arg: Source) => any, ...AnyFunc[]] ? PipeFuncs extends Funcs ? Funcs : PipeFuncs : [(arg: Source) => any, ...AnyFunc[]]) => LastReturnType; }; type AnyFunc = (...args: any) => any; type LastReturnType = F extends [...any, (...arg: any) => infer R] ? R : Else; type PipeFuncs = F['length'] extends 1 ? [...Acc, ...F] : F extends [(...args: infer A) => infer B, (...args: any) => infer D, ...infer Tails] ? Tails extends AnyFunc[] ? PipeFuncs<[(arg: B) => D, ...Tails], [...Acc, (...args: A) => B]> : never : Acc; export {};