<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>)
): (
...args: Args
) => Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>)
): (
this: Self,
...args: Args
) => Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>)
): (
...args: Args
) => Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A
): (...args: Args) => A
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A
): (this: Self, ...args: Args) => A
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A
): (...args: Args) => A
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (...args: Args) => B
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (this: Self, ...args: Args) => B
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (...args: Args) => B
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (...args: Args) => C
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (this: Self, ...args: Args) => C
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (...args: Args) => C
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (...args: Args) => D
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (this: Self, ...args: Args) => D
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (...args: Args) => D
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (...args: Args) => E
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (this: Self, ...args: Args) => E
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (...args: Args) => E
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (...args: Args) => F
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (this: Self, ...args: Args) => F
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (...args: Args) => F
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (...args: Args) => G
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (this: Self, ...args: Args) => G
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (...args: Args) => G
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (...args: Args) => H
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (this: Self, ...args: Args) => H
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (...args: Args) => H
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (...args: Args) => I
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (this: Self, ...args: Args) => I
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (...args: Args) => I
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (...args: Args) => J
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (this: Self, ...args: Args) => J
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (...args: Args) => J
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (...args: Args) => K
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (this: Self, ...args: Args) => K
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (...args: Args) => K
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (...args: Args) => L
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (this: Self, ...args: Args) => L
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (...args: Args) => L
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (...args: Args) => M
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (this: Self, ...args: Args) => M
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (...args: Args) => M
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (...args: Args) => N
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (this: Self, ...args: Args) => N
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (...args: Args) => N
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (...args: Args) => O
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (this: Self, ...args: Args) => O
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (...args: Args) => O
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (...args: Args) => P
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (this: Self, ...args: Args) => P
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (...args: Args) => P
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (...args: Args) => Q
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (this: Self, ...args: Args) => Q
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (...args: Args) => Q
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (...args: Args) => R
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (this: Self, ...args: Args) => R
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (...args: Args) => R
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (...args: Args) => S
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (this: Self, ...args: Args) => S
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (...args: Args) => S
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (
this: unassigned,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (...args: Args) => T
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (this: Self, ...args: Args) => T
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
options: { readonly self: Self },
body: (
this: Self,
...args: Args
) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>]
? E
: never,
[Eff] extends [never]
? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>]
? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (...args: Args) => T
(name: string, options?: SpanOptionsNoTrace): fn.TracedType helpers for functions built with Effect.fn and Effect.fnUntraced.
Details
Use these to describe generator-based signatures and traced or untraced variants.
functions
Source effect/Effect.ts:93954290 lines
export declare namespace fn {
/**
* Generator return type accepted by {@link fn} and {@link fnUntraced}.
*
* **When to use**
*
* Use when you need to annotate the return type of a generator body while
* keeping the produced function's `Effect` return type inferred.
*
* **Example** (Annotating an Effect function)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fnUntraced(function*(
* value: string
* ): Effect.fn.Return<number> {
* return yield* Effect.succeed(value.length)
* })
*
* // ┌─── Effect.Effect<number>
* // ▼
* const program = f("hello")
* ```
*
* **Example** (Annotating a parametric Effect function)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fnUntraced(function*<A>(
* value: A
* ): Effect.fn.Return<A> {
* return yield* Effect.succeed(value)
* })
*
* // ┌─── Effect.Effect<string>
* // ▼
* const program = f("hello")
* ```
*
* @category utility types
* @since 3.19.0
*/
export type Return<A, E = never, R = never> = Generator<Effect<any, E, R>, A, any>
/**
* Type of the untraced function builder used by `Effect.fnUntraced`.
*
* @category utility types
* @since 3.11.0
*/
export type Untraced = {
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>
): (...args: Args) => Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>
): (this: Self, ...args: Args) => Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A
): (...args: Args) => A
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A
): (this: Self, ...args: Args) => A
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (...args: Args) => B
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (this: Self, ...args: Args) => B
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (...args: Args) => C
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (this: Self, ...args: Args) => C
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (...args: Args) => D
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (this: Self, ...args: Args) => D
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (...args: Args) => E
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (this: Self, ...args: Args) => E
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (...args: Args) => F
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (this: Self, ...args: Args) => F
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (...args: Args) => G
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (this: Self, ...args: Args) => G
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (...args: Args) => H
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (this: Self, ...args: Args) => H
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (...args: Args) => I
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (this: Self, ...args: Args) => I
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (...args: Args) => J
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (this: Self, ...args: Args) => J
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (...args: Args) => K
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (this: Self, ...args: Args) => K
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (...args: Args) => L
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (this: Self, ...args: Args) => L
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (...args: Args) => M
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (this: Self, ...args: Args) => M
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (...args: Args) => N
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (this: Self, ...args: Args) => N
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (...args: Args) => O
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (this: Self, ...args: Args) => O
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (...args: Args) => P
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (this: Self, ...args: Args) => P
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (...args: Args) => Q
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (this: Self, ...args: Args) => Q
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (...args: Args) => R
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (this: Self, ...args: Args) => R
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (...args: Args) => S
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (this: Self, ...args: Args) => S
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (...args: Args) => T
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never>,
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (this: Self, ...args: Args) => T
}
/**
* Type of the traced function builder used by `Effect.fn`.
*
* @category utility types
* @since 4.0.0
*/
export type Traced = {
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>)
): (...args: Args) => Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>)
): (this: Self, ...args: Args) => Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>)
): (...args: Args) => Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A
): (...args: Args) => A
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A
): (this: Self, ...args: Args) => A
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A
): (...args: Args) => A
<Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (...args: Args) => B
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (this: Self, ...args: Args) => B
<Self, Eff extends Effect<any, any, any>, AEff, Args extends Array<any>, A, B>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B
): (...args: Args) => B
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (...args: Args) => C
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (this: Self, ...args: Args) => C
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C
): (...args: Args) => C
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (...args: Args) => D
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (this: Self, ...args: Args) => D
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D
): (...args: Args) => D
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (...args: Args) => E
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (this: Self, ...args: Args) => E
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E
): (...args: Args) => E
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (...args: Args) => F
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (this: Self, ...args: Args) => F
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F
): (...args: Args) => F
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (...args: Args) => G
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (this: Self, ...args: Args) => G
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G
): (...args: Args) => G
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (...args: Args) => H
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (this: Self, ...args: Args) => H
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H
): (...args: Args) => H
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (...args: Args) => I
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (this: Self, ...args: Args) => I
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I
): (...args: Args) => I
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (...args: Args) => J
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (this: Self, ...args: Args) => J
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J
): (...args: Args) => J
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (...args: Args) => K
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (this: Self, ...args: Args) => K
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K
): (...args: Args) => K
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (...args: Args) => L
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (this: Self, ...args: Args) => L
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L
): (...args: Args) => L
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (...args: Args) => M
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (this: Self, ...args: Args) => M
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M
): (...args: Args) => M
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (...args: Args) => N
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (this: Self, ...args: Args) => N
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N
): (...args: Args) => N
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (...args: Args) => O
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (this: Self, ...args: Args) => O
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O
): (...args: Args) => O
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (...args: Args) => P
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (this: Self, ...args: Args) => P
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P
): (...args: Args) => P
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (...args: Args) => Q
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (this: Self, ...args: Args) => Q
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q
): (...args: Args) => Q
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (...args: Args) => R
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (this: Self, ...args: Args) => R
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R
): (...args: Args) => R
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (...args: Args) => S
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (this: Self, ...args: Args) => S
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S
): (...args: Args) => S
<
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (this: unassigned, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (...args: Args) => T
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (this: Self, ...args: Args) => T
<
Self,
Eff extends Effect<any, any, any>,
AEff,
Args extends Array<any>,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T
>(
options: { readonly self: Self },
body: (this: Self, ...args: Args) => Generator<Eff, AEff, never> | (Eff & Effect<AEff, any, any>),
a: (
_: Effect<
AEff,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer E, infer _R>] ? E
: never,
[Eff] extends [never] ? never
: [Eff] extends [Effect<infer _A, infer _E, infer R>] ? R
: never
>,
...args: Args
) => A,
b: (_: A, ...args: Args) => B,
c: (_: B, ...args: Args) => C,
d: (_: C, ...args: Args) => D,
e: (_: D, ...args: Args) => E,
f: (_: E, ...args: Args) => F,
g: (_: F, ...args: Args) => G,
h: (_: G, ...args: Args) => H,
i: (_: H, ...args: Args) => I,
j: (_: I, ...args: Args) => J,
k: (_: J, ...args: Args) => K,
l: (_: K, ...args: Args) => L,
m: (_: L, ...args: Args) => M,
n: (_: M, ...args: Args) => N,
o: (_: N, ...args: Args) => O,
p: (_: O, ...args: Args) => P,
q: (_: P, ...args: Args) => Q,
r: (_: Q, ...args: Args) => R,
s: (_: R, ...args: Args) => S,
t: (_: S, ...args: Args) => T
): (...args: Args) => T
}
}
/**
* Creates an Effect-returning function without tracing.
*
* **When to use**
*
* Use when you are defining a reusable Effect function whose implementation
* would otherwise be a normal function returning {@link gen}, especially when
* tracing spans or stack-frame capture are not needed.
*
* **Details**
*
* Compared to a plain function that returns {@link gen}, `Effect.fnUntraced`
* reuses the generator body instead of allocating a fresh generator closure
* around the arguments on every call. It does not record an Effect stack-frame
* boundary and does not create tracing spans. Use {@link fn} when you need
* those stack frames or spans. Additional arguments after the generator body
* act like `pipe` transforms: each transform receives the previous result and
* the original function arguments. Annotate the generator return type with
* `Effect.fn.Return<A, E, R>` when the produced `Effect` type needs to be
* stated explicitly.
*
* **Example** (Defining untraced effect functions)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fnUntraced(function*(
* value: string
* ) {
* return yield* Effect.succeed(value.length)
* })
*
* // ┌─── Effect.Effect<number>
* // ▼
* const program = f("hello")
* ```
*
* **Example** (Transforming the returned Effect)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fnUntraced(
* function*(value: string) {
* return yield* Effect.succeed(value.length)
* },
* (effect, value) =>
* effect.pipe(Effect.map((length) => `${value}: ${length}`))
* )
*
* // ┌─── Effect.Effect<string>
* // ▼
* const program = f("hello")
* ```
*
* **Example** (Annotating an untraced non-parametric function)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fnUntraced(function*(
* value: string
* ): Effect.fn.Return<number> {
* return yield* Effect.succeed(value.length)
* })
*
* // ┌─── Effect.Effect<number>
* // ▼
* const program = f("hello")
* ```
*
* **Example** (Annotating an untraced parametric function)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fnUntraced(function*<A>(
* value: A
* ): Effect.fn.Return<A> {
* return yield* Effect.succeed(value)
* })
*
* // ┌─── Effect.Effect<string>
* // ▼
* const program = f("hello")
* ```
*
* @category functions
* @since 3.12.0
*/
export const fnUntraced: fn.Untraced = internal.fnUntraced
/**
* Creates a reusable traced function from an Effect body.
*
* **When to use**
*
* Use when you are defining a reusable Effect function whose implementation
* would otherwise be a normal function returning {@link gen}, and you want
* tracing spans or stack-frame capture.
*
* **Details**
*
* Compared to a plain function that returns {@link gen}, `Effect.fn` reuses the
* generator body instead of allocating a fresh generator closure around the
* arguments on every call. Call `Effect.fn(body, ...)` for a generic
* stack-frame boundary without creating a span. Call
* `Effect.fn("operationName", options?)(body, ...)` when that boundary should
* have a readable operation name and the returned `Effect` should create a
* tracing span when run. {@link SpanOptionsNoTrace} configures span metadata
* such as attributes, links, parent or root selection, kind, sampling, and log
* level. Additional arguments after the generator body act like `pipe`
* transforms: each transform receives the previous result and the original
* function arguments. When those transforms return an `Effect`, the returned
* effect includes stack-frame metadata and, for the named form, a tracing span.
* Generator bodies may declare a `this` parameter; pass `{ self }` before the
* body to bind `this` when the function is created.
*
* **Example** (Defining traced effect functions)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fn("calculateLength")(function*(value: string) {
* return yield* Effect.succeed(value.length)
* })
*
* // ┌─── Effect.Effect<number>
* // ▼
* const program = f("hello")
* ```
*
* **Example** (Transforming the returned Effect)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fn("formatLength")(
* function*(value: string) {
* return yield* Effect.succeed(value.length)
* },
* (effect, value) =>
* effect.pipe(Effect.map((length) => `${value}: ${length}`))
* )
*
* // ┌─── Effect.Effect<string>
* // ▼
* const program = f("hello")
* ```
*
* **Example** (Binding this)
*
* ```ts
* import { Effect } from "effect"
*
* class Counter {
* count = 0
*
* increment = Effect.fn("Counter.increment")(
* { self: this },
* function*(this: Counter, by: number) {
* this.count += by
* return yield* Effect.succeed(this.count)
* }
* )
* }
*
* const counter = new Counter()
*
* // ┌─── Effect.Effect<number>
* // ▼
* const program = counter.increment(1)
* ```
*
* **Example** (Annotating a traced non-parametric function)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fn("calculateLength")(function*(
* value: string
* ): Effect.fn.Return<number> {
* return yield* Effect.succeed(value.length)
* })
*
* // ┌─── Effect.Effect<number>
* // ▼
* const program = f("hello")
* ```
*
* **Example** (Annotating a traced parametric function)
*
* ```ts
* import { Effect } from "effect"
*
* const f = Effect.fn("succeed")(function*<A>(
* value: A
* ): Effect.fn.Return<A> {
* return yield* Effect.succeed(value)
* })
*
* // ┌─── Effect.Effect<string>
* // ▼
* const program = f("hello")
* ```
*
* @category functions
* @since 3.11.0
*/
export const fn: fn.Traced & {
(name: string, options?: SpanOptionsNoTrace): fn.Traced
} = internal.fnReferenced by 5 symbols