declare function compose(): (x: A) => A;
declare function compose(fn: (x: A) => R): (x: A) => R;
declare function compose(fn1: (x: R1) => R2, fn2: (x: A) => R1): (x: A) => R2;
declare function compose(fn1: (x: R2) => R3, fn2: (x: R1) => R2, fn3: (x: A) => R1): (x: A) => R3;
declare function compose(fn1: (x: R3) => R4, fn2: (x: R2) => R3, fn3: (x: R1) => R2, fn4: (x: A) => R1): (x: A) => R4;
declare function compose(fn1: (x: R4) => R5, fn2: (x: R3) => R4, fn3: (x: R2) => R3, fn4: (x: R1) => R2, fn5: (x: A) => R1): (x: A) => R5;
declare function compose(fn1: (x: R5) => R6, fn2: (x: R4) => R5, fn3: (x: R3) => R4, fn4: (x: R2) => R3, fn5: (x: R1) => R2, fn6: (x: A) => R1): (x: A) => R6;
declare function compose(...fns: Array<(x: T) => T>): (x: T) => T;
export { compose };