effect 2.3.8 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/dist/cjs/BigInt.js +14 -1
  2. package/dist/cjs/BigInt.js.map +1 -1
  3. package/dist/cjs/Effect.js +48 -61
  4. package/dist/cjs/Effect.js.map +1 -1
  5. package/dist/cjs/Either.js +35 -6
  6. package/dist/cjs/Either.js.map +1 -1
  7. package/dist/cjs/Equal.js +1 -1
  8. package/dist/cjs/Equal.js.map +1 -1
  9. package/dist/cjs/Exit.js +1 -1
  10. package/dist/cjs/Number.js +25 -1
  11. package/dist/cjs/Number.js.map +1 -1
  12. package/dist/cjs/Predicate.js +40 -3
  13. package/dist/cjs/Predicate.js.map +1 -1
  14. package/dist/cjs/ReadonlyArray.js +2 -2
  15. package/dist/cjs/ReadonlyArray.js.map +1 -1
  16. package/dist/cjs/ReadonlyRecord.js +71 -76
  17. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  18. package/dist/cjs/STM.js.map +1 -1
  19. package/dist/cjs/Schedule.js.map +1 -1
  20. package/dist/cjs/Sink.js.map +1 -1
  21. package/dist/cjs/Stream.js +3 -23
  22. package/dist/cjs/Stream.js.map +1 -1
  23. package/dist/cjs/Struct.js +3 -1
  24. package/dist/cjs/Struct.js.map +1 -1
  25. package/dist/cjs/TestAnnotation.js.map +1 -1
  26. package/dist/cjs/internal/channel/channelExecutor.js +5 -5
  27. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  28. package/dist/cjs/internal/channel/channelState.js +5 -5
  29. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  30. package/dist/cjs/internal/channel.js.map +1 -1
  31. package/dist/cjs/internal/clock.js +3 -4
  32. package/dist/cjs/internal/clock.js.map +1 -1
  33. package/dist/cjs/internal/core-effect.js +6 -23
  34. package/dist/cjs/internal/core-effect.js.map +1 -1
  35. package/dist/cjs/internal/core.js +11 -27
  36. package/dist/cjs/internal/core.js.map +1 -1
  37. package/dist/cjs/internal/effect/circular.js +4 -5
  38. package/dist/cjs/internal/effect/circular.js.map +1 -1
  39. package/dist/cjs/internal/either.js +3 -3
  40. package/dist/cjs/internal/either.js.map +1 -1
  41. package/dist/cjs/internal/groupBy.js.map +1 -1
  42. package/dist/cjs/internal/layer.js +0 -2
  43. package/dist/cjs/internal/layer.js.map +1 -1
  44. package/dist/cjs/internal/runtime.js +12 -1
  45. package/dist/cjs/internal/runtime.js.map +1 -1
  46. package/dist/cjs/internal/schedule.js +4 -4
  47. package/dist/cjs/internal/schedule.js.map +1 -1
  48. package/dist/cjs/internal/sink.js +0 -2
  49. package/dist/cjs/internal/sink.js.map +1 -1
  50. package/dist/cjs/internal/stm/stm.js +1 -0
  51. package/dist/cjs/internal/stm/stm.js.map +1 -1
  52. package/dist/cjs/internal/stream.js +51 -64
  53. package/dist/cjs/internal/stream.js.map +1 -1
  54. package/dist/cjs/internal/version.js +1 -1
  55. package/dist/dts/BigInt.d.ts +7 -0
  56. package/dist/dts/BigInt.d.ts.map +1 -1
  57. package/dist/dts/Brand.d.ts +1 -1
  58. package/dist/dts/Brand.d.ts.map +1 -1
  59. package/dist/dts/Cause.d.ts +1 -1
  60. package/dist/dts/Cause.d.ts.map +1 -1
  61. package/dist/dts/Channel.d.ts +11 -11
  62. package/dist/dts/Channel.d.ts.map +1 -1
  63. package/dist/dts/Chunk.d.ts +3 -3
  64. package/dist/dts/Config.d.ts +4 -4
  65. package/dist/dts/Config.d.ts.map +1 -1
  66. package/dist/dts/Cron.d.ts +1 -1
  67. package/dist/dts/Cron.d.ts.map +1 -1
  68. package/dist/dts/Differ.d.ts +2 -2
  69. package/dist/dts/Differ.d.ts.map +1 -1
  70. package/dist/dts/Effect.d.ts +84 -108
  71. package/dist/dts/Effect.d.ts.map +1 -1
  72. package/dist/dts/Either.d.ts +126 -83
  73. package/dist/dts/Either.d.ts.map +1 -1
  74. package/dist/dts/Encoding.d.ts +6 -6
  75. package/dist/dts/Encoding.d.ts.map +1 -1
  76. package/dist/dts/Equal.d.ts.map +1 -1
  77. package/dist/dts/Exit.d.ts +2 -2
  78. package/dist/dts/Fiber.d.ts +2 -2
  79. package/dist/dts/Fiber.d.ts.map +1 -1
  80. package/dist/dts/GroupBy.d.ts +12 -12
  81. package/dist/dts/GroupBy.d.ts.map +1 -1
  82. package/dist/dts/Layer.d.ts +26 -26
  83. package/dist/dts/Layer.d.ts.map +1 -1
  84. package/dist/dts/List.d.ts +2 -2
  85. package/dist/dts/Logger.d.ts +4 -4
  86. package/dist/dts/Match.d.ts +2 -2
  87. package/dist/dts/Match.d.ts.map +1 -1
  88. package/dist/dts/MergeDecision.d.ts +1 -1
  89. package/dist/dts/MergeState.d.ts +5 -5
  90. package/dist/dts/MergeState.d.ts.map +1 -1
  91. package/dist/dts/Metric.d.ts +13 -13
  92. package/dist/dts/Metric.d.ts.map +1 -1
  93. package/dist/dts/MetricPolling.d.ts +4 -4
  94. package/dist/dts/MetricPolling.d.ts.map +1 -1
  95. package/dist/dts/Number.d.ts +8 -0
  96. package/dist/dts/Number.d.ts.map +1 -1
  97. package/dist/dts/Option.d.ts +11 -11
  98. package/dist/dts/Predicate.d.ts +37 -2
  99. package/dist/dts/Predicate.d.ts.map +1 -1
  100. package/dist/dts/ReadonlyArray.d.ts +9 -8
  101. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  102. package/dist/dts/ReadonlyRecord.d.ts +111 -94
  103. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  104. package/dist/dts/Reloadable.d.ts +4 -4
  105. package/dist/dts/Reloadable.d.ts.map +1 -1
  106. package/dist/dts/RequestResolver.d.ts +13 -13
  107. package/dist/dts/RequestResolver.d.ts.map +1 -1
  108. package/dist/dts/Resource.d.ts +1 -1
  109. package/dist/dts/Resource.d.ts.map +1 -1
  110. package/dist/dts/STM.d.ts +144 -139
  111. package/dist/dts/STM.d.ts.map +1 -1
  112. package/dist/dts/Schedule.d.ts +171 -179
  113. package/dist/dts/Schedule.d.ts.map +1 -1
  114. package/dist/dts/SingleProducerAsyncInput.d.ts +1 -1
  115. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  116. package/dist/dts/Sink.d.ts +13 -13
  117. package/dist/dts/Sink.d.ts.map +1 -1
  118. package/dist/dts/Stream.d.ts +355 -366
  119. package/dist/dts/Stream.d.ts.map +1 -1
  120. package/dist/dts/Struct.d.ts +3 -3
  121. package/dist/dts/Struct.d.ts.map +1 -1
  122. package/dist/dts/SubscriptionRef.d.ts +2 -2
  123. package/dist/dts/TArray.d.ts +2 -2
  124. package/dist/dts/TDeferred.d.ts +3 -3
  125. package/dist/dts/TMap.d.ts +10 -10
  126. package/dist/dts/TSet.d.ts +4 -4
  127. package/dist/dts/Take.d.ts +2 -2
  128. package/dist/dts/TestAnnotation.d.ts +2 -2
  129. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  130. package/dist/dts/Types.d.ts +7 -0
  131. package/dist/dts/Types.d.ts.map +1 -1
  132. package/dist/dts/internal/stm/stm.d.ts +2 -15
  133. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  134. package/dist/esm/BigInt.js +12 -0
  135. package/dist/esm/BigInt.js.map +1 -1
  136. package/dist/esm/Effect.js +45 -58
  137. package/dist/esm/Effect.js.map +1 -1
  138. package/dist/esm/Either.js +42 -5
  139. package/dist/esm/Either.js.map +1 -1
  140. package/dist/esm/Equal.js +1 -1
  141. package/dist/esm/Equal.js.map +1 -1
  142. package/dist/esm/Exit.js +1 -1
  143. package/dist/esm/Number.js +23 -0
  144. package/dist/esm/Number.js.map +1 -1
  145. package/dist/esm/Predicate.js +37 -2
  146. package/dist/esm/Predicate.js.map +1 -1
  147. package/dist/esm/ReadonlyArray.js +2 -2
  148. package/dist/esm/ReadonlyArray.js.map +1 -1
  149. package/dist/esm/ReadonlyRecord.js +70 -75
  150. package/dist/esm/ReadonlyRecord.js.map +1 -1
  151. package/dist/esm/STM.js.map +1 -1
  152. package/dist/esm/Schedule.js.map +1 -1
  153. package/dist/esm/Sink.js.map +1 -1
  154. package/dist/esm/Stream.js +5 -22
  155. package/dist/esm/Stream.js.map +1 -1
  156. package/dist/esm/Struct.js +3 -1
  157. package/dist/esm/Struct.js.map +1 -1
  158. package/dist/esm/TestAnnotation.js.map +1 -1
  159. package/dist/esm/internal/channel/channelExecutor.js +5 -5
  160. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  161. package/dist/esm/internal/channel/channelState.js +3 -3
  162. package/dist/esm/internal/channel/channelState.js.map +1 -1
  163. package/dist/esm/internal/channel.js.map +1 -1
  164. package/dist/esm/internal/clock.js +3 -4
  165. package/dist/esm/internal/clock.js.map +1 -1
  166. package/dist/esm/internal/core-effect.js +4 -20
  167. package/dist/esm/internal/core-effect.js.map +1 -1
  168. package/dist/esm/internal/core.js +8 -22
  169. package/dist/esm/internal/core.js.map +1 -1
  170. package/dist/esm/internal/effect/circular.js +4 -5
  171. package/dist/esm/internal/effect/circular.js.map +1 -1
  172. package/dist/esm/internal/either.js +3 -3
  173. package/dist/esm/internal/either.js.map +1 -1
  174. package/dist/esm/internal/groupBy.js.map +1 -1
  175. package/dist/esm/internal/layer.js +0 -2
  176. package/dist/esm/internal/layer.js.map +1 -1
  177. package/dist/esm/internal/runtime.js +12 -1
  178. package/dist/esm/internal/runtime.js.map +1 -1
  179. package/dist/esm/internal/schedule.js +4 -4
  180. package/dist/esm/internal/schedule.js.map +1 -1
  181. package/dist/esm/internal/sink.js +0 -2
  182. package/dist/esm/internal/sink.js.map +1 -1
  183. package/dist/esm/internal/stm/stm.js +1 -0
  184. package/dist/esm/internal/stm/stm.js.map +1 -1
  185. package/dist/esm/internal/stream.js +49 -59
  186. package/dist/esm/internal/stream.js.map +1 -1
  187. package/dist/esm/internal/version.js +1 -1
  188. package/package.json +1 -1
  189. package/src/BigInt.ts +13 -0
  190. package/src/Brand.ts +4 -4
  191. package/src/Cause.ts +1 -1
  192. package/src/Channel.ts +17 -17
  193. package/src/Chunk.ts +4 -4
  194. package/src/Config.ts +4 -4
  195. package/src/Cron.ts +2 -2
  196. package/src/Differ.ts +2 -2
  197. package/src/Effect.ts +100 -145
  198. package/src/Either.ts +215 -133
  199. package/src/Encoding.ts +3 -3
  200. package/src/Equal.ts +1 -1
  201. package/src/Exit.ts +2 -2
  202. package/src/Fiber.ts +2 -2
  203. package/src/GroupBy.ts +16 -16
  204. package/src/Layer.ts +32 -32
  205. package/src/List.ts +3 -3
  206. package/src/Logger.ts +4 -4
  207. package/src/Match.ts +3 -3
  208. package/src/MergeDecision.ts +1 -1
  209. package/src/MergeState.ts +8 -8
  210. package/src/Metric.ts +13 -13
  211. package/src/MetricPolling.ts +9 -9
  212. package/src/Number.ts +26 -0
  213. package/src/Option.ts +17 -17
  214. package/src/Predicate.ts +39 -2
  215. package/src/ReadonlyArray.ts +23 -15
  216. package/src/ReadonlyRecord.ts +421 -265
  217. package/src/Reloadable.ts +4 -4
  218. package/src/RequestResolver.ts +19 -19
  219. package/src/Resource.ts +3 -3
  220. package/src/STM.ts +166 -213
  221. package/src/Schedule.ts +331 -361
  222. package/src/SingleProducerAsyncInput.ts +1 -1
  223. package/src/Sink.ts +19 -19
  224. package/src/Stream.ts +449 -456
  225. package/src/Struct.ts +8 -5
  226. package/src/SubscriptionRef.ts +2 -2
  227. package/src/TArray.ts +2 -2
  228. package/src/TDeferred.ts +4 -4
  229. package/src/TMap.ts +10 -10
  230. package/src/TSet.ts +4 -4
  231. package/src/Take.ts +4 -4
  232. package/src/TestAnnotation.ts +5 -8
  233. package/src/Types.ts +11 -0
  234. package/src/internal/blockedRequests.ts +2 -2
  235. package/src/internal/cause.ts +2 -2
  236. package/src/internal/channel/channelExecutor.ts +26 -26
  237. package/src/internal/channel/channelState.ts +13 -13
  238. package/src/internal/channel/mergeDecision.ts +1 -1
  239. package/src/internal/channel/mergeState.ts +6 -6
  240. package/src/internal/channel/singleProducerAsyncInput.ts +5 -5
  241. package/src/internal/channel.ts +43 -43
  242. package/src/internal/clock.ts +3 -4
  243. package/src/internal/config.ts +7 -7
  244. package/src/internal/configError.ts +1 -1
  245. package/src/internal/configProvider/pathPatch.ts +2 -2
  246. package/src/internal/configProvider.ts +1 -1
  247. package/src/internal/core-effect.ts +28 -43
  248. package/src/internal/core.ts +15 -40
  249. package/src/internal/dataSource.ts +26 -26
  250. package/src/internal/differ/orPatch.ts +7 -7
  251. package/src/internal/differ.ts +2 -2
  252. package/src/internal/effect/circular.ts +9 -10
  253. package/src/internal/either.ts +25 -22
  254. package/src/internal/encoding/base64.ts +1 -1
  255. package/src/internal/encoding/base64Url.ts +1 -1
  256. package/src/internal/encoding/hex.ts +1 -1
  257. package/src/internal/fiber.ts +2 -2
  258. package/src/internal/fiberRuntime.ts +9 -9
  259. package/src/internal/groupBy.ts +40 -40
  260. package/src/internal/layer/circular.ts +4 -4
  261. package/src/internal/layer.ts +52 -54
  262. package/src/internal/matcher.ts +5 -5
  263. package/src/internal/metric/polling.ts +8 -8
  264. package/src/internal/metric.ts +6 -6
  265. package/src/internal/reloadable.ts +4 -4
  266. package/src/internal/resource.ts +2 -2
  267. package/src/internal/runtime.ts +32 -19
  268. package/src/internal/schedule.ts +430 -500
  269. package/src/internal/sink.ts +27 -29
  270. package/src/internal/stm/core.ts +23 -23
  271. package/src/internal/stm/stm.ts +158 -157
  272. package/src/internal/stm/tArray.ts +3 -3
  273. package/src/internal/stm/tDeferred.ts +5 -5
  274. package/src/internal/stm/tMap.ts +13 -13
  275. package/src/internal/stm/tSet.ts +4 -4
  276. package/src/internal/stream.ts +688 -723
  277. package/src/internal/subscriptionRef.ts +3 -3
  278. package/src/internal/take.ts +6 -6
  279. package/src/internal/version.ts +1 -1
