import { Effect } from "@effect/core/io/Effect/definition"; import { Exit } from "@effect/core/io/Exit/definition"; export declare const MergeDecisionSym: unique symbol; export type MergeDecisionSym = typeof MergeDecisionSym; export declare const _R: unique symbol; export type _R = typeof _R; export declare const _E0: unique symbol; export type _E0 = typeof _E0; export declare const _Z0: unique symbol; export type _Z0 = typeof _Z0; export declare const _E: unique symbol; export type _E = typeof _E; export declare const _Z: unique symbol; export type _Z = typeof _Z; /** * @tsplus type effect/core/stream/Channel/MergeDecision */ export interface MergeDecision { readonly [MergeDecisionSym]: typeof MergeDecisionSym; readonly [_R]: () => R; readonly [_E0]: (_: E0) => void; readonly [_Z0]: (_: Z0) => void; readonly [_E]: () => E; readonly [_Z]: () => Z; } /** * @tsplus type effect/core/stream/Channel/MergeDecision.Ops */ export interface MergeDecisionOps { } export declare const MergeDecision: MergeDecisionOps; export declare abstract class MergeDecisionBase implements MergeDecision { readonly [MergeDecisionSym]: typeof MergeDecisionSym; readonly [_R]: () => R; readonly [_E0]: (_: E0) => void; readonly [_Z0]: (_: Z0) => void; readonly [_E]: () => E; readonly [_Z]: () => Z; } /** * @tsplus unify effect/core/stream/Channel/MergeDecision */ export declare function unifyMergeDecision>(self: X): MergeDecision<[ X ] extends [{ [k in typeof _R]: () => infer R; }] ? R : never, [ X ] extends [{ [k in typeof _E0]: (_: infer E0) => void; }] ? E0 : never, [ X ] extends [{ [k in typeof _Z0]: (_: infer Z0) => void; }] ? Z0 : never, [ X ] extends [{ [k in typeof _E]: () => infer E; }] ? E : never, [ X ] extends [{ [k in typeof _Z]: () => infer A; }] ? A : never>; export declare class Done extends MergeDecisionBase { readonly io: Effect; readonly _tag = "Done"; constructor(io: Effect); } export declare class Await extends MergeDecisionBase { readonly f: (ex: Exit) => Effect; readonly _tag = "Await"; constructor(f: (ex: Exit) => Effect); } /** * @tsplus static effect/core/stream/Channel/MergeDecision.Ops done * @tsplus location "@effect/core/stream/Channel/MergeDecision" */ export declare function done(io: Effect): MergeDecision; /** * @tsplus static effect/core/stream/Channel/MergeDecision.Ops await * @tsplus location "@effect/core/stream/Channel/MergeDecision" */ export declare function _await(f: (ex: Exit) => Effect): MergeDecision; /** * @tsplus static effect/core/stream/Channel/MergeDecision.Ops awaitConst * @tsplus location "@effect/core/stream/Channel/MergeDecision" */ export declare function awaitConst(io: Effect): MergeDecision; /** * @tsplus macro remove */ export declare function concreteMergeDecision(_: MergeDecision): asserts _ is Done | Await; //# sourceMappingURL=MergeDecision.d.ts.map