import { Effect } from "@effect/core/io/Effect/definition"; import { Tag } from "@tsplus/stdlib/service/Tag"; import { Maybe } from "@tsplus/stdlib/data/Maybe/definition"; import { NoSuchElement } from "@tsplus/stdlib/exceptions"; import { Either } from "@tsplus/stdlib/data/Either/definition"; import { Scope } from "@effect/core/io/Scope/definition"; /** * inspired by https://github.com/tusharmath/qio/pull/22 (revised) */ export declare const _GenR: unique symbol; export type _GenR = typeof _GenR; export declare const _GenE: unique symbol; export type _GenE = typeof _GenE; export declare const _GenA: unique symbol; export type _GenA = typeof _GenA; export declare class GenEffect { readonly effect: Effect; readonly [_GenR]: () => R; readonly [_GenE]: () => E; readonly [_GenA]: () => A; constructor(effect: Effect); [Symbol.iterator](): Generator, A, any>; } export interface Adapter { (_: Tag): GenEffect; (_: Maybe, onNone: () => E): GenEffect; (_: Maybe): GenEffect; (_: Either): GenEffect; (_: Effect): GenEffect; } export interface AdapterWithScope extends Adapter { (_: Effect): GenEffect; } /** * @tsplus static effect/core/io/Effect.Ops genWithManaged * @tsplus location "@effect/core/io/Effect/operations/gen" */ export declare function genScoped, AEff>(f: (i: AdapterWithScope) => Generator): Effect<[ Eff ] extends [{ [_GenR]: () => infer R; }] ? R : never, [ Eff ] extends [{ [_GenE]: () => infer E; }] ? E : never, AEff>; /** * @tsplus static effect/core/io/Effect.Ops gen * @tsplus location "@effect/core/io/Effect/operations/gen" */ export declare function gen, AEff>(f: (i: Adapter) => Generator): Effect<[ Eff ] extends [{ [_GenR]: () => infer R; }] ? R : never, [ Eff ] extends [{ [_GenE]: () => infer E; }] ? E : never, AEff>; //# sourceMappingURL=gen.d.ts.map