package/dist/dts/STM.d.ts CHANGED
@@ -11,7 +11,7 @@ import type { TypeLambda } from "./HKT.js";
11
11
  import type * as Option from "./Option.js";
12
12
  import type { Pipeable } from "./Pipeable.js";
13
13
  import type { Predicate, Refinement } from "./Predicate.js";
14
- import type { Covariant, NoInfer } from "./Types.js";
14
+ import type { Covariant, MergeRecord, NoInfer } from "./Types.js";
15
15
  import type * as Unify from "./Unify.js";
16
16
  /**
17
17
  * @since 2.0.0
@@ -101,10 +101,10 @@ declare module "./Context.js" {
101
101
  * @category models
102
102
  */
103
103
  declare module "./Either.js" {
104
- interface Left<E, A> extends STM<A, E> {
104
+ interface Left<L, R> extends STM<R, L> {
105
105
  readonly _tag: "Left";
106
106
  }
107
- interface Right<E, A> extends STM<A, E> {
107
+ interface Right<L, R> extends STM<R, L> {
108
108
  readonly _tag: "Right";
109
109
  }
110
110
  }
@@ -164,8 +164,8 @@ export declare const isSTM: (u: unknown) => u is STM<unknown, unknown, unknown>;
164
164
  * @category constructors
165
165
  */
166
166
  export declare const acquireUseRelease: {
167
- <A, R2, E2, A2, R3, E3, A3>(use: (resource: A) => STM<A2, E2, R2>, release: (resource: A) => STM<A3, E3, R3>): <R, E>(acquire: STM<A, E, R>) => Effect.Effect<A2, E2 | E3 | E, R2 | R3 | R>;
168
- <R, E, A, R2, E2, A2, R3, E3, A3>(acquire: STM<A, E, R>, use: (resource: A) => STM<A2, E2, R2>, release: (resource: A) => STM<A3, E3, R3>): Effect.Effect<A2, E | E2 | E3, R | R2 | R3>;
167
+ <A, A2, E2, R2, A3, E3, R3>(use: (resource: A) => STM<A2, E2, R2>, release: (resource: A) => STM<A3, E3, R3>): <E, R>(acquire: STM<A, E, R>) => Effect.Effect<A2, E2 | E3 | E, R2 | R3 | R>;
168
+ <A, E, R, A2, E2, R2, A3, E3, R3>(acquire: STM<A, E, R>, use: (resource: A) => STM<A2, E2, R2>, release: (resource: A) => STM<A3, E3, R3>): Effect.Effect<A2, E | E2 | E3, R | R2 | R3>;
169
169
  };
170
170
  /**
171
171
  * @since 2.0.0
@@ -236,7 +236,7 @@ export declare const all: All.Signature;
236
236
  */
237
237
  export declare const as: {
238
238
  <A2>(value: A2): <A, E, R>(self: STM<A, E, R>) => STM<A2, E, R>;
239
- <R, E, A, A2>(self: STM<A, E, R>, value: A2): STM<A2, E, R>;
239
+ <A, E, R, A2>(self: STM<A, E, R>, value: A2): STM<A2, E, R>;
240
240
  };
241
241
  /**
242
242
  * Maps the success value of this effect to an optional value.
@@ -275,8 +275,8 @@ export declare const attempt: <A>(evaluate: LazyArg<A>) => STM<A, unknown>;
275
275
  * @category error handling
276
276
  */
277
277
  export declare const catchAll: {
278
- <E, R1, E1, B>(f: (e: E) => STM<B, E1, R1>): <R, A>(self: STM<A, E, R>) => STM<B | A, E1, R1 | R>;
279
- <R, A, E, R1, E1, B>(self: STM<A, E, R>, f: (e: E) => STM<B, E1, R1>): STM<A | B, E1, R | R1>;
278
+ <E, B, E1, R1>(f: (e: E) => STM<B, E1, R1>): <A, R>(self: STM<A, E, R>) => STM<B | A, E1, R1 | R>;
279
+ <A, E, R, B, E1, R1>(self: STM<A, E, R>, f: (e: E) => STM<B, E1, R1>): STM<A | B, E1, R | R1>;
280
280
  };
281
281
  /**
282
282
  * Recovers from some or all of the error cases.
@@ -285,8 +285,8 @@ export declare const catchAll: {
285
285
  * @category error handling
286
286
  */
287
287
  export declare const catchSome: {
288
- <E, R2, E2, A2>(pf: (error: E) => Option.Option<STM<A2, E2, R2>>): <R, A>(self: STM<A, E, R>) => STM<A2 | A, E | E2, R2 | R>;
289
- <R, A, E, R2, E2, A2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<STM<A2, E2, R2>>): STM<A | A2, E | E2, R | R2>;
288
+ <E, A2, E2, R2>(pf: (error: E) => Option.Option<STM<A2, E2, R2>>): <A, R>(self: STM<A, E, R>) => STM<A2 | A, E | E2, R2 | R>;
289
+ <A, E, R, A2, E2, R2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<STM<A2, E2, R2>>): STM<A | A2, E | E2, R | R2>;
290
290
  };
