// -----------------------------------------------------------------------------
// Model
// -----------------------------------------------------------------------------

/**
 * A `Supervisor<A>` is allowed to supervise the launching and termination of
 * fibers, producing some visible value of type `A` from the supervision.
 *
 * @tsplus type ets/Supervisor
 * @tsplus companion ets/Supervisor/Ops
 */
export class Supervisor {
  constructor(
  /**
   * Returns an effect that succeeds with the value produced by this
   * supervisor. This value may change over time, reflecting what the
   * supervisor produces as it supervises fibers.
   */
  value, unsafeOnStart, unsafeOnEnd, unsafeOnEffect = () => undefined, unsafeOnSuspend = () => undefined, unsafeOnResume = () => undefined) {
    this.value = value;
    this.unsafeOnStart = unsafeOnStart;
    this.unsafeOnEnd = unsafeOnEnd;
    this.unsafeOnEffect = unsafeOnEffect;
    this.unsafeOnSuspend = unsafeOnSuspend;
    this.unsafeOnResume = unsafeOnResume;
  }

}
//# sourceMappingURL=definition.mjs.map