import { pipe } from "./pipe"
export class Pipeable {
pipe(a2b: (a: this) => A): A
pipe(a2b: (a: this) => A, b2c: (a: A) => B): B
pipe(a2b: (a: this) => A, b2c: (a: A) => B, c2d: (b: B) => C): C
pipe(
a2b: (a: this) => A,
b2c: (a: A) => B,
c2d: (b: B) => C,
d2e: (c: C) => D
): D
pipe(
a2b: (a: this) => A,
b2c: (a: A) => B,
c2d: (b: B) => C,
d2e: (c: C) => D,
e2f: (d: D) => E
): E
pipe(
a2b: (a: this) => A,
b2c: (a: A) => B,
c2d: (b: B) => C,
d2e: (c: C) => D,
e2f: (d: D) => E,
f2g: (e: E) => F
): F
pipe(
a2b: (a: this) => A,
b2c: (a: A) => B,
c2d: (b: B) => C,
d2e: (c: C) => D,
e2f: (d: D) => E,
f2g: (e: E) => F,
g2h: (f: F) => G
): G
pipe(
a2b: (a: this) => A,
b2c: (a: A) => B,
c2d: (b: B) => C,
d2e: (c: C) => D,
e2f: (d: D) => E,
f2g: (e: E) => F,
g2h: (f: F) => G,
h2i: (g: G) => H
): H
pipe(
a2b: (a: this) => A,
b2c: (a: A) => B,
c2d: (b: B) => C,
d2e: (c: C) => D,
e2f: (d: D) => E,
f2g: (e: E) => F,
g2h: (f: F) => G,
h2i: (g: G) => H,
i2j: (h: H) => I
): I
pipe(
a2b: (a: this) => A,
b2c: (a: A) => B,
c2d: (b: B) => C,
d2e: (c: C) => D,
e2f: (d: D) => E,
f2g: (e: E) => F,
g2h: (f: F) => G,
h2i: (g: G) => H,
i2j: (h: H) => I,
j2k: (i: I) => J
): J
pipe(...args: any): any {
return pipe(this, ...(args as [any]))
}
}