291
291
  /**
292
292
  * Recovers from the specified tagged error.
@@ -297,14 +297,14 @@ export declare const catchSome: {
297
297
  export declare const catchTag: {
298
298
  <K extends E["_tag"] & string, E extends {
299
299
  _tag: string;
300
- }, R1, E1, A1>(k: K, f: (e: Extract<E, {
300
+ }, A1, E1, R1>(k: K, f: (e: Extract<E, {
301
301
  _tag: K;
302
- }>) => STM<A1, E1, R1>): <R, A>(self: STM<A, E, R>) => STM<A1 | A, E1 | Exclude<E, {
302
+ }>) => STM<A1, E1, R1>): <A, R>(self: STM<A, E, R>) => STM<A1 | A, E1 | Exclude<E, {
303
303
  _tag: K;
304
304
  }>, R1 | R>;
305
- <R, E extends {
305
+ <A, E extends {
306
306
  _tag: string;
307
- }, A, K extends E["_tag"] & string, R1, E1, A1>(self: STM<A, E, R>, k: K, f: (e: Extract<E, {
307
+ }, R, K extends E["_tag"] & string, A1, E1, R1>(self: STM<A, E, R>, k: K, f: (e: Extract<E, {
308
308
  _tag: K;
309
309
  }>) => STM<A1, E1, R1>): STM<A | A1, E1 | Exclude<E, {
310
310
  _tag: K;
@@ -323,7 +323,7 @@ export declare const catchTags: {
323
323
  [K in E["_tag"]]+?: ((error: Extract<E, {
324
324
  _tag: K;
325
325
  }>) => STM<any, any, any>);
326
- }>(cases: Cases): <R, A>(self: STM<A, E, R>) => STM<A | {
326
+ }>(cases: Cases): <A, R>(self: STM<A, E, R>) => STM<A | {
327
327
  [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => STM<infer A, any, any> ? A : never;
328
328
  }[keyof Cases], Exclude<E, {
329
329
  _tag: keyof Cases;
@@ -362,8 +362,8 @@ export declare const check: (predicate: LazyArg<boolean>) => STM<void>;
362
362
  * @category mutations
363
363
  */
364
364
  export declare const collect: {
365
- <A, A2>(pf: (a: A) => Option.Option<A2>): <R, E>(self: STM<A, E, R>) => STM<A2, E, R>;
366
- <R, E, A, A2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<A2>): STM<A2, E, R>;
365
+ <A, A2>(pf: (a: A) => Option.Option<A2>): <E, R>(self: STM<A, E, R>) => STM<A2, E, R>;
366
+ <A, E, R, A2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<A2>): STM<A2, E, R>;
367
367
  };
368
368
  /**
369
369
  * Simultaneously filters and maps the value produced by this effect.
@@ -372,8 +372,8 @@ export declare const collect: {
372
372
  * @category mutations
373
373
  */
374
374
  export declare const collectSTM: {
375
- <A, R2, E2, A2>(pf: (a: A) => Option.Option<STM<A2, E2, R2>>): <R, E>(self: STM<A, E, R>) => STM<A2, E2 | E, R2 | R>;
376
- <R, E, A, R2, E2, A2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<A2, E2, R2>>): STM<A2, E | E2, R | R2>;
375
+ <A, A2, E2, R2>(pf: (a: A) => Option.Option<STM<A2, E2, R2>>): <E, R>(self: STM<A, E, R>) => STM<A2, E2 | E, R2 | R>;
376
+ <A, E, R, A2, E2, R2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<A2, E2, R2>>): STM<A2, E | E2, R | R2>;
377
377
  };
378
378
  /**
379
379
  * Commits this transaction atomically.
@@ -418,7 +418,7 @@ export declare const contextWith: <R0, R>(f: (environment: Context.Context<R0>)
418
418
  * @since 2.0.0
419
419
  * @category constructors
420
420
  */
421
- export declare const contextWithSTM: <R0, R, E, A>(f: (environment: Context.Context<R0>) => STM<A, E, R>) => STM<A, E, R0 | R>;
421
+ export declare const contextWithSTM: <R0, A, E, R>(f: (environment: Context.Context<R0>) => STM<A, E, R>) => STM<A, E, R0 | R>;
422
422
  /**
423
423
  * Transforms the environment being provided to this effect with the specified
424
424
  * function.
@@ -458,7 +458,7 @@ export declare const dieSync: (evaluate: LazyArg<unknown>) => STM<never>;
458
458
  * @since 2.0.0
459
459
  * @category mutations
460
460
  */
461
- export declare const either: <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<E, A>, never, R>;
461
+ export declare const either: <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<A, E>, never, R>;
462
462
  /**
463
463
  * Executes the specified finalization transaction whether or not this effect
464
464
  * succeeds. Note that as with all STM transactions, if the full transaction
@@ -469,7 +469,7 @@ export declare const either: <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<
469
469
  */
470
470
  export declare const ensuring: {
471
471
  <R1, B>(finalizer: STM<B, never, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E, R1 | R>;
472
- <R, E, A, R1, B>(self: STM<A, E, R>, finalizer: STM<B, never, R1>): STM<A, E, R | R1>;
472
+ <A, E, R, R1, B>(self: STM<A, E, R>, finalizer: STM<B, never, R1>): STM<A, E, R | R1>;
473
473
  };
474
474
  /**
475
475
  * Returns an effect that ignores errors and runs repeatedly until it
@@ -550,9 +550,9 @@ export declare const filterNot: {
550
550
  * @category filtering
551
551
  */
552
552
  export declare const filterOrDie: {
553
- <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, defect: LazyArg<unknown>): <R, E>(self: STM<A, E, R>) => STM<B, E, R>;
554
- <A>(predicate: Predicate<NoInfer<A>>, defect: LazyArg<unknown>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>;
555
- <R, E, A, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, defect: LazyArg<unknown>): STM<B, E, R>;
553
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, defect: LazyArg<unknown>): <E, R>(self: STM<A, E, R>) => STM<B, E, R>;
554
+ <A>(predicate: Predicate<NoInfer<A>>, defect: LazyArg<unknown>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>;
555
+ <A, E, R, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, defect: LazyArg<unknown>): STM<B, E, R>;
556
556
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>, defect: LazyArg<unknown>): STM<A, E, R>;
557
557
  };
558
558
  /**
@@ -563,9 +563,9 @@ export declare const filterOrDie: {
563
563
  * @category filtering
564
564
  */
