"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports._Z0 = exports._Z = exports._R = exports._E0 = exports._E = exports.MergeDecisionSym = exports.MergeDecisionBase = exports.MergeDecision = exports.Done = exports.Await = void 0;
exports._await = _await;
exports.awaitConst = awaitConst;
exports.concreteMergeDecision = concreteMergeDecision;
exports.done = done;
exports.unifyMergeDecision = unifyMergeDecision;

var _a;

const MergeDecisionSym = /*#__PURE__*/Symbol.for("@effect/core/stream/Channel/MergeDecision");
exports.MergeDecisionSym = MergeDecisionSym;

const _R = /*#__PURE__*/Symbol.for("@effect/core/stream/Channel/MergeDecision/R");

exports._R = _R;

const _E0 = /*#__PURE__*/Symbol.for("@effect/core/stream/Channel/MergeDecision/E0");

exports._E0 = _E0;

const _Z0 = /*#__PURE__*/Symbol.for("@effect/core/stream/Channel/MergeDecision/Z0");

exports._Z0 = _Z0;

const _E = /*#__PURE__*/Symbol.for("@effect/core/stream/Channel/MergeDecision/E");

exports._E = _E;

const _Z = /*#__PURE__*/Symbol.for("@effect/core/stream/Channel/MergeDecision/Z");

exports._Z = _Z;
const MergeDecision = {};
exports.MergeDecision = MergeDecision;

class MergeDecisionBase {
  constructor() {
    this[_a] = MergeDecisionSym;
  }

}

exports.MergeDecisionBase = MergeDecisionBase;
_a = MergeDecisionSym;
/**
 * @tsplus unify ets/Channel/MergeDecision
 */

function unifyMergeDecision(self) {
  return self;
}

class Done extends MergeDecisionBase {
  constructor(io) {
    super();
    this.io = io;
    this._tag = "Done";
  }

}

exports.Done = Done;

class Await extends MergeDecisionBase {
  constructor(f) {
    super();
    this.f = f;
    this._tag = "Await";
  }

}
/**
 * @tsplus static ets/Channel/MergeDecision/Ops done
 */


exports.Await = Await;

function done(io) {
  return new Done(io);
}
/**
 * @tsplus static ets/Channel/MergeDecision/Ops await
 */


function _await(f) {
  return new Await(f);
}
/**
 * @tsplus static ets/Channel/MergeDecision/Ops awaitConst
 */


function awaitConst(io) {
  return new Await(_ => io);
}
/**
 * @tsplus macro remove
 */


function concreteMergeDecision(_) {//
}
//# sourceMappingURL=MergeDecision.js.map