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])) } }