565
565
  export declare const filterOrDieMessage: {
566
- <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, message: string): <R, E>(self: STM<A, E, R>) => STM<B, E, R>;
567
- <A>(predicate: Predicate<NoInfer<A>>, message: string): <R, E>(self: STM<A, E, R>) => STM<A, E, R>;
568
- <R, E, A, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, message: string): STM<B, E, R>;
566
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>, message: string): <E, R>(self: STM<A, E, R>) => STM<B, E, R>;
567
+ <A>(predicate: Predicate<NoInfer<A>>, message: string): <E, R>(self: STM<A, E, R>) => STM<A, E, R>;
568
+ <A, E, R, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>, message: string): STM<B, E, R>;
569
569
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>, message: string): STM<A, E, R>;
570
570
  };
571
571
  /**
@@ -575,10 +575,10 @@ export declare const filterOrDieMessage: {
575
575
  * @category filtering
576
576
  */
577
577
  export declare const filterOrElse: {
578
- <A, B extends A, R2, E2, C>(refinement: Refinement<NoInfer<A>, B>, orElse: (a: NoInfer<A>) => STM<C, E2, R2>): <R, E>(self: STM<A, E, R>) => STM<B | C, E2 | E, R2 | R>;
579
- <A, R2, E2, B>(predicate: Predicate<NoInfer<A>>, orElse: (a: NoInfer<A>) => STM<B, E2, R2>): <R, E>(self: STM<A, E, R>) => STM<A | B, E2 | E, R2 | R>;
580
- <R, E, A, B extends A, R2, E2, C>(self: STM<A, E, R>, refinement: Refinement<A, B>, orElse: (a: A) => STM<C, E2, R2>): STM<B | C, E | E2, R | R2>;
581
- <R, E, A, R2, E2, B>(self: STM<A, E, R>, predicate: Predicate<A>, orElse: (a: A) => STM<B, E2, R2>): STM<A | B, E | E2, R | R2>;
578
+ <A, B extends A, C, E2, R2>(refinement: Refinement<NoInfer<A>, B>, orElse: (a: NoInfer<A>) => STM<C, E2, R2>): <E, R>(self: STM<A, E, R>) => STM<B | C, E2 | E, R2 | R>;
579
+ <A, B, E2, R2>(predicate: Predicate<NoInfer<A>>, orElse: (a: NoInfer<A>) => STM<B, E2, R2>): <E, R>(self: STM<A, E, R>) => STM<A | B, E2 | E, R2 | R>;
580
+ <A, E, R, B extends A, C, E2, R2>(self: STM<A, E, R>, refinement: Refinement<A, B>, orElse: (a: A) => STM<C, E2, R2>): STM<B | C, E | E2, R | R2>;
581
+ <A, E, R, B, E2, R2>(self: STM<A, E, R>, predicate: Predicate<A>, orElse: (a: A) => STM<B, E2, R2>): STM<A | B, E | E2, R | R2>;
582
582
  };
583
583
  /**
584
584
  * Fails with the specified error if the predicate fails.
@@ -587,10 +587,10 @@ export declare const filterOrElse: {
587
587
  * @category filtering
588
588
  */
