import { Flatten, UnNest } from '@typed/common'; import { Env, Pure } from '@typed/env'; import { Fn } from '@typed/lambda'; export interface Effects extends Effect, B> { } export interface Effect extends Generator { } export declare type TypeOf = A extends Effect ? Effects, Return> : A extends (...args: readonly any[]) => Effects ? Effects>, Return>> : unknown; export interface Computation extends Fn> { } export declare type PureEffect = Effect, A>; export declare type Yield = A extends Effect ? R : never; export declare type Return = A extends Effect ? R : never; export declare type Capabilities = A extends Effects ? R : never; export declare namespace Effect { function of(value: A): PureEffect; function fromEnv(env: Env): Effect, B>; function fromEnv(pure: Pure): Effect, A>; function withEnv(fn: (env: A) => Effects): Effects; } export declare type IteratorResultOf = IteratorResult, Return>; export declare type CombinedCapabilities>> = UnNest, {}>>; export declare type CombinedValues>> = { readonly [K in keyof A]: Return; }; declare type ToConsList = [] extends A ? unknown : ((...a: A) => any) extends (t: infer T, ...ts: infer TS) => any ? [Capabilities, ToConsList] : never; export {}; //# sourceMappingURL=Effect.d.ts.map