const fileName_1 = "(@effect/core) _src/io/Effect/operations/derive.ts";
import * as tsplus_module_1 from "@effect/core/io/Effect/operations/serviceWithEffect";
import * as tsplus_module_2 from "@effect/core/io/Effect/operations/serviceWith";
/**
 * @tsplus static ets/Effect/Ops deriveLifted
 */

export function deriveLifted(S) {
  return (functions, constants, values) => {
    const ret = {};

    for (const k of functions) {
      ret[k] = (...args) => tsplus_module_1.serviceWithEffect(S, h => h[k](...args), fileName_1 + ":56:60");
    }

    for (const k of constants) {
      ret[k] = tsplus_module_1.serviceWithEffect(S, h => h[k], fileName_1 + ":60:40");
    }

    for (const k of values) {
      ret[k] = tsplus_module_2.serviceWith(S, h => h[k], fileName_1 + ":64:34");
    }

    return ret;
  };
}
/**
 * @tsplus static ets/Effect/Ops deriveAccessEffect
 */

export function deriveAccessEffect(S) {
  return generics => {
    const ret = {};

    for (const k of generics) {
      ret[k] = (f, trace) => tsplus_module_1.serviceWithEffect(S, h => f(h[k]), trace);
    }

    return ret;
  };
}
/**
 * @tsplus static ets/Effect/Ops deriveAccess
 */

export function deriveAccess(S) {
  return generics => {
    const ret = {};

    for (const k of generics) {
      ret[k] = (f, trace) => tsplus_module_2.serviceWith(S, h => f(h[k]), trace);
    }

    return ret;
  };
}
//# sourceMappingURL=derive.mjs.map