/** * @since 2.0.0 */ import type * as Effect from "./Effect.js" import type * as Exit from "./Exit.js" import * as internal from "./internal/channel/mergeDecision.js" import type * as Types from "./Types.js" /** * @since 2.0.0 * @category symbols */ export const MergeDecisionTypeId: unique symbol = internal.MergeDecisionTypeId /** * @since 2.0.0 * @category symbols */ export type MergeDecisionTypeId = typeof MergeDecisionTypeId /** * @since 2.0.0 * @category models */ export interface MergeDecision extends MergeDecision.Variance {} /** * @since 2.0.0 */ export declare namespace MergeDecision { /** * @since 2.0.0 * @category models */ export interface Variance { readonly [MergeDecisionTypeId]: { _R: Types.Covariant _E0: Types.Contravariant _Z0: Types.Contravariant _E: Types.Covariant _Z: Types.Covariant } } } /** * @since 2.0.0 * @category constructors */ export const Done: (effect: Effect.Effect) => MergeDecision = internal.Done /** * @since 2.0.0 * @category constructors */ export const Await: ( f: (exit: Exit.Exit) => Effect.Effect ) => MergeDecision = internal.Await /** * @since 2.0.0 * @category constructors */ export const AwaitConst: (effect: Effect.Effect) => MergeDecision = internal.AwaitConst /** * Returns `true` if the specified value is a `MergeDecision`, `false` * otherwise. * * @since 2.0.0 * @category refinements */ export const isMergeDecision: (u: unknown) => u is MergeDecision = internal.isMergeDecision /** * @since 2.0.0 * @category folding */ export const match: { /** * @since 2.0.0 * @category folding */ ( options: { readonly onDone: (effect: Effect.Effect) => Z2 readonly onAwait: (f: (exit: Exit.Exit) => Effect.Effect) => Z2 } ): (self: MergeDecision) => Z2 /** * @since 2.0.0 * @category folding */ ( self: MergeDecision, options: { readonly onDone: (effect: Effect.Effect) => Z2 readonly onAwait: (f: (exit: Exit.Exit) => Effect.Effect) => Z2 } ): Z2 } = internal.match