"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.parallel = exports.Sequential = exports.ParallelN = exports.Parallel = exports.ExecutionStrategy = void 0;
exports.parallelN = parallelN;
exports.sequential = void 0;
const ExecutionStrategy = {
  $: {}
};
/**
 * Execute effects sequentially.
 */

exports.ExecutionStrategy = ExecutionStrategy;

class Sequential {
  constructor() {
    this._tag = "Sequential";
  }

}
/**
 * Execute effects in parallel.
 */


exports.Sequential = Sequential;

class Parallel {
  constructor() {
    this._tag = "Parallel";
  }

}
/**
 * Execute effects in parallel, up to the specified number of concurrent
 * fibers.
 */


exports.Parallel = Parallel;

class ParallelN {
  constructor(n) {
    this.n = n;
    this._tag = "ParallelN";
  }

}
/**
 * Execute effects sequentially.
 *
 * @tsplus static ets/ExecutionStrategy/Ops Sequential
 */


exports.ParallelN = ParallelN;
const sequential = /*#__PURE__*/new Sequential();
/**
 * Execute effects in parallel.
 *
 * @tsplus static ets/ExecutionStrategy/Ops Parallel
 */

exports.sequential = sequential;
const parallel = /*#__PURE__*/new Parallel();
/**
 * Execute effects in parallel, up to the specified number of concurrent
 * fibers.
 *
 * @tsplus static ets/ExecutionStrategy/Ops ParallelN
 */

exports.parallel = parallel;

function parallelN(n) {
  return new ParallelN(n);
}
//# sourceMappingURL=definition.js.map