589
589
  export declare const filterOrFail: {
590
- <A, B extends A, E2>(refinement: Refinement<NoInfer<A>, B>, orFailWith: (a: NoInfer<A>) => E2): <R, E>(self: STM<A, E, R>) => STM<B, E2 | E, R>;
591
- <A, E2>(predicate: Predicate<NoInfer<A>>, orFailWith: (a: NoInfer<A>) => E2): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R>;
592
- <R, E, A, B extends A, E2>(self: STM<A, E, R>, refinement: Refinement<A, B>, orFailWith: (a: A) => E2): STM<B, E | E2, R>;
593
- <R, E, A, E2>(self: STM<A, E, R>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM<A, E | E2, R>;
590
+ <A, B extends A, E2>(refinement: Refinement<NoInfer<A>, B>, orFailWith: (a: NoInfer<A>) => E2): <E, R>(self: STM<A, E, R>) => STM<B, E2 | E, R>;
591
+ <A, E2>(predicate: Predicate<NoInfer<A>>, orFailWith: (a: NoInfer<A>) => E2): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R>;
592
+ <A, E, R, B extends A, E2>(self: STM<A, E, R>, refinement: Refinement<A, B>, orFailWith: (a: A) => E2): STM<B, E | E2, R>;
593
+ <A, E, R, E2>(self: STM<A, E, R>, predicate: Predicate<A>, orFailWith: (a: A) => E2): STM<A, E | E2, R>;
594
594
  };
595
595
  /**
596
596
  * Feeds the value produced by this effect to the specified function, and then
@@ -600,8 +600,8 @@ export declare const filterOrFail: {
600
600
  * @category sequencing
601
601
  */
602
602
  export declare const flatMap: {
603
- <A, R1, E1, A2>(f: (a: A) => STM<A2, E1, R1>): <R, E>(self: STM<A, E, R>) => STM<A2, E1 | E, R1 | R>;
604
- <R, E, A, R1, E1, A2>(self: STM<A, E, R>, f: (a: A) => STM<A2, E1, R1>): STM<A2, E | E1, R | R1>;
603
+ <A, A2, E1, R1>(f: (a: A) => STM<A2, E1, R1>): <E, R>(self: STM<A, E, R>) => STM<A2, E1 | E, R1 | R>;
604
+ <A, E, R, A2, E1, R1>(self: STM<A, E, R>, f: (a: A) => STM<A2, E1, R1>): STM<A2, E | E1, R | R1>;
605
605
  };
606
606
  /**
607
607
  * Flattens out a nested `STM` effect.
@@ -609,7 +609,7 @@ export declare const flatMap: {
609
609
  * @since 2.0.0
610
610
  * @category sequencing
611
611
  */
612
- export declare const flatten: <R, E, R2, E2, A>(self: STM<STM<A, E2, R2>, E, R>) => STM<A, E | E2, R | R2>;
612
+ export declare const flatten: <A, E2, R2, E, R>(self: STM<STM<A, E2, R2>, E, R>) => STM<A, E2 | E, R2 | R>;
613
613
  /**
614
614
  * Flips the success and failure channels of this transactional effect. This
615
615
  * allows you to use all methods on the error channel, possibly before
@@ -627,8 +627,8 @@ export declare const flip: <A, E, R>(self: STM<A, E, R>) => STM<E, A, R>;
627
627
  * @category mutations
628
628
  */
629
629
  export declare const flipWith: {
630
- <R, A, E, R2, A2, E2>(f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): (self: STM<A, E, R>) => STM<A | A2, E | E2, R | R2>;
631
- <R, A, E, R2, A2, E2>(self: STM<A, E, R>, f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): STM<A | A2, E | E2, R | R2>;
630
+ <E, A, R, E2, A2, R2>(f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): (self: STM<A, E, R>) => STM<A | A2, E | E2, R | R2>;
631
+ <A, E, R, E2, A2, R2>(self: STM<A, E, R>, f: (stm: STM<E, A, R>) => STM<E2, A2, R2>): STM<A | A2, E | E2, R | R2>;
632
632
  };
633
633
  /**
634
634
  * Folds over the `STM` effect, handling both failure and success, but not
@@ -642,7 +642,7 @@ export declare const match: {
642
642
  readonly onFailure: (error: E) => A2;
643
643
  readonly onSuccess: (value: A) => A3;
644
644
  }): <R>(self: STM<A, E, R>) => STM<A2 | A3, never, R>;
645
- <R, E, A2, A, A3>(self: STM<A, E, R>, options: {
645
+ <A, E, R, A2, A3>(self: STM<A, E, R>, options: {
646
646
  readonly onFailure: (error: E) => A2;
647
647
  readonly onSuccess: (value: A) => A3;
648
648
  }): STM<A2 | A3, never, R>;
@@ -654,11 +654,11 @@ export declare const match: {
654
654
  * @category folding
655
655
  */
656
656
  export declare const matchSTM: {
657
- <E, R1, E1, A1, A, R2, E2, A2>(options: {
657
+ <E, A1, E1, R1, A, A2, E2, R2>(options: {
658
658
  readonly onFailure: (e: E) => STM<A1, E1, R1>;
659
659
  readonly onSuccess: (a: A) => STM<A2, E2, R2>;
660
660
  }): <R>(self: STM<A, E, R>) => STM<A1 | A2, E1 | E2, R1 | R2 | R>;
661
- <R, E, R1, E1, A1, A, R2, E2, A2>(self: STM<A, E, R>, options: {
661
+ <A, E, R, A1, E1, R1, A2, E2, R2>(self: STM<A, E, R>, options: {
662
662
  readonly onFailure: (e: E) => STM<A1, E1, R1>;
663
663
  readonly onSuccess: (a: A) => STM<A2, E2, R2>;
664
664
  }): STM<A1 | A2, E1 | E2, R | R1 | R2>;
@@ -671,16 +671,16 @@ export declare const matchSTM: {
671
671
  * @category traversing
672
672
  */
673
673
  export declare const forEach: {
674
- <A, R, E, A2>(f: (a: A) => STM<A2, E, R>, options?: {
674
+ <A, A2, E, R>(f: (a: A) => STM<A2, E, R>, options?: {
675
675
  readonly discard?: false | undefined;
676
- }): (elements: Iterable<A>) => STM<Array<A2>, E, R>;
677
- <A, R, E, A2>(f: (a: A) => STM<A2, E, R>, options: {
676
+ } | undefined): (elements: Iterable<A>) => STM<Array<A2>, E, R>;
677
+ <A, A2, E, R>(f: (a: A) => STM<A2, E, R>, options: {
678
678
  readonly discard: true;
679
679
  }): (elements: Iterable<A>) => STM<void, E, R>;
680
- <A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>, options?: {
680
+ <A, A2, E, R>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>, options?: {
681
681
  readonly discard?: false | undefined;
682
- }): STM<Array<A2>, E, R>;
683
- <A, R, E, A2>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>, options: {
682
+ } | undefined): STM<Array<A2>, E, R>;
683
+ <A, A2, E, R>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>, options: {
684
684
  readonly discard: true;
685
685
  }): STM<void, E, R>;
686
686
  };
@@ -690,7 +690,7 @@ export declare const forEach: {
690
690
  * @since 2.0.0
691
691
  * @category constructors
692
692
  */
693
- export declare const fromEither: <E, A>(either: Either.Either<E, A>) => STM<A, E>;
693
+ export declare const fromEither: <A, E>(either: Either.Either<A, E>) => STM<A, E>;
694
694
  /**
695
695
  * Lifts an `Option` into a `STM`.
696
696
  *
@@ -743,18 +743,23 @@ export declare const gen: <Eff extends STMGen<any, any, any>, AEff>(f: (resume:
743
743
  */
744
744
  export declare const head: <A, E, R>(self: STM<Iterable<A>, E, R>) => STM<A, Option.Option<E>, R>;
745
745
  declare const if_: {
746
- <R1, R2, E1, E2, A, A1>(options: {
746
+ <A, E1, R1, A2, E2, R2>(options: {
747
747
  readonly onTrue: STM<A, E1, R1>;
748
- readonly onFalse: STM<A1, E2, R2>;
749
- }): <R = never, E = never>(self: boolean | STM<boolean, E, R>) => STM<A | A1, E1 | E2 | E, R1 | R2 | R>;
750
- <R, E, R1, R2, E1, E2, A, A1>(self: boolean, options: {
748
+ readonly onFalse: STM<A2, E2, R2>; /**
749
+ * Flattens out a nested `STM` effect.
750
+ *
751
+ * @since 2.0.0
752
+ * @category sequencing
753
+ */
754
+ }): <E = never, R = never>(self: boolean | STM<boolean, E, R>) => STM<A | A2, E1 | E2 | E, R1 | R2 | R>;
755
+ <A, E1, R1, A2, E2, R2, E = never, R = never>(self: boolean, options: {
751
756
  readonly onTrue: STM<A, E1, R1>;
752
- readonly onFalse: STM<A1, E2, R2>;
753
- }): STM<A | A1, E | E1 | E2, R | R1 | R2>;
754
- <R, E, R1, R2, E1, E2, A, A1>(self: STM<boolean, E, R>, options: {
757
+ readonly onFalse: STM<A2, E2, R2>;
758
+ }): STM<A | A2, E1 | E2 | E, R1 | R2 | R>;
759
+ <E, R, A, E1, R1, A2, E2, R2>(self: STM<boolean, E, R>, options: {
755
760
  readonly onTrue: STM<A, E1, R1>;
756
- readonly onFalse: STM<A1, E2, R2>;
757
- }): STM<A | A1, E | E1 | E2, R | R1 | R2>;
761
+ readonly onFalse: STM<A2, E2, R2>;
762
+ }): STM<A | A2, E | E1 | E2, R | R1 | R2>;
758
763
  };
759
764
  export {
760
765
  /**
@@ -816,7 +821,7 @@ export declare const isSuccess: <A, E, R>(self: STM<A, E, R>) => STM<boolean, ne
816
821
  * @since 2.0.0
817
822
  * @category constructors
818
823
  */
819
- export declare const iterate: <R, E, Z>(initial: Z, options: {
824
+ export declare const iterate: <Z, E, R>(initial: Z, options: {
820
825
  readonly while: Predicate<Z>;
821
826
  readonly body: (z: Z) => STM<Z, E, R>;
822
827
  }) => STM<Z, E, R>;
@@ -840,14 +845,14 @@ export declare const iterate: <R, E, Z>(initial: Z, options: {
840
845
  * @category constructors
841
846
  */
842
847
  export declare const loop: {
843
- <Z, R, E, A>(initial: Z, options: {
844
- readonly while: Predicate<Z>;
848
+ <Z, A, E, R>(initial: Z, options: {
849
+ readonly while: (z: Z) => boolean;
845
850
  readonly step: (z: Z) => Z;
846
851
  readonly body: (z: Z) => STM<A, E, R>;
847
852
  readonly discard?: false | undefined;
848
853
  }): STM<Array<A>, E, R>;
849
- <Z, R, E, A>(initial: Z, options: {
850
- readonly while: Predicate<Z>;
854
+ <Z, A, E, R>(initial: Z, options: {
855
+ readonly while: (z: Z) => boolean;
851
856
  readonly step: (z: Z) => Z;
852
857
  readonly body: (z: Z) => STM<A, E, R>;
853
858
  readonly discard: true;
@@ -860,8 +865,8 @@ export declare const loop: {
860
865
  * @category mapping
861
866
  */
862
867
  export declare const map: {
863
- <A, B>(f: (a: A) => B): <R, E>(self: STM<A, E, R>) => STM<B, E, R>;
864
- <R, E, A, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, E, R>;
868
+ <A, B>(f: (a: A) => B): <E, R>(self: STM<A, E, R>) => STM<B, E, R>;
869
+ <A, E, R, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, E, R>;
865
870
  };
866
871
  /**
867
872
  * Maps the value produced by the effect with the specified function that may
@@ -872,8 +877,8 @@ export declare const map: {
872
877
  * @category mapping
873
878
  */
874
879
  export declare const mapAttempt: {
875
- <A, B>(f: (a: A) => B): <R, E>(self: STM<A, E, R>) => STM<B, unknown, R>;
876
- <R, E, A, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, unknown, R>;
880
+ <A, B>(f: (a: A) => B): <E, R>(self: STM<A, E, R>) => STM<B, unknown, R>;
881
+ <A, E, R, B>(self: STM<A, E, R>, f: (a: A) => B): STM<B, unknown, R>;
877
882
  };
878
883
  /**
879
884
  * Returns an `STM` effect whose failure and success channels have been mapped
@@ -887,7 +892,7 @@ export declare const mapBoth: {
887
892
  readonly onFailure: (error: E) => E2;
888
893
  readonly onSuccess: (value: A) => A2;
889
894
  }): <R>(self: STM<A, E, R>) => STM<A2, E2, R>;
890
- <R, E, E2, A, A2>(self: STM<A, E, R>, options: {
895
+ <A, E, R, E2, A2>(self: STM<A, E, R>, options: {
891
896
  readonly onFailure: (error: E) => E2;
892
897
  readonly onSuccess: (value: A) => A2;
893
898
  }): STM<A2, E2, R>;
@@ -899,8 +904,8 @@ export declare const mapBoth: {
899
904
  * @category mapping
900
905
  */
901
906
  export declare const mapError: {
902
- <E, E2>(f: (error: E) => E2): <R, A>(self: STM<A, E, R>) => STM<A, E2, R>;
903
- <R, A, E, E2>(self: STM<A, E, R>, f: (error: E) => E2): STM<A, E2, R>;
907
+ <E, E2>(f: (error: E) => E2): <A, R>(self: STM<A, E, R>) => STM<A, E2, R>;
908
+ <A, E, R, E2>(self: STM<A, E, R>, f: (error: E) => E2): STM<A, E2, R>;
904
909
  };
905
910
  /**
906
911
  * Returns a new effect where the error channel has been merged into the
@@ -917,8 +922,8 @@ export declare const merge: <A, E, R>(self: STM<A, E, R>) => STM<E | A, never, R
917
922
  * @category constructors
918
923
  */
919
924
  export declare const mergeAll: {
920
- <A2, A>(zero: A2, f: (a2: A2, a: A) => A2): <R, E>(iterable: Iterable<STM<A, E, R>>) => STM<A2, E, R>;
921
- <R, E, A2, A>(iterable: Iterable<STM<A, E, R>>, zero: A2, f: (a2: A2, a: A) => A2): STM<A2, E, R>;
925
+ <A2, A>(zero: A2, f: (a2: A2, a: A) => A2): <E, R>(iterable: Iterable<STM<A, E, R>>) => STM<A2, E, R>;
926
+ <A, E, R, A2>(iterable: Iterable<STM<A, E, R>>, zero: A2, f: (a2: A2, a: A) => A2): STM<A2, E, R>;
922
927
  };
923
928
  /**
924
929
  * Returns a new effect where boolean value of this effect is negated.
@@ -926,7 +931,7 @@ export declare const mergeAll: {
926
931
  * @since 2.0.0
927
932
  * @category mutations
928
933
  */
929
- export declare const negate: <R, E>(self: STM<boolean, E, R>) => STM<boolean, E, R>;
934
+ export declare const negate: <E, R>(self: STM<boolean, E, R>) => STM<boolean, E, R>;
930
935
  /**
931
936
  * Requires the option produced by this value to be `None`.
932
937
  *
@@ -957,8 +962,8 @@ export declare const orDie: <A, E, R>(self: STM<A, E, R>) => STM<A, never, R>;
957
962
  * @category error handling
958
963
  */
959
964
  export declare const orDieWith: {
960
- <E>(f: (error: E) => unknown): <R, A>(self: STM<A, E, R>) => STM<A, never, R>;
961
- <R, A, E>(self: STM<A, E, R>, f: (error: E) => unknown): STM<A, never, R>;
965
+ <E>(f: (error: E) => unknown): <A, R>(self: STM<A, E, R>) => STM<A, never, R>;
966
+ <A, E, R>(self: STM<A, E, R>, f: (error: E) => unknown): STM<A, never, R>;
962
967
  };
963
968
  /**
964
969
  * Tries this effect first, and if it fails or retries, tries the other
@@ -968,8 +973,8 @@ export declare const orDieWith: {
968
973
  * @category error handling
969
974
  */
970
975
  export declare const orElse: {
971
- <R2, E2, A2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<A2 | A, E2, R2 | R>;
972
- <R, E, A, R2, E2, A2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<A | A2, E2, R | R2>;
976
+ <A2, E2, R2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<A2 | A, E2, R2 | R>;
977
+ <A, E, R, A2, E2, R2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<A | A2, E2, R | R2>;
973
978
  };
974
979
  /**
975
980
  * Returns a transactional effect that will produce the value of this effect
@@ -980,8 +985,8 @@ export declare const orElse: {
980
985
  * @category error handling
981
986
  */
982
987
  export declare const orElseEither: {
983
- <R2, E2, A2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<A, A2>, E2, R2 | R>;
984
- <R, E, A, R2, E2, A2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<Either.Either<A, A2>, E2, R | R2>;
988
+ <A2, E2, R2>(that: LazyArg<STM<A2, E2, R2>>): <A, E, R>(self: STM<A, E, R>) => STM<Either.Either<A2, A>, E2, R2 | R>;
989
+ <A, E, R, A2, E2, R2>(self: STM<A, E, R>, that: LazyArg<STM<A2, E2, R2>>): STM<Either.Either<A2, A>, E2, R | R2>;
985
990
  };
986
991
  /**
987
992
  * Tries this effect first, and if it fails or retries, fails with the
@@ -992,7 +997,7 @@ export declare const orElseEither: {
992
997
  */
993
998
  export declare const orElseFail: {
994
999
  <E2>(error: LazyArg<E2>): <A, E, R>(self: STM<A, E, R>) => STM<A, E2, R>;
995
- <R, E, A, E2>(self: STM<A, E, R>, error: LazyArg<E2>): STM<A, E2, R>;
1000
+ <A, E, R, E2>(self: STM<A, E, R>, error: LazyArg<E2>): STM<A, E2, R>;
996
1001
  };
997
1002
  /**
998
1003
  * Returns an effect that will produce the value of this effect, unless it
@@ -1003,8 +1008,8 @@ export declare const orElseFail: {
1003
1008
  * @category error handling
1004
1009
  */
1005
1010
  export declare const orElseOptional: {
1006
- <R2, E2, A2>(that: LazyArg<STM<A2, Option.Option<E2>, R2>>): <A, E, R>(self: STM<A, Option.Option<E>, R>) => STM<A2 | A, Option.Option<E2 | E>, R2 | R>;
1007
- <R, E, A, R2, E2, A2>(self: STM<A, Option.Option<E>, R>, that: LazyArg<STM<A2, Option.Option<E2>, R2>>): STM<A | A2, Option.Option<E | E2>, R | R2>;
1011
+ <A2, E2, R2>(that: LazyArg<STM<A2, Option.Option<E2>, R2>>): <A, E, R>(self: STM<A, Option.Option<E>, R>) => STM<A2 | A, Option.Option<E2 | E>, R2 | R>;
1012
+ <A, E, R, A2, E2, R2>(self: STM<A, Option.Option<E>, R>, that: LazyArg<STM<A2, Option.Option<E2>, R2>>): STM<A | A2, Option.Option<E | E2>, R | R2>;
1008
1013
  };
1009
1014
  /**
1010
1015
  * Tries this effect first, and if it fails or retries, succeeds with the
@@ -1015,7 +1020,7 @@ export declare const orElseOptional: {
1015
1020
  */
1016
1021
  export declare const orElseSucceed: {
1017
1022
  <A2>(value: LazyArg<A2>): <A, E, R>(self: STM<A, E, R>) => STM<A2 | A, never, R>;
1018
- <R, E, A, A2>(self: STM<A, E, R>, value: LazyArg<A2>): STM<A | A2, never, R>;
1023
+ <A, E, R, A2>(self: STM<A, E, R>, value: LazyArg<A2>): STM<A | A2, never, R>;
1019
1024
  };
1020
1025
  /**
1021
1026
  * Tries this effect first, and if it enters retry, then it tries the other
@@ -1025,8 +1030,8 @@ export declare const orElseSucceed: {
1025
1030
  * @category error handling
1026
1031
  */
1027
1032
  export declare const orTry: {
1028
- <R1, E1, A1>(that: LazyArg<STM<A1, E1, R1>>): <A, E, R>(self: STM<A, E, R>) => STM<A1 | A, E1 | E, R1 | R>;
1029
- <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: LazyArg<STM<A1, E1, R1>>): STM<A | A1, E | E1, R | R1>;
1033
+ <A1, E1, R1>(that: LazyArg<STM<A1, E1, R1>>): <A, E, R>(self: STM<A, E, R>) => STM<A1 | A, E1 | E, R1 | R>;
1034
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: LazyArg<STM<A1, E1, R1>>): STM<A | A1, E | E1, R | R1>;
1030
1035
  };
1031
1036
  /**
1032
1037
  * Feeds elements of type `A` to a function `f` that returns an effect.
@@ -1036,8 +1041,8 @@ export declare const orTry: {
1036
1041
  * @category traversing
1037
1042
  */
1038
1043
  export declare const partition: {
1039
- <R, E, A, A2>(f: (a: A) => STM<A2, E, R>): (elements: Iterable<A>) => STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>;
1040
- <R, E, A, A2>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>): STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>;
1044
+ <A, A2, E, R>(f: (a: A) => STM<A2, E, R>): (elements: Iterable<A>) => STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>;
1045
+ <A, A2, E, R>(elements: Iterable<A>, f: (a: A) => STM<A2, E, R>): STM<[excluded: Array<E>, satisfying: Array<A2>], never, R>;
1041
1046
  };
1042
1047
  /**
1043
1048
  * Provides the transaction its required environment, which eliminates its
@@ -1070,7 +1075,7 @@ export declare const provideSomeContext: {
1070
1075
  */
1071
1076
  export declare const provideService: {
1072
1077
  <T extends Context.Tag<any, any>>(tag: T, resource: Context.Tag.Service<T>): <A, E, R>(self: STM<A, E, R>) => STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>;
1073
- <R, E, A, T extends Context.Tag<any, any>>(self: STM<A, E, R>, tag: T, resource: Context.Tag.Service<T>): STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>;
1078
+ <A, E, R, T extends Context.Tag<any, any>>(self: STM<A, E, R>, tag: T, resource: Context.Tag.Service<T>): STM<A, E, Exclude<R, Context.Tag.Identifier<T>>>;
1074
1079
  };
1075
1080
  /**
1076
1081
  * Provides the effect with the single service it requires. If the transactional
@@ -1080,8 +1085,8 @@ export declare const provideService: {
1080
1085
  * @category context
1081
1086
  */
1082
1087
  export declare const provideServiceSTM: {
1083
- <T extends Context.Tag<any, any>, R1, E1>(tag: T, stm: STM<Context.Tag.Service<T>, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>>;
1084
- <R, E, A, T extends Context.Tag<any, any>, R1, E1>(self: STM<A, E, R>, tag: T, stm: STM<Context.Tag.Service<T>, E1, R1>): STM<A, E | E1, R1 | Exclude<R, Context.Tag.Identifier<T>>>;
1088
+ <T extends Context.Tag<any, any>, E1, R1>(tag: T, stm: STM<Context.Tag.Service<T>, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | Exclude<R, Context.Tag.Identifier<T>>>;
1089
+ <A, E, R, T extends Context.Tag<any, any>, E1, R1>(self: STM<A, E, R>, tag: T, stm: STM<Context.Tag.Service<T>, E1, R1>): STM<A, E | E1, R1 | Exclude<R, Context.Tag.Identifier<T>>>;
1085
1090
  };
1086
1091
  /**
1087
1092
  * Folds an `Iterable<A>` using an effectual function f, working sequentially
@@ -1091,8 +1096,8 @@ export declare const provideServiceSTM: {
1091
1096
  * @category constructors
1092
1097
  */
1093
1098
  export declare const reduce: {
1094
- <S, A, R, E>(zero: S, f: (s: S, a: A) => STM<S, E, R>): (iterable: Iterable<A>) => STM<S, E, R>;
1095
- <S, A, R, E>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM<S, E, R>): STM<S, E, R>;
1099
+ <S, A, E, R>(zero: S, f: (s: S, a: A) => STM<S, E, R>): (iterable: Iterable<A>) => STM<S, E, R>;
1100
+ <S, A, E, R>(iterable: Iterable<A>, zero: S, f: (s: S, a: A) => STM<S, E, R>): STM<S, E, R>;
1096
1101
  };
1097
1102
  /**
1098
1103
  * Reduces an `Iterable<STM>` to a single `STM`, working sequentially.
@@ -1101,8 +1106,8 @@ export declare const reduce: {
1101
1106
  * @category constructors
1102
1107
  */
1103
1108
  export declare const reduceAll: {
1104
- <R2, E2, A>(initial: STM<A, E2, R2>, f: (x: A, y: A) => A): <R, E>(iterable: Iterable<STM<A, E, R>>) => STM<A, E2 | E, R2 | R>;
1105
- <R, E, R2, E2, A>(iterable: Iterable<STM<A, E, R>>, initial: STM<A, E2, R2>, f: (x: A, y: A) => A): STM<A, E | E2, R | R2>;
1109
+ <A, E2, R2>(initial: STM<A, E2, R2>, f: (x: A, y: A) => A): <E, R>(iterable: Iterable<STM<A, E, R>>) => STM<A, E2 | E, R2 | R>;
1110
+ <A, E, R, E2, R2>(iterable: Iterable<STM<A, E, R>>, initial: STM<A, E2, R2>, f: (x: A, y: A) => A): STM<A, E | E2, R | R2>;
1106
1111
  };
1107
1112
  /**
1108
1113
  * Folds an `Iterable<A>` using an effectual function f, working sequentially
@@ -1122,8 +1127,8 @@ export declare const reduceRight: {
1122
1127
  * @category mutations
1123
1128
  */
1124
1129
  export declare const refineOrDie: {
1125
- <E, E2>(pf: (error: E) => Option.Option<E2>): <R, A>(self: STM<A, E, R>) => STM<A, E2, R>;
1126
- <R, A, E, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>): STM<A, E2, R>;
1130
+ <E, E2>(pf: (error: E) => Option.Option<E2>): <A, R>(self: STM<A, E, R>) => STM<A, E2, R>;
1131
+ <A, E, R, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>): STM<A, E2, R>;
1127
1132
  };
1128
1133
  /**
1129
1134
  * Keeps some of the errors, and terminates the fiber with the rest, using the
@@ -1133,8 +1138,8 @@ export declare const refineOrDie: {
1133
1138
  * @category mutations
1134
1139
  */
1135
1140
  export declare const refineOrDieWith: {
1136
- <E, E2>(pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): <R, A>(self: STM<A, E, R>) => STM<A, E2, R>;
1137
- <R, A, E, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): STM<A, E2, R>;
1141
+ <E, E2>(pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): <A, R>(self: STM<A, E, R>) => STM<A, E2, R>;
1142
+ <A, E, R, E2>(self: STM<A, E, R>, pf: (error: E) => Option.Option<E2>, f: (error: E) => unknown): STM<A, E2, R>;
1138
1143
  };
1139
1144
  /**
1140
1145
  * Fail with the returned value if the `PartialFunction` matches, otherwise
@@ -1144,8 +1149,8 @@ export declare const refineOrDieWith: {
1144
1149
  * @category mutations
1145
1150
  */
1146
1151
  export declare const reject: {
1147
- <A, E2>(pf: (a: A) => Option.Option<E2>): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R>;
1148
- <R, E, A, E2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<E2>): STM<A, E | E2, R>;
1152
+ <A, E2>(pf: (a: A) => Option.Option<E2>): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R>;
1153
+ <A, E, R, E2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<E2>): STM<A, E | E2, R>;
1149
1154
  };
1150
1155
  /**
1151
1156
  * Continue with the returned computation if the specified partial function
@@ -1156,8 +1161,8 @@ export declare const reject: {
1156
1161
  * @category mutations
1157
1162
  */
1158
1163
  export declare const rejectSTM: {
1159
- <A, R2, E2>(pf: (a: A) => Option.Option<STM<E2, E2, R2>>): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>;
1160
- <R, E, A, R2, E2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<E2, E2, R2>>): STM<A, E | E2, R | R2>;
1164
+ <A, E2, R2>(pf: (a: A) => Option.Option<STM<E2, E2, R2>>): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>;
1165
+ <A, E, R, E2, R2>(self: STM<A, E, R>, pf: (a: A) => Option.Option<STM<E2, E2, R2>>): STM<A, E | E2, R | R2>;
1161
1166
  };
1162
1167
  /**
1163
1168
  * Repeats this `STM` effect until its result satisfies the specified
@@ -1175,7 +1180,7 @@ export declare const rejectSTM: {
1175
1180
  * @category mutations
1176
1181
  */
1177
1182
  export declare const repeatUntil: {
1178
- <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>;
1183
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>;
1179
1184
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>;
1180
1185
  };
1181
1186
  /**
@@ -1195,7 +1200,7 @@ export declare const repeatUntil: {
1195
1200
  * @category mutations
1196
1201
  */
1197
1202
  export declare const repeatWhile: {
1198
- <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>;
1203
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>;
1199
1204
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>;
1200
1205
  };
1201
1206
  /**
@@ -1247,9 +1252,9 @@ export declare const retry: STM<never>;
1247
1252
  * @category mutations
1248
1253
  */
1249
1254
  export declare const retryUntil: {
1250
- <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <R, E>(self: STM<A, E, R>) => STM<B, E, R>;
1251
- <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>;
1252
- <R, E, A, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>): STM<B, E, R>;
1255
+ <A, B extends A>(refinement: Refinement<NoInfer<A>, B>): <E, R>(self: STM<A, E, R>) => STM<B, E, R>;
1256
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>;
1257
+ <A, E, R, B extends A>(self: STM<A, E, R>, refinement: Refinement<A, B>): STM<B, E, R>;
1253
1258
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>;
1254
1259
  };
1255
1260
  /**
@@ -1260,7 +1265,7 @@ export declare const retryUntil: {
1260
1265
  * @category mutations
1261
1266
  */
1262
1267
  export declare const retryWhile: {
1263
- <A>(predicate: Predicate<A>): <R, E>(self: STM<A, E, R>) => STM<A, E, R>;
1268
+ <A>(predicate: Predicate<A>): <E, R>(self: STM<A, E, R>) => STM<A, E, R>;
1264
1269
  <A, E, R>(self: STM<A, E, R>, predicate: Predicate<A>): STM<A, E, R>;
1265
1270
  };
1266
1271
  /**
@@ -1300,8 +1305,8 @@ export declare const succeedSome: <A>(value: A) => STM<Option.Option<A>>;
1300
1305
  * @category mutations
1301
1306
  */
1302
1307
  export declare const summarized: {
1303
- <R2, E2, A2, A3>(summary: STM<A2, E2, R2>, f: (before: A2, after: A2) => A3): <A, E, R>(self: STM<A, E, R>) => STM<[A3, A], E2 | E, R2 | R>;
1304
- <R, E, A, R2, E2, A2, A3>(self: STM<A, E, R>, summary: STM<A2, E2, R2>, f: (before: A2, after: A2) => A3): STM<[A3, A], E | E2, R | R2>;
1308
+ <A2, E2, R2, A3>(summary: STM<A2, E2, R2>, f: (before: A2, after: A2) => A3): <A, E, R>(self: STM<A, E, R>) => STM<[A3, A], E2 | E, R2 | R>;
1309
+ <A, E, R, A2, E2, R2, A3>(self: STM<A, E, R>, summary: STM<A2, E2, R2>, f: (before: A2, after: A2) => A3): STM<[A3, A], E | E2, R | R2>;
1305
1310
  };
1306
1311
  /**
1307
1312
  * Suspends creation of the specified transaction lazily.
@@ -1325,8 +1330,8 @@ export declare const sync: <A>(evaluate: () => A) => STM<A>;
1325
1330
  * @category sequencing
1326
1331
  */
1327
1332
  export declare const tap: {
1328
- <A, R2, E2, _>(f: (a: A) => STM<_, E2, R2>): <R, E>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>;
1329
- <R, E, A, R2, E2, _>(self: STM<A, E, R>, f: (a: A) => STM<_, E2, R2>): STM<A, E | E2, R | R2>;
1333
+ <A, X, E2, R2>(f: (a: A) => STM<X, E2, R2>): <E, R>(self: STM<A, E, R>) => STM<A, E2 | E, R2 | R>;
1334
+ <A, E, R, X, E2, R2>(self: STM<A, E, R>, f: (a: A) => STM<X, E2, R2>): STM<A, E | E2, R | R2>;
1330
1335
  };
1331
1336
  /**
1332
1337
  * "Peeks" at both sides of an transactional effect.
@@ -1335,11 +1340,11 @@ export declare const tap: {
1335
1340
  * @category sequencing
1336
1341
  */
1337
1342
  export declare const tapBoth: {
1338
- <E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(options: {
1343
+ <XE extends E, A2, E2, R2, XA extends A, A3, E3, R3, A, E>(options: {
1339
1344
  readonly onFailure: (error: XE) => STM<A2, E2, R2>;
1340
1345
  readonly onSuccess: (value: XA) => STM<A3, E3, R3>;
1341
1346
  }): <R>(self: STM<A, E, R>) => STM<A, E | E2 | E3, R2 | R3 | R>;
1342
- <R, E, XE extends E, R2, E2, A2, A, XA extends A, R3, E3, A3>(self: STM<A, E, R>, options: {
1347
+ <A, E, R, XE extends E, A2, E2, R2, XA extends A, A3, E3, R3>(self: STM<A, E, R>, options: {
1343
1348
  readonly onFailure: (error: XE) => STM<A2, E2, R2>;
1344
1349
  readonly onSuccess: (value: XA) => STM<A3, E3, R3>;
1345
1350
  }): STM<A, E | E2 | E3, R | R2 | R3>;
@@ -1351,8 +1356,8 @@ export declare const tapBoth: {
1351
1356
  * @category sequencing
1352
1357
  */
1353
1358
  export declare const tapError: {
1354
- <E, R2, E2, _>(f: (error: NoInfer<E>) => STM<_, E2, R2>): <R, A>(self: STM<A, E, R>) => STM<A, E | E2, R2 | R>;
1355
- <R, A, E, R2, E2, _>(self: STM<A, E, R>, f: (error: E) => STM<_, E2, R2>): STM<A, E | E2, R | R2>;
1359
+ <E, X, E2, R2>(f: (error: NoInfer<E>) => STM<X, E2, R2>): <A, R>(self: STM<A, E, R>) => STM<A, E | E2, R2 | R>;
1360
+ <A, E, R, X, E2, R2>(self: STM<A, E, R>, f: (error: E) => STM<X, E2, R2>): STM<A, E | E2, R | R2>;
1356
1361
  };
1357
1362
  declare const try_: {
1358
1363
  <A, E>(options: {
@@ -1387,8 +1392,8 @@ export declare const unless: {
1387
1392
  * @category mutations
1388
1393
  */
1389
1394
  export declare const unlessSTM: {
1390
- <R2, E2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>;
1391
- <R, E, A, R2, E2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>;
1395
+ <E2, R2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>;
1396
+ <A, E, R, E2, R2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>;
1392
1397
  };
1393
1398
  /**
1394
1399
  * Converts an option on errors into an option on values.
@@ -1415,8 +1420,8 @@ export declare const unit: STM<void>;
1415
1420
  * @category mutations
1416
1421
  */
1417
1422
  export declare const validateAll: {
1418
- <R, E, A, B>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<Array<B>, [E, ...Array<E>], R>;
1419
- <R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<Array<B>, [E, ...Array<E>], R>;
1423
+ <A, B, E, R>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<Array<B>, [E, ...Array<E>], R>;
1424
+ <A, B, E, R>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<Array<B>, [E, ...Array<E>], R>;
1420
1425
  };
1421
1426
  /**
1422
1427
  * Feeds elements of type `A` to `f` until it succeeds. Returns first success
@@ -1426,8 +1431,8 @@ export declare const validateAll: {
1426
1431
  * @category mutations
1427
1432
  */
1428
1433
  export declare const validateFirst: {
1429
- <R, E, A, B>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<B, Array<E>, R>;
1430
- <R, E, A, B>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<B, Array<E>, R>;
1434
+ <A, B, E, R>(f: (a: A) => STM<B, E, R>): (elements: Iterable<A>) => STM<B, Array<E>, R>;
1435
+ <A, B, E, R>(elements: Iterable<A>, f: (a: A) => STM<B, E, R>): STM<B, Array<E>, R>;
1431
1436
  };
1432
1437
  /**
1433
1438
  * The moral equivalent of `if (p) exp`.
@@ -1446,8 +1451,8 @@ export declare const when: {
1446
1451
  * @category mutations
1447
1452
  */
1448
1453
  export declare const whenSTM: {
1449
- <R2, E2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>;
1450
- <R, E, A, R2, E2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>;
1454
+ <E2, R2>(predicate: STM<boolean, E2, R2>): <A, E, R>(self: STM<A, E, R>) => STM<Option.Option<A>, E2 | E, R2 | R>;
1455
+ <A, E, R, E2, R2>(self: STM<A, E, R>, predicate: STM<boolean, E2, R2>): STM<Option.Option<A>, E | E2, R | R2>;
1451
1456
  };
1452
1457
  /**
1453
1458
  * Sequentially zips this value with the specified one.
@@ -1456,8 +1461,8 @@ export declare const whenSTM: {
1456
1461
  * @category zipping
1457
1462
  */
1458
1463
  export declare const zip: {
1459
- <R1, E1, A1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<[A, A1], E1 | E, R1 | R>;
1460
- <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<[A, A1], E | E1, R | R1>;
1464
+ <A1, E1, R1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<[A, A1], E1 | E, R1 | R>;
1465
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<[A, A1], E | E1, R | R1>;
1461
1466
  };
1462
1467
  /**
1463
1468
  * Sequentially zips this value with the specified one, discarding the second
@@ -1467,8 +1472,8 @@ export declare const zip: {
1467
1472
  * @category zipping
1468
1473
  */
1469
1474
  export declare const zipLeft: {
1470
- <R1, E1, A1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | R>;
1471
- <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A, E | E1, R | R1>;
1475
+ <A1, E1, R1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A, E1 | E, R1 | R>;
1476
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A, E | E1, R | R1>;
1472
1477
  };
1473
1478
  /**
1474
1479
  * Sequentially zips this value with the specified one, discarding the first
@@ -1478,8 +1483,8 @@ export declare const zipLeft: {
1478
1483
  * @category zipping
1479
1484
  */
1480
1485
  export declare const zipRight: {
1481
- <R1, E1, A1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A1, E1 | E, R1 | R>;
1482
- <R, E, A, R1, E1, A1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A1, E | E1, R | R1>;
1486
+ <A1, E1, R1>(that: STM<A1, E1, R1>): <A, E, R>(self: STM<A, E, R>) => STM<A1, E1 | E, R1 | R>;
1487
+ <A, E, R, A1, E1, R1>(self: STM<A, E, R>, that: STM<A1, E1, R1>): STM<A1, E | E1, R | R1>;
1483
1488
  };
1484
1489
  /**
1485
1490
  * Sequentially zips this value with the specified one, combining the values
@@ -1489,8 +1494,8 @@ export declare const zipRight: {
1489
1494
  * @category zipping
1490
1495
  */
1491
1496
  export declare const zipWith: {
1492
- <R1, E1, A1, A, A2>(that: STM<A1, E1, R1>, f: (a: A, b: A1) => A2): <R, E>(self: STM<A, E, R>) => STM<A2, E1 | E, R1 | R>;
1493
- <R, E, R1, E1, A1, A, A2>(self: STM<A, E, R>, that: STM<A1, E1, R1>, f: (a: A, b: A1) => A2): STM<A2, E | E1, R | R1>;
1497
+ <A1, E1, R1, A, A2>(that: STM<A1, E1, R1>, f: (a: A, b: A1) => A2): <E, R>(self: STM<A, E, R>) => STM<A2, E1 | E, R1 | R>;
1498
+ <A, E, R, A1, E1, R1, A2>(self: STM<A, E, R>, that: STM<A1, E1, R1>, f: (a: A, b: A1) => A2): STM<A2, E | E1, R | R1>;
1494
1499
  };
1495
1500
  /**
1496
1501
  * This function takes an iterable of `STM` values and returns a new
@@ -1522,18 +1527,18 @@ export declare const Do: STM<{}>;
1522
1527
  * @since 2.0.0
1523
1528
  */
1524
1529
  export declare const bind: {
1525
- <N extends string, K, R2, E2, A>(tag: Exclude<N, keyof K>, f: (_: K) => STM<A, E2, R2>): <R, E>(self: STM<K, E, R>) => STM<Effect.MergeRecord<K, {
1530
+ <N extends string, K, A, E2, R2>(tag: Exclude<N, keyof K>, f: (_: K) => STM<A, E2, R2>): <E, R>(self: STM<K, E, R>) => STM<MergeRecord<K, {
1526
1531
  [k in N]: A;
1527
1532
  }>, E2 | E, R2 | R>;
1528
- <R, E, N extends string, K, R2, E2, A>(self: STM<K, E, R>, tag: Exclude<N, keyof K>, f: (_: K) => STM<A, E2, R2>): STM<Effect.MergeRecord<K, {
1533
+ <K, E, R, N extends string, A, E2, R2>(self: STM<K, E, R>, tag: Exclude<N, keyof K>, f: (_: K) => STM<A, E2, R2>): STM<MergeRecord<K, {
1529
1534
  [k in N]: A;
1530
1535
  }>, E | E2, R | R2>;
1531
1536
  };
1532
1537
  declare const let_: {
1533
- <N extends string, K, A>(tag: Exclude<N, keyof K>, f: (_: K) => A): <R, E>(self: STM<K, E, R>) => STM<Effect.MergeRecord<K, {
1538
+ <N extends string, K, A>(tag: Exclude<N, keyof K>, f: (_: K) => A): <E, R>(self: STM<K, E, R>) => STM<MergeRecord<K, {
1534
1539
  [k in N]: A;
1535
1540
  }>, E, R>;
1536
- <R, E, K, N extends string, A>(self: STM<K, E, R>, tag: Exclude<N, keyof K>, f: (_: K) => A): STM<Effect.MergeRecord<K, {
1541
+ <K, E, R, N extends string, A>(self: STM<K, E, R>, tag: Exclude<N, keyof K>, f: (_: K) => A): STM<MergeRecord<K, {
1537
1542
  [k in N]: A;
1538
1543
  }>, E, R>;
1539
1544
  };
@@ -1549,6 +1554,6 @@ let_ as let };
1549
1554
  */
1550
1555
  export declare const bindTo: {
1551
1556
  <N extends string>(tag: N): <A, E, R>(self: STM<A, E, R>) => STM<Record<N, A>, E, R>;
1552
- <R, E, A, N extends string>(self: STM<A, E, R>, tag: N): STM<Record<N, A>, E, R>;
1557
+ <A, E, R, N extends string>(self: STM<A, E, R>, tag: N): STM<Record<N, A>, E, R>;
1553
1558
  };
1554
1559
  //# sourceMappingURL=STM.d.ts.map