@prb/effect-evm 1.0.0-beta.1 → 1.0.0-beta.10

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 (390) hide show
  1. package/DOCS.md +13 -0
  2. package/README.md +4 -0
  3. package/dist/abi/erc165.js.map +1 -1
  4. package/dist/abi/erc20-no-output.js.map +1 -1
  5. package/dist/abi/erc20.js.map +1 -1
  6. package/dist/abi/erc721.js.map +1 -1
  7. package/dist/abi/index.js.map +1 -1
  8. package/dist/balance/index.js.map +1 -1
  9. package/dist/balance/service.js.map +1 -1
  10. package/dist/balance/service.test.integration.d.ts +2 -0
  11. package/dist/balance/service.test.integration.d.ts.map +1 -0
  12. package/dist/balance/service.test.integration.js +289 -0
  13. package/dist/balance/service.test.integration.js.map +1 -0
  14. package/dist/balance/utils.js.map +1 -1
  15. package/dist/block/errors.js.map +1 -1
  16. package/dist/block/index.js.map +1 -1
  17. package/dist/block/service.js.map +1 -1
  18. package/dist/block/service.test.integration.d.ts +2 -0
  19. package/dist/block/service.test.integration.d.ts.map +1 -0
  20. package/dist/block/service.test.integration.js +190 -0
  21. package/dist/block/service.test.integration.js.map +1 -0
  22. package/dist/constants/index.d.ts +0 -4
  23. package/dist/constants/index.d.ts.map +1 -1
  24. package/dist/constants/index.js +1 -5
  25. package/dist/constants/index.js.map +1 -1
  26. package/dist/contract/cross-chain-reader.js.map +1 -1
  27. package/dist/contract/index.js.map +1 -1
  28. package/dist/contract/pipeline/index.js.map +1 -1
  29. package/dist/contract/pipeline/internal/core.d.ts +2 -2
  30. package/dist/contract/pipeline/internal/core.d.ts.map +1 -1
  31. package/dist/contract/pipeline/internal/core.js.map +1 -1
  32. package/dist/contract/pipeline/internal/helpers.js.map +1 -1
  33. package/dist/contract/pipeline/internal/nonce.js.map +1 -1
  34. package/dist/contract/pipeline/internal/prepare.js.map +1 -1
  35. package/dist/contract/pipeline/internal/receipt.d.ts +2 -2
  36. package/dist/contract/pipeline/internal/receipt.d.ts.map +1 -1
  37. package/dist/contract/pipeline/internal/receipt.js +1 -1
  38. package/dist/contract/pipeline/internal/receipt.js.map +1 -1
  39. package/dist/contract/pipeline/live.js.map +1 -1
  40. package/dist/contract/pipeline/service.d.ts +3 -3
  41. package/dist/contract/pipeline/service.d.ts.map +1 -1
  42. package/dist/contract/pipeline/service.js.map +1 -1
  43. package/dist/contract/pipeline/types.d.ts +2 -2
  44. package/dist/contract/pipeline/types.d.ts.map +1 -1
  45. package/dist/contract/pipeline/types.js.map +1 -1
  46. package/dist/contract/pipeline/write-and-track.d.ts.map +1 -1
  47. package/dist/contract/pipeline/write-and-track.js +5 -6
  48. package/dist/contract/pipeline/write-and-track.js.map +1 -1
  49. package/dist/contract/pipeline/write-and-wait.d.ts +1 -1
  50. package/dist/contract/pipeline/write-and-wait.d.ts.map +1 -1
  51. package/dist/contract/pipeline/write-and-wait.js.map +1 -1
  52. package/dist/contract/pipeline.js.map +1 -1
  53. package/dist/contract/reader.js.map +1 -1
  54. package/dist/contract/typed-contract.js.map +1 -1
  55. package/dist/contract/writer.js.map +1 -1
  56. package/dist/core/clients/index.js.map +1 -1
  57. package/dist/core/clients/public-client.js.map +1 -1
  58. package/dist/core/clients/wallet-client.js.map +1 -1
  59. package/dist/core/errors/client.js.map +1 -1
  60. package/dist/core/errors/contract.js.map +1 -1
  61. package/dist/core/errors/erc20.js.map +1 -1
  62. package/dist/core/errors/event.js.map +1 -1
  63. package/dist/core/errors/index.js.map +1 -1
  64. package/dist/core/errors/predicates.js.map +1 -1
  65. package/dist/core/errors/transaction.d.ts +7 -7
  66. package/dist/core/errors/transaction.d.ts.map +1 -1
  67. package/dist/core/errors/transaction.js +2 -2
  68. package/dist/core/errors/transaction.js.map +1 -1
  69. package/dist/core/errors/viem-mapper.d.ts +3 -3
  70. package/dist/core/errors/viem-mapper.d.ts.map +1 -1
  71. package/dist/core/errors/viem-mapper.js +14 -5
  72. package/dist/core/errors/viem-mapper.js.map +1 -1
  73. package/dist/core/index.js.map +1 -1
  74. package/dist/deploy/errors.js.map +1 -1
  75. package/dist/deploy/index.js.map +1 -1
  76. package/dist/deploy/service.d.ts +3 -3
  77. package/dist/deploy/service.d.ts.map +1 -1
  78. package/dist/deploy/service.js.map +1 -1
  79. package/dist/eip7702/erc7579.js.map +1 -1
  80. package/dist/eip7702/errors.d.ts +3 -3
  81. package/dist/eip7702/errors.d.ts.map +1 -1
  82. package/dist/eip7702/errors.js +1 -1
  83. package/dist/eip7702/errors.js.map +1 -1
  84. package/dist/eip7702/index.js.map +1 -1
  85. package/dist/eip7702/service.d.ts +8 -8
  86. package/dist/eip7702/service.d.ts.map +1 -1
  87. package/dist/eip7702/service.js +2 -2
  88. package/dist/eip7702/service.js.map +1 -1
  89. package/dist/ens/ens.d.ts.map +1 -1
  90. package/dist/ens/ens.js +6 -6
  91. package/dist/ens/ens.js.map +1 -1
  92. package/dist/ens/errors.js.map +1 -1
  93. package/dist/ens/index.js.map +1 -1
  94. package/dist/erc20/allowance/core.js.map +1 -1
  95. package/dist/erc20/allowance/index.js.map +1 -1
  96. package/dist/erc20/allowance/no-output.js.map +1 -1
  97. package/dist/erc20/allowance/types.js.map +1 -1
  98. package/dist/erc20/index.d.ts +1 -0
  99. package/dist/erc20/index.d.ts.map +1 -1
  100. package/dist/erc20/index.js +1 -0
  101. package/dist/erc20/index.js.map +1 -1
  102. package/dist/erc20/metadata.d.ts +16 -0
  103. package/dist/erc20/metadata.d.ts.map +1 -0
  104. package/dist/erc20/metadata.js +67 -0
  105. package/dist/erc20/metadata.js.map +1 -0
  106. package/dist/erc721/errors.js.map +1 -1
  107. package/dist/erc721/helpers.js.map +1 -1
  108. package/dist/erc721/index.js.map +1 -1
  109. package/dist/erc721/metadata.js.map +1 -1
  110. package/dist/erc721/service.js.map +1 -1
  111. package/dist/events/backfill.js.map +1 -1
  112. package/dist/events/backfill.test.integration.d.ts +2 -0
  113. package/dist/events/backfill.test.integration.d.ts.map +1 -0
  114. package/dist/events/backfill.test.integration.js +112 -0
  115. package/dist/events/backfill.test.integration.js.map +1 -0
  116. package/dist/events/cursor.js.map +1 -1
  117. package/dist/events/decoder.js.map +1 -1
  118. package/dist/events/index.js.map +1 -1
  119. package/dist/events/reliable-stream-simple.test.integration.d.ts +2 -0
  120. package/dist/events/reliable-stream-simple.test.integration.d.ts.map +1 -0
  121. package/dist/events/reliable-stream-simple.test.integration.js +22 -0
  122. package/dist/events/reliable-stream-simple.test.integration.js.map +1 -0
  123. package/dist/events/reliable-stream.js.map +1 -1
  124. package/dist/events/reliable-stream.test.integration.d.ts +2 -0
  125. package/dist/events/reliable-stream.test.integration.d.ts.map +1 -0
  126. package/dist/events/reliable-stream.test.integration.js +327 -0
  127. package/dist/events/reliable-stream.test.integration.js.map +1 -0
  128. package/dist/events/stream.js.map +1 -1
  129. package/dist/events/stream.test.integration.d.ts +2 -0
  130. package/dist/events/stream.test.integration.d.ts.map +1 -0
  131. package/dist/events/stream.test.integration.js +120 -0
  132. package/dist/events/stream.test.integration.js.map +1 -0
  133. package/dist/gas/errors.js.map +1 -1
  134. package/dist/gas/estimator.d.ts.map +1 -1
  135. package/dist/gas/estimator.js +75 -58
  136. package/dist/gas/estimator.js.map +1 -1
  137. package/dist/gas/index.js.map +1 -1
  138. package/dist/gas/service.d.ts.map +1 -1
  139. package/dist/gas/service.js +14 -2
  140. package/dist/gas/service.js.map +1 -1
  141. package/dist/gas/service.test.integration.d.ts +2 -0
  142. package/dist/gas/service.test.integration.d.ts.map +1 -0
  143. package/dist/gas/service.test.integration.js +152 -0
  144. package/dist/gas/service.test.integration.js.map +1 -0
  145. package/dist/index.js.map +1 -1
  146. package/dist/integrations/react-hooks/convenience/index.js.map +1 -1
  147. package/dist/integrations/react-hooks/internal/error.js.map +1 -1
  148. package/dist/integrations/react-hooks/internal/is-dev.js.map +1 -1
  149. package/dist/integrations/react-hooks/internal/runtime.js.map +1 -1
  150. package/dist/integrations/react-hooks/internal/scoped-run.js.map +1 -1
  151. package/dist/integrations/react-hooks/internal/stable.js.map +1 -1
  152. package/dist/integrations/react-hooks/primitives/use-effect-memo-factory.js.map +1 -1
  153. package/dist/integrations/react-hooks/primitives/use-effect.js.map +1 -1
  154. package/dist/integrations/react-hooks/primitives/use-fork-effect.js.map +1 -1
  155. package/dist/integrations/react-hooks/primitives/use-stream.js.map +1 -1
  156. package/dist/integrations/react-hooks/primitives.js.map +1 -1
  157. package/dist/integrations/react-hooks/provider.js.map +1 -1
  158. package/dist/integrations/react-hooks/wagmi/index.js.map +1 -1
  159. package/dist/integrations/react-hooks/wallet-provider-ref.js.map +1 -1
  160. package/dist/integrations/wagmi/index.js.map +1 -1
  161. package/dist/integrations/wagmi/layers.js.map +1 -1
  162. package/dist/internal/index.js.map +1 -1
  163. package/dist/internal/numbers.js.map +1 -1
  164. package/dist/internal/schedule.js.map +1 -1
  165. package/dist/internal/stream-adapters.js.map +1 -1
  166. package/dist/internal/viem-effect.js.map +1 -1
  167. package/dist/nonce/index.js.map +1 -1
  168. package/dist/nonce/manager.js.map +1 -1
  169. package/dist/nonce/service.js.map +1 -1
  170. package/dist/nonce/service.test.integration.d.ts +2 -0
  171. package/dist/nonce/service.test.integration.d.ts.map +1 -0
  172. package/dist/nonce/service.test.integration.js +141 -0
  173. package/dist/nonce/service.test.integration.js.map +1 -0
  174. package/dist/platform/browser/cursor-store/index.js.map +1 -1
  175. package/dist/platform/browser/cursor-store/local-storage.js.map +1 -1
  176. package/dist/platform/browser/index.js.map +1 -1
  177. package/dist/platform/browser/layers.js.map +1 -1
  178. package/dist/platform/browser/storage/errors.js.map +1 -1
  179. package/dist/platform/browser/storage/index.js.map +1 -1
  180. package/dist/platform/browser/storage/local-storage.js.map +1 -1
  181. package/dist/platform/browser/tx-persistence/index.js.map +1 -1
  182. package/dist/platform/browser/tx-persistence/persistence.js.map +1 -1
  183. package/dist/platform/browser/tx-store/errors.js.map +1 -1
  184. package/dist/platform/browser/tx-store/index.js.map +1 -1
  185. package/dist/platform/browser/tx-store/local-storage.js.map +1 -1
  186. package/dist/platform/browser/tx-store/store.js.map +1 -1
  187. package/dist/platform/browser/tx-store/types.js.map +1 -1
  188. package/dist/presets/index.js.map +1 -1
  189. package/dist/presets/layers.js.map +1 -1
  190. package/dist/presets/transports.js.map +1 -1
  191. package/dist/query/chain-head.js.map +1 -1
  192. package/dist/query/client.js.map +1 -1
  193. package/dist/query/client.test.integration.d.ts +2 -0
  194. package/dist/query/client.test.integration.d.ts.map +1 -0
  195. package/dist/query/client.test.integration.js +94 -0
  196. package/dist/query/client.test.integration.js.map +1 -0
  197. package/dist/query/contract-query.js.map +1 -1
  198. package/dist/query/contract-query.test.integration.d.ts +2 -0
  199. package/dist/query/contract-query.test.integration.d.ts.map +1 -0
  200. package/dist/query/contract-query.test.integration.js +133 -0
  201. package/dist/query/contract-query.test.integration.js.map +1 -0
  202. package/dist/query/index.js.map +1 -1
  203. package/dist/query/multicall-batcher.js.map +1 -1
  204. package/dist/react-hooks/index.d.ts +0 -2
  205. package/dist/react-hooks/index.d.ts.map +1 -1
  206. package/dist/react-hooks/index.js +0 -2
  207. package/dist/react-hooks/index.js.map +1 -1
  208. package/dist/react-hooks/wagmi/index.js.map +1 -1
  209. package/dist/rpc/cache.js.map +1 -1
  210. package/dist/rpc/circuit-breaker.js.map +1 -1
  211. package/dist/rpc/dedup.js.map +1 -1
  212. package/dist/rpc/index.js.map +1 -1
  213. package/dist/rpc/retry.js.map +1 -1
  214. package/dist/rpc/routemesh.js.map +1 -1
  215. package/dist/signature/errors.js.map +1 -1
  216. package/dist/signature/index.js.map +1 -1
  217. package/dist/signature/service.js.map +1 -1
  218. package/dist/signature/service.test.integration.d.ts +2 -0
  219. package/dist/signature/service.test.integration.d.ts.map +1 -0
  220. package/dist/signature/service.test.integration.js +179 -0
  221. package/dist/signature/service.test.integration.js.map +1 -0
  222. package/dist/signature/utils.js.map +1 -1
  223. package/dist/simulation/errors.js.map +1 -1
  224. package/dist/simulation/index.js.map +1 -1
  225. package/dist/simulation/service.js.map +1 -1
  226. package/dist/simulation/tenderly.js.map +1 -1
  227. package/dist/simulation/tenderly.test.integration.d.ts +2 -0
  228. package/dist/simulation/tenderly.test.integration.d.ts.map +1 -0
  229. package/dist/simulation/tenderly.test.integration.js +104 -0
  230. package/dist/simulation/tenderly.test.integration.js.map +1 -0
  231. package/dist/simulation/types.js.map +1 -1
  232. package/dist/subscriptions/block-subscription.js.map +1 -1
  233. package/dist/subscriptions/errors.js.map +1 -1
  234. package/dist/subscriptions/index.js.map +1 -1
  235. package/dist/subscriptions/log-subscription.js.map +1 -1
  236. package/dist/subscriptions/pending-tx.d.ts +1 -1
  237. package/dist/subscriptions/pending-tx.d.ts.map +1 -1
  238. package/dist/subscriptions/pending-tx.js +1 -1
  239. package/dist/subscriptions/pending-tx.js.map +1 -1
  240. package/dist/subscriptions/service.d.ts +2 -2
  241. package/dist/subscriptions/service.d.ts.map +1 -1
  242. package/dist/subscriptions/service.js +4 -4
  243. package/dist/subscriptions/service.js.map +1 -1
  244. package/dist/telemetry/index.js.map +1 -1
  245. package/dist/telemetry/logger.js.map +1 -1
  246. package/dist/telemetry/tracer.d.ts +2 -2
  247. package/dist/telemetry/tracer.js +2 -2
  248. package/dist/telemetry/tracer.js.map +1 -1
  249. package/dist/testing-kit/_fixtures/addresses.js.map +1 -1
  250. package/dist/testing-kit/_fixtures/receipts.js.map +1 -1
  251. package/dist/testing-kit/helpers.js.map +1 -1
  252. package/dist/testing-kit/index.js.map +1 -1
  253. package/dist/testing-kit/mock-balance-service.js.map +1 -1
  254. package/dist/testing-kit/mock-block-service.js.map +1 -1
  255. package/dist/testing-kit/mock-cross-chain-reader.js.map +1 -1
  256. package/dist/testing-kit/mock-deploy-service.js.map +1 -1
  257. package/dist/testing-kit/mock-erc721-service.js.map +1 -1
  258. package/dist/testing-kit/mock-gas-service.js.map +1 -1
  259. package/dist/testing-kit/mock-nonce-service.js.map +1 -1
  260. package/dist/testing-kit/mock-public-client.js.map +1 -1
  261. package/dist/testing-kit/mock-signature-service.js.map +1 -1
  262. package/dist/testing-kit/mock-simulation-service.js.map +1 -1
  263. package/dist/testing-kit/mock-subscription-service.d.ts +2 -2
  264. package/dist/testing-kit/mock-subscription-service.d.ts.map +1 -1
  265. package/dist/testing-kit/mock-subscription-service.js +5 -5
  266. package/dist/testing-kit/mock-subscription-service.js.map +1 -1
  267. package/dist/testing-kit/mock-transfer-service.d.ts +3 -3
  268. package/dist/testing-kit/mock-transfer-service.d.ts.map +1 -1
  269. package/dist/testing-kit/mock-transfer-service.js.map +1 -1
  270. package/dist/testing-kit/mock-wallet-client.js.map +1 -1
  271. package/dist/testing-kit/mock-wallet-provider.js.map +1 -1
  272. package/dist/testing-kit/test-layer.js.map +1 -1
  273. package/dist/transfer/index.js.map +1 -1
  274. package/dist/transfer/service.d.ts +8 -11
  275. package/dist/transfer/service.d.ts.map +1 -1
  276. package/dist/transfer/service.js +32 -13
  277. package/dist/transfer/service.js.map +1 -1
  278. package/dist/tx/fees.d.ts.map +1 -1
  279. package/dist/tx/fees.js +3 -0
  280. package/dist/tx/fees.js.map +1 -1
  281. package/dist/tx/index.js.map +1 -1
  282. package/dist/tx/manager.d.ts +3 -2
  283. package/dist/tx/manager.d.ts.map +1 -1
  284. package/dist/tx/manager.js +232 -216
  285. package/dist/tx/manager.js.map +1 -1
  286. package/dist/tx/manager.test.integration.d.ts +2 -0
  287. package/dist/tx/manager.test.integration.d.ts.map +1 -0
  288. package/dist/tx/manager.test.integration.js +177 -0
  289. package/dist/tx/manager.test.integration.js.map +1 -0
  290. package/dist/tx/policy.d.ts +1 -1
  291. package/dist/tx/policy.d.ts.map +1 -1
  292. package/dist/tx/policy.js.map +1 -1
  293. package/dist/tx/replacement.d.ts +3 -3
  294. package/dist/tx/replacement.d.ts.map +1 -1
  295. package/dist/tx/replacement.js +3 -3
  296. package/dist/tx/replacement.js.map +1 -1
  297. package/dist/tx/tracker.d.ts +6 -6
  298. package/dist/tx/tracker.d.ts.map +1 -1
  299. package/dist/tx/tracker.js +9 -9
  300. package/dist/tx/tracker.js.map +1 -1
  301. package/dist/types/abi.js.map +1 -1
  302. package/dist/types/index.js.map +1 -1
  303. package/dist/types/params.d.ts +1 -1
  304. package/dist/types/params.d.ts.map +1 -1
  305. package/dist/types/params.js.map +1 -1
  306. package/dist/types/tx-overrides.d.ts +1 -1
  307. package/dist/types/tx-overrides.d.ts.map +1 -1
  308. package/dist/types/tx-overrides.js.map +1 -1
  309. package/dist/wagmi/index.js.map +1 -1
  310. package/dist/wagmi/layers.js.map +1 -1
  311. package/dist/wallet/errors.d.ts +3 -3
  312. package/dist/wallet/errors.d.ts.map +1 -1
  313. package/dist/wallet/errors.js +1 -1
  314. package/dist/wallet/errors.js.map +1 -1
  315. package/dist/wallet/index.js.map +1 -1
  316. package/dist/wallet/lifecycle.js.map +1 -1
  317. package/dist/wallet/operations.d.ts +2 -2
  318. package/dist/wallet/operations.d.ts.map +1 -1
  319. package/dist/wallet/operations.js +2 -2
  320. package/dist/wallet/operations.js.map +1 -1
  321. package/dist/wallet/provider-ref.js.map +1 -1
  322. package/dist/wallet/service.d.ts +2 -2
  323. package/dist/wallet/service.d.ts.map +1 -1
  324. package/dist/wallet/service.js.map +1 -1
  325. package/dist/wallet/types.js.map +1 -1
  326. package/package.json +25 -14
  327. package/dist/react-hooks/use-is-safe-multisig.d.ts +0 -2
  328. package/dist/react-hooks/use-is-safe-multisig.d.ts.map +0 -1
  329. package/dist/react-hooks/use-is-safe-multisig.js +0 -44
  330. package/dist/react-hooks/use-is-safe-multisig.js.map +0 -1
  331. package/dist/react-hooks/use-safe-context.d.ts +0 -2
  332. package/dist/react-hooks/use-safe-context.d.ts.map +0 -1
  333. package/dist/react-hooks/use-safe-context.js +0 -41
  334. package/dist/react-hooks/use-safe-context.js.map +0 -1
  335. package/dist/safe/adapter.d.ts +0 -9
  336. package/dist/safe/adapter.d.ts.map +0 -1
  337. package/dist/safe/adapter.js +0 -13
  338. package/dist/safe/adapter.js.map +0 -1
  339. package/dist/safe/detection.d.ts +0 -26
  340. package/dist/safe/detection.d.ts.map +0 -1
  341. package/dist/safe/detection.js +0 -102
  342. package/dist/safe/detection.js.map +0 -1
  343. package/dist/safe/errors.d.ts +0 -79
  344. package/dist/safe/errors.d.ts.map +0 -1
  345. package/dist/safe/errors.js +0 -34
  346. package/dist/safe/errors.js.map +0 -1
  347. package/dist/safe/index.d.ts +0 -8
  348. package/dist/safe/index.d.ts.map +0 -1
  349. package/dist/safe/index.js +0 -6
  350. package/dist/safe/index.js.map +0 -1
  351. package/dist/safe/live.d.ts +0 -8
  352. package/dist/safe/live.d.ts.map +0 -1
  353. package/dist/safe/live.js +0 -250
  354. package/dist/safe/live.js.map +0 -1
  355. package/dist/safe/service.d.ts +0 -26
  356. package/dist/safe/service.d.ts.map +0 -1
  357. package/dist/safe/service.js +0 -4
  358. package/dist/safe/service.js.map +0 -1
  359. package/dist/safe/simulation/abis.d.ts +0 -73
  360. package/dist/safe/simulation/abis.d.ts.map +0 -1
  361. package/dist/safe/simulation/abis.js +0 -61
  362. package/dist/safe/simulation/abis.js.map +0 -1
  363. package/dist/safe/simulation/addresses.d.ts +0 -4
  364. package/dist/safe/simulation/addresses.d.ts.map +0 -1
  365. package/dist/safe/simulation/addresses.js +0 -40
  366. package/dist/safe/simulation/addresses.js.map +0 -1
  367. package/dist/safe/simulation/encoding.d.ts +0 -16
  368. package/dist/safe/simulation/encoding.d.ts.map +0 -1
  369. package/dist/safe/simulation/encoding.js +0 -36
  370. package/dist/safe/simulation/encoding.js.map +0 -1
  371. package/dist/safe/simulation/errors.d.ts +0 -56
  372. package/dist/safe/simulation/errors.d.ts.map +0 -1
  373. package/dist/safe/simulation/errors.js +0 -37
  374. package/dist/safe/simulation/errors.js.map +0 -1
  375. package/dist/safe/simulation/index.d.ts +0 -7
  376. package/dist/safe/simulation/index.d.ts.map +0 -1
  377. package/dist/safe/simulation/index.js +0 -6
  378. package/dist/safe/simulation/index.js.map +0 -1
  379. package/dist/safe/simulation/service.d.ts +0 -14
  380. package/dist/safe/simulation/service.d.ts.map +0 -1
  381. package/dist/safe/simulation/service.js +0 -140
  382. package/dist/safe/simulation/service.js.map +0 -1
  383. package/dist/safe/simulation/types.d.ts +0 -20
  384. package/dist/safe/simulation/types.d.ts.map +0 -1
  385. package/dist/safe/simulation/types.js +0 -2
  386. package/dist/safe/simulation/types.js.map +0 -1
  387. package/dist/safe/types.d.ts +0 -61
  388. package/dist/safe/types.d.ts.map +0 -1
  389. package/dist/safe/types.js +0 -2
  390. package/dist/safe/types.js.map +0 -1
@@ -22,13 +22,13 @@ const defaultConfig = {
22
22
  const stream = yield* defaultConfig.watchLogs(watchParams);
23
23
  return { stateRef, stream };
24
24
  }),
25
- watchPendingTransactions: () => Effect.succeed(Stream.empty),
26
- watchPendingTransactionsRetrying: (params) => Effect.gen(function* () {
25
+ watchPendingTxs: () => Effect.succeed(Stream.empty),
26
+ watchPendingTxsRetrying: (params) => Effect.gen(function* () {
27
27
  const stateRef = yield* SubscriptionRef.make({
28
28
  status: "connected",
29
29
  });
30
30
  const { retry: _retry, ...watchParams } = params;
31
- const stream = yield* defaultConfig.watchPendingTransactions(watchParams);
31
+ const stream = yield* defaultConfig.watchPendingTxs(watchParams);
32
32
  return { stateRef, stream };
33
33
  }),
34
34
  };
@@ -43,7 +43,7 @@ export const makeMockSubscriptionServiceLayer = (config = {}, supportedChainId =
43
43
  watchBlocksRetrying: withChainIdCheck(supportedChainId, merged.watchBlocksRetrying),
44
44
  watchLogs: withChainIdCheck(supportedChainId, merged.watchLogs),
45
45
  watchLogsRetrying: withChainIdCheck(supportedChainId, merged.watchLogsRetrying),
46
- watchPendingTransactions: withChainIdCheck(supportedChainId, merged.watchPendingTransactions),
47
- watchPendingTransactionsRetrying: withChainIdCheck(supportedChainId, merged.watchPendingTransactionsRetrying),
46
+ watchPendingTxs: withChainIdCheck(supportedChainId, merged.watchPendingTxs),
47
+ watchPendingTxsRetrying: withChainIdCheck(supportedChainId, merged.watchPendingTxsRetrying),
48
48
  }));
49
49
  //# sourceMappingURL=mock-subscription-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-subscription-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-subscription-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-subscription-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-subscription-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect, Stream, SubscriptionRef } from \"effect\";\nimport type { Address, Block, Hash, Hex, Log } from \"viem\";\nimport { ClientNotFoundError } from \"@/src/core/index.js\";\nimport type {\n SubscriptionConnectionState,\n SubscriptionRetryConfig,\n} from \"@/src/subscriptions/index.js\";\nimport { SubscriptionService } from \"@/src/subscriptions/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock SubscriptionService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockSubscriptionServiceConfig = {\n watchBlocks?: (params: {\n chainId: number;\n includeTransactions?: boolean;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Block, never>>;\n\n watchLogs?: (params: {\n chainId: number;\n address?: Address | Address[];\n topics?: (Hex | Hex[] | null)[];\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Log, never>>;\n\n watchPendingTxs?: (params: {\n chainId: number;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Hash, never>>;\n\n watchBlocksRetrying?: (params: {\n chainId: number;\n includeTransactions?: boolean;\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<{\n stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;\n stream: Stream.Stream<Block, never>;\n }>;\n\n watchLogsRetrying?: (params: {\n chainId: number;\n address?: Address | Address[];\n topics?: (Hex | Hex[] | null)[];\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<{\n stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;\n stream: Stream.Stream<Log, never>;\n }>;\n\n watchPendingTxsRetrying?: (params: {\n chainId: number;\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<{\n stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;\n stream: Stream.Stream<Hash, never>;\n }>;\n\n hasWebSocket?: (chainId: number) => Effect.Effect<boolean>;\n};\n\nconst defaultConfig: Required<MockSubscriptionServiceConfig> = {\n hasWebSocket: () => Effect.succeed(false),\n watchBlocks: () => Effect.succeed(Stream.empty),\n watchBlocksRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connected\",\n });\n const { retry: _retry, ...watchParams } = params;\n const stream = yield* defaultConfig.watchBlocks(watchParams);\n return { stateRef, stream };\n }),\n watchLogs: () => Effect.succeed(Stream.empty),\n watchLogsRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connected\",\n });\n const { retry: _retry, ...watchParams } = params;\n const stream = yield* defaultConfig.watchLogs(watchParams);\n return { stateRef, stream };\n }),\n watchPendingTxs: () => Effect.succeed(Stream.empty),\n watchPendingTxsRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connected\",\n });\n const { retry: _retry, ...watchParams } = params;\n const stream = yield* defaultConfig.watchPendingTxs(watchParams);\n return { stateRef, stream };\n }),\n};\n\n/**\n * Creates a mock SubscriptionService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockSubscriptionServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockSubscriptionServiceLayer({\n * watchBlocks: () => Effect.succeed(Stream.make({ number: 1000n })),\n * hasWebSocket: () => Effect.succeed(true),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const subscriptions = yield* SubscriptionService;\n * const blockStream = yield* subscriptions.watchBlocks({ chainId: mainnet.id });\n * }).pipe(Effect.provide(layer));\n * ```\n */\nexport const makeMockSubscriptionServiceLayer = (\n config: MockSubscriptionServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<SubscriptionService> =>\n makeMockServiceLayer(SubscriptionService, defaultConfig, config, (merged) => ({\n // hasWebSocket takes chainId directly (not a params object), so we handle it separately\n hasWebSocket: (chainId) =>\n chainId === supportedChainId\n ? merged.hasWebSocket(chainId)\n : Effect.fail(\n new ClientNotFoundError({\n chainId,\n message: `No client configured for chain ID ${chainId}`,\n })\n ),\n\n // Methods that take params with chainId - use the helper\n watchBlocks: withChainIdCheck(supportedChainId, merged.watchBlocks),\n watchBlocksRetrying: withChainIdCheck(supportedChainId, merged.watchBlocksRetrying),\n watchLogs: withChainIdCheck(supportedChainId, merged.watchLogs),\n watchLogsRetrying: withChainIdCheck(supportedChainId, merged.watchLogsRetrying),\n watchPendingTxs: withChainIdCheck(supportedChainId, merged.watchPendingTxs),\n watchPendingTxsRetrying: withChainIdCheck(supportedChainId, merged.watchPendingTxsRetrying),\n }));\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { Layer } from "effect";
2
2
  import { Effect } from "effect";
3
3
  import type { Address, Hash, TransactionReceipt } from "viem";
4
- import type { ClientNotFoundError, InsufficientFundsError, ReceiptTimeoutError, TransactionFailedError, UserRejectedError, WalletNotConnectedError, WrongNetworkError } from "../core/index.js";
4
+ import type { ClientNotFoundError, InsufficientFundsError, ReceiptTimeoutError, TxFailedError, UserRejectedError, WalletNotConnectedError, WrongNetworkError } from "../core/index.js";
5
5
  import type { TransferOverrides } from "../transfer/index.js";
6
6
  import { TransferService } from "../transfer/index.js";
7
7
  export type MockTransferServiceConfig = {
@@ -10,14 +10,14 @@ export type MockTransferServiceConfig = {
10
10
  to: Address;
11
11
  value: bigint;
12
12
  overrides?: TransferOverrides;
13
- }) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TransactionFailedError>;
13
+ }) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError>;
14
14
  sendAndWait?: (params: {
15
15
  chainId: number;
16
16
  to: Address;
17
17
  value: bigint;
18
18
  confirmations?: number;
19
19
  overrides?: TransferOverrides;
20
- }) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TransactionFailedError | ReceiptTimeoutError>;
20
+ }) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError | ReceiptTimeoutError>;
21
21
  estimateGas?: (params: {
22
22
  chainId: number;
23
23
  to: Address;
@@ -1 +1 @@
1
- {"version":3,"file":"mock-transfer-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAW1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,IAAI,EACF,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,sBAAsB,CACzB,CAAC;IAEF,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,kBAAkB,EAChB,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,CACtB,CAAC;IAEF,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD,CAAC;AAsCF,eAAO,MAAM,4BAA4B,GACvC,SAAQ,yBAA8B,EACtC,yBAAoB,KACnB,KAAK,CAAC,KAAK,CAAC,eAAe,CAKzB,CAAC"}
1
+ {"version":3,"file":"mock-transfer-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAW1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,IAAI,EACF,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,CAChB,CAAC;IAEF,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,kBAAkB,EAChB,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,mBAAmB,CACtB,CAAC;IAEF,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD,CAAC;AAsCF,eAAO,MAAM,4BAA4B,GACvC,SAAQ,yBAA8B,EACtC,yBAAoB,KACnB,KAAK,CAAC,KAAK,CAAC,eAAe,CAKzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-transfer-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAWtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAgDtE,MAAM,aAAa,GAAwC;IACzD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACxC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAkC,CAAC;CACtE,CAAC;AAgCF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAAoC,EAAE,EACtC,gBAAgB,GAAG,CAAC,EACU,EAAE,CAChC,oBAAoB,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;IACrD,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;CACpE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"mock-transfer-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAWtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAgDtE,MAAM,aAAa,GAAwC;IACzD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACxC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAkC,CAAC;CACtE,CAAC;AAgCF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAAoC,EAAE,EACtC,gBAAgB,GAAG,CAAC,EACU,EAAE,CAChC,oBAAoB,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;IACrD,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;CACpE,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type {\n ClientNotFoundError,\n InsufficientFundsError,\n ReceiptTimeoutError,\n TxFailedError,\n UserRejectedError,\n WalletNotConnectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport type { TransferOverrides } from \"@/src/transfer/index.js\";\nimport { TransferService } from \"@/src/transfer/index.js\";\nimport { TEST_TX_HASH } from \"./_fixtures/addresses.js\";\nimport { TEST_RECEIPT } from \"./_fixtures/receipts.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock TransferService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockTransferServiceConfig = {\n send?: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n Hash,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n >;\n\n sendAndWait?: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n confirmations?: number;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n TransactionReceipt,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n | ReceiptTimeoutError\n >;\n\n estimateGas?: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n }) => Effect.Effect<bigint, ClientNotFoundError>;\n};\n\nconst defaultConfig: Required<MockTransferServiceConfig> = {\n estimateGas: () => Effect.succeed(MIN_TX_GAS),\n send: () => Effect.succeed(TEST_TX_HASH),\n sendAndWait: () => Effect.succeed(TEST_RECEIPT as TransactionReceipt),\n};\n\n/**\n * Creates a mock TransferService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockTransferServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockTransferServiceLayer({\n * send: () => Effect.succeed(\"0x123...\"),\n * estimateGas: () => Effect.succeed(21000n),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const transferService = yield* TransferService;\n * const hash = yield* transferService.send({\n * chainId: mainnet.id,\n * to: \"0x...\",\n * value: 1000000000000000000n, // 1 ETH\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockTransferServiceLayer = (\n config: MockTransferServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<TransferService> =>\n makeMockServiceLayer(TransferService, defaultConfig, config, (merged) => ({\n estimateGas: withChainIdCheck(supportedChainId, merged.estimateGas),\n send: withChainIdCheck(supportedChainId, merged.send),\n sendAndWait: withChainIdCheck(supportedChainId, merged.sendAndWait),\n }));\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-wallet-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAsBvD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAClG,MAAM,iBAAiB,GACrB,oIAA2I,CAAC;AA4B9I,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACc,EAAE;IAEpC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IAG7E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAGlF,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,eAAe,CAAC;IAGhE,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,UAAU;SACjB;QACD,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE;QAC/B,eAAe;QACf,WAAW;QACX,eAAe;QACf,aAAa;QACb,aAAa;KAON,CAAC;IAEV,OAAO,KAAK,CAAC,OAAO,CAClB,mBAAmB,EACnB,mBAAmB,CAAC,EAAE,CAAC;QACrB,GAAG,EAAE,uBAAuB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC;KACvE,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"mock-wallet-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAsBvD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAClG,MAAM,iBAAiB,GACrB,oIAA2I,CAAC;AA4B9I,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACc,EAAE;IAEpC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IAG7E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAGlF,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,eAAe,CAAC;IAGhE,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,UAAU;SACjB;QACD,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE;QAC/B,eAAe;QACf,WAAW;QACX,eAAe;QACf,aAAa;QACb,aAAa;KAON,CAAC;IAEV,OAAO,KAAK,CAAC,OAAO,CAClB,mBAAmB,EACnB,mBAAmB,CAAC,EAAE,CAAC;QACrB,GAAG,EAAE,uBAAuB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC;KACvE,CAAC,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Effect } from \"effect\";\nimport { Layer } from \"effect\";\nimport type { Address, Hash, Hex, TypedData } from \"viem\";\nimport type { WalletClientServiceShape } from \"@/src/core/index.js\";\nimport { WalletClientService } from \"@/src/core/index.js\";\nimport { makeWalletChainIdGetter } from \"./helpers.js\";\n\n/**\n * Configuration for the mock WalletClient\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockWalletClientConfig = {\n // Contract methods\n writeContract?: (params: unknown) => Promise<Hash>;\n sendTransaction?: (params: unknown) => Promise<Hash>;\n\n // Signing methods\n signMessage?: (params: { message: string | Hex }) => Promise<Hex>;\n signTypedData?: (params: { typedData: TypedData }) => Promise<Hex>;\n signTransaction?: (params: unknown) => Promise<Hex>;\n\n // Account config\n accountAddress?: Address;\n};\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\nconst DEFAULT_SIGNATURE =\n \"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b\" as Hex;\n\n/**\n * Creates a mock WalletClientService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockWalletClientLayer();\n *\n * // Override specific methods\n * const layer = makeMockWalletClientLayer({\n * writeContract: async () => \"0xtxhash...\",\n * accountAddress: \"0xmyaddress...\",\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const writer = yield* ContractWriter;\n * const hash = yield* writer.write({ ... });\n * }).pipe(\n * Effect.provide(Layer.provide(ContractWriterLive, layer))\n * );\n * ```\n */\nexport const makeMockWalletClientLayer = (\n config: MockWalletClientConfig = {},\n supportedChainId = 1\n): Layer.Layer<WalletClientService> => {\n // Contract defaults\n const writeContract = config.writeContract ?? (async () => DEFAULT_HASH);\n const sendTransaction = config.sendTransaction ?? (async () => DEFAULT_HASH);\n\n // Signing defaults\n const signMessage = config.signMessage ?? (async () => DEFAULT_SIGNATURE);\n const signTypedData = config.signTypedData ?? (async () => DEFAULT_SIGNATURE);\n const signTransaction = config.signTransaction ?? (async () => DEFAULT_SIGNATURE);\n\n // Account config\n const accountAddress = config.accountAddress ?? DEFAULT_ADDRESS;\n\n // Create mock WalletClient\n const mockWalletClient = {\n account: {\n address: accountAddress,\n type: \"json-rpc\",\n },\n chain: { id: supportedChainId },\n sendTransaction,\n signMessage,\n signTransaction,\n signTypedData,\n writeContract,\n } as unknown as ReturnType<WalletClientServiceShape[\"get\"]> extends Effect.Effect<\n infer A,\n infer _E,\n infer _R\n >\n ? A\n : never;\n\n return Layer.succeed(\n WalletClientService,\n WalletClientService.of({\n get: makeWalletChainIdGetter(supportedChainId, () => mockWalletClient),\n })\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-wallet-provider.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-provider.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAmC,EAAE,EAAkB,EAAE,CAAC,CAAC;IAChG,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9D,CAAC,CAAC"}
1
+ {"version":3,"file":"mock-wallet-provider.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-provider.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAmC,EAAE,EAAkB,EAAE,CAAC,CAAC;IAChG,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9D,CAAC,CAAC","sourcesContent":["import type { WalletProvider } from \"@/src/wallet/index.js\";\n\nexport type MockWalletProviderConfig = {\n request?: (args: {\n method: string;\n params?: unknown[] | Record<string, unknown>;\n }) => Promise<unknown>;\n on?: (event: string, handler: (...args: unknown[]) => void) => void;\n removeListener?: (event: string, handler: (...args: unknown[]) => void) => void;\n};\n\n/**\n * Creates a mock WalletProvider for testing wallet connection flows\n */\nexport const makeMockWalletProvider = (config: MockWalletProviderConfig = {}): WalletProvider => ({\n on: config.on,\n removeListener: config.removeListener,\n request: config.request ?? (() => Promise.resolve(undefined)),\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"test-layer.js","sourceRoot":"","sources":["../../src/testing-kit/test-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-layer.js","sourceRoot":"","sources":["../../src/testing-kit/test-layer.ts"],"names":[],"mappings":"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","sourcesContent":["import { FetchHttpClient } from \"@effect/platform\";\nimport { Layer } from \"effect\";\nimport { mainnet } from \"viem/chains\";\nimport type { BalanceService } from \"@/src/balance/index.js\";\nimport { BalanceServiceLive } from \"@/src/balance/index.js\";\nimport type { BlockService } from \"@/src/block/index.js\";\nimport { BlockServiceLive } from \"@/src/block/index.js\";\nimport type { ContractPipeline, ContractReader, ContractWriter } from \"@/src/contract/index.js\";\nimport {\n ContractPipelineLive,\n ContractReaderLive,\n ContractWriterLive,\n} from \"@/src/contract/index.js\";\nimport type { PublicClientService, WalletClientService } from \"@/src/core/index.js\";\nimport type { DeployService } from \"@/src/deploy/index.js\";\nimport { DeployServiceLive } from \"@/src/deploy/index.js\";\nimport type { EnsResolver } from \"@/src/ens/index.js\";\nimport { EnsResolverLive } from \"@/src/ens/index.js\";\nimport type { Erc721Service } from \"@/src/erc721/index.js\";\nimport { Erc721ServiceLive } from \"@/src/erc721/index.js\";\nimport type { EventStream, ReliableEventStream } from \"@/src/events/index.js\";\nimport { EventStreamLive, ReliableEventStreamLive } from \"@/src/events/index.js\";\nimport type { GasService } from \"@/src/gas/index.js\";\nimport { GasServiceLive } from \"@/src/gas/index.js\";\nimport type { NonceService } from \"@/src/nonce/index.js\";\nimport { NonceServiceLive } from \"@/src/nonce/index.js\";\nimport type { SignatureService } from \"@/src/signature/index.js\";\nimport { SignatureServiceLive } from \"@/src/signature/index.js\";\nimport type { SimulationService } from \"@/src/simulation/index.js\";\nimport { SimulationServiceLive } from \"@/src/simulation/index.js\";\nimport type { SubscriptionService } from \"@/src/subscriptions/index.js\";\nimport { SubscriptionServiceLive } from \"@/src/subscriptions/index.js\";\nimport type { MockBalanceServiceConfig } from \"@/src/testing-kit/mock-balance-service.js\";\nimport { makeMockBalanceServiceLayer } from \"@/src/testing-kit/mock-balance-service.js\";\nimport type { MockBlockServiceConfig } from \"@/src/testing-kit/mock-block-service.js\";\nimport { makeMockBlockServiceLayer } from \"@/src/testing-kit/mock-block-service.js\";\nimport type { MockDeployServiceConfig } from \"@/src/testing-kit/mock-deploy-service.js\";\nimport { makeMockDeployServiceLayer } from \"@/src/testing-kit/mock-deploy-service.js\";\nimport type { MockErc721ServiceConfig } from \"@/src/testing-kit/mock-erc721-service.js\";\nimport { makeMockErc721ServiceLayer } from \"@/src/testing-kit/mock-erc721-service.js\";\nimport type { MockGasServiceConfig } from \"@/src/testing-kit/mock-gas-service.js\";\nimport { makeMockGasServiceLayer } from \"@/src/testing-kit/mock-gas-service.js\";\nimport type { MockNonceServiceConfig } from \"@/src/testing-kit/mock-nonce-service.js\";\nimport { makeMockNonceServiceLayer } from \"@/src/testing-kit/mock-nonce-service.js\";\nimport type { MockPublicClientConfig } from \"@/src/testing-kit/mock-public-client.js\";\nimport { makeMockPublicClientLayer } from \"@/src/testing-kit/mock-public-client.js\";\nimport type { MockSignatureServiceConfig } from \"@/src/testing-kit/mock-signature-service.js\";\nimport { makeMockSignatureServiceLayer } from \"@/src/testing-kit/mock-signature-service.js\";\nimport type { MockSimulationServiceConfig } from \"@/src/testing-kit/mock-simulation-service.js\";\nimport { makeMockSimulationServiceLayer } from \"@/src/testing-kit/mock-simulation-service.js\";\nimport type { MockSubscriptionServiceConfig } from \"@/src/testing-kit/mock-subscription-service.js\";\nimport { makeMockSubscriptionServiceLayer } from \"@/src/testing-kit/mock-subscription-service.js\";\nimport type { MockWalletClientConfig } from \"@/src/testing-kit/mock-wallet-client.js\";\nimport { makeMockWalletClientLayer } from \"@/src/testing-kit/mock-wallet-client.js\";\nimport type { TxManager, TxReplacement } from \"@/src/tx/index.js\";\nimport { TxManagerLive, TxReplacementLive } from \"@/src/tx/index.js\";\n\n/**\n * Configuration for the test layer composer\n *\n * @example\n * ```typescript\n * const layer = makeEffectEvmTestLayer({\n * publicClient: {\n * readContract: async () => 1000n,\n * getEnsAddress: async () => \"0x...\",\n * },\n * walletClient: {\n * writeContract: async () => \"0xtxhash...\",\n * },\n * erc721Service: {\n * ownerOf: () => Effect.succeed(\"0x...\" as Address),\n * },\n * });\n * ```\n */\nexport type TestLayerConfig = {\n /**\n * Configuration overrides for the mock PublicClient\n */\n publicClient?: MockPublicClientConfig;\n\n /**\n * Configuration overrides for the mock WalletClient\n */\n walletClient?: MockWalletClientConfig;\n\n /**\n * Configuration overrides for the mock BalanceService\n */\n balanceService?: MockBalanceServiceConfig;\n\n /**\n * Configuration overrides for the mock BlockService\n */\n blockService?: MockBlockServiceConfig;\n\n /**\n * Configuration overrides for the mock Erc721Service\n */\n erc721Service?: MockErc721ServiceConfig;\n\n /**\n * Configuration overrides for the mock GasService\n */\n gasService?: MockGasServiceConfig;\n\n /**\n * Configuration overrides for the mock NonceService\n */\n nonceService?: MockNonceServiceConfig;\n\n /**\n * Configuration overrides for the mock SignatureService\n */\n signatureService?: MockSignatureServiceConfig;\n\n /**\n * Configuration overrides for the mock SubscriptionService\n */\n subscriptionService?: MockSubscriptionServiceConfig;\n\n /**\n * Configuration overrides for the mock DeployService\n */\n deployService?: MockDeployServiceConfig;\n\n /**\n * Configuration overrides for the mock SimulationService\n */\n simulationService?: MockSimulationServiceConfig;\n\n /**\n * The chainId to support (default: 1 mainnet)\n */\n chainId?: number;\n};\n\n/**\n * Internal layer combining all application services\n * Requires PublicClientService and WalletClientService to be provided\n *\n * Layer composition order matters:\n * 1. Base services (directly client-bound, no service deps)\n * 2. Dependent services (require base services, e.g. Balance uses ContractReader, Deploy uses TxManager)\n * 3. High-level services (ContractPipeline, ReliableEventStream, Simulation)\n */\nconst baseServices = Layer.mergeAll(\n BlockServiceLive,\n ContractReaderLive,\n ContractWriterLive,\n GasServiceLive,\n NonceServiceLive,\n SignatureServiceLive,\n SubscriptionServiceLive,\n EventStreamLive,\n EnsResolverLive\n);\n\nconst txServices = Layer.provideMerge(\n TxManagerLive,\n Layer.provideMerge(TxReplacementLive, baseServices)\n);\n\nconst applicationServices = Layer.provideMerge(\n Layer.mergeAll(\n BalanceServiceLive,\n ContractPipelineLive,\n DeployServiceLive,\n Erc721ServiceLive,\n ReliableEventStreamLive,\n SimulationServiceLive\n ),\n txServices\n).pipe(Layer.provide(FetchHttpClient.layer));\n\n/**\n * Creates a complete effect-evm test layer with mocked boundaries\n *\n * This layer provides all effect-evm services with mocked PublicClientService\n * and WalletClientService boundaries. The mock boundaries use sensible defaults\n * that can be overridden via configuration.\n *\n * Use this for integration-style tests where you want real service implementations\n * with controlled network boundaries.\n *\n * @param config - Optional configuration to customize mock behaviors\n * @returns A Layer providing all effect-evm services\n *\n * @example\n * ```typescript\n * import { describe, expect, it } from \"@effect/vitest\";\n * import { Effect, Layer } from \"effect\";\n * import { ContractReader } from \"effect-evm\";\n * import { makeEffectEvmTestLayer } from \"effect-evm/testing-kit\";\n *\n * describe(\"MyFeature\", () => {\n * const testLayer = makeEffectEvmTestLayer({\n * publicClient: {\n * readContract: async () => 1000n,\n * },\n * });\n *\n * it.effect(\"reads contract value\", () =>\n * Effect.gen(function* () {\n * const reader = yield* ContractReader;\n * const result = yield* reader.read({ ... });\n * expect(result).toBe(1000n);\n * }).pipe(Effect.provide(testLayer))\n * );\n * });\n * ```\n */\nexport function makeEffectEvmTestLayer(\n config: TestLayerConfig = {}\n): Layer.Layer<\n | PublicClientService\n | WalletClientService\n | BalanceService\n | BlockService\n | ContractReader\n | ContractWriter\n | ContractPipeline\n | TxManager\n | TxReplacement\n | EventStream\n | ReliableEventStream\n | EnsResolver\n | Erc721Service\n | GasService\n | NonceService\n | SignatureService\n | SubscriptionService\n | DeployService\n | SimulationService\n> {\n const chainId = config.chainId ?? mainnet.id;\n\n // Create boundary mocks - use real services if no config provided\n const clientLayers = Layer.mergeAll(\n makeMockPublicClientLayer(config.publicClient ?? {}, chainId),\n makeMockWalletClientLayer(config.walletClient ?? {}, chainId)\n );\n\n // Create service mocks if config is provided, otherwise use real implementations from applicationServices\n let serviceMockLayer = Layer.empty;\n\n if (config.balanceService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockBalanceServiceLayer(config.balanceService, chainId)\n );\n }\n if (config.blockService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockBlockServiceLayer(config.blockService, chainId)\n );\n }\n if (config.erc721Service) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockErc721ServiceLayer(config.erc721Service, chainId)\n );\n }\n if (config.gasService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockGasServiceLayer(config.gasService, chainId)\n );\n }\n if (config.nonceService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockNonceServiceLayer(config.nonceService, chainId)\n );\n }\n if (config.signatureService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockSignatureServiceLayer(config.signatureService)\n );\n }\n if (config.subscriptionService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockSubscriptionServiceLayer(config.subscriptionService, chainId)\n );\n }\n if (config.deployService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockDeployServiceLayer(config.deployService, chainId)\n );\n }\n if (config.simulationService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockSimulationServiceLayer(config.simulationService, chainId)\n );\n }\n\n // Provide boundary mocks and service mocks to application services\n const baseLayer = Layer.provideMerge(applicationServices, clientLayers);\n\n return Layer.merge(baseLayer, serviceMockLayer) as Layer.Layer<\n | PublicClientService\n | WalletClientService\n | BalanceService\n | BlockService\n | ContractReader\n | ContractWriter\n | ContractPipeline\n | TxManager\n | TxReplacement\n | EventStream\n | ReliableEventStream\n | EnsResolver\n | Erc721Service\n | GasService\n | NonceService\n | SignatureService\n | SubscriptionService\n | DeployService\n | SimulationService\n >;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./service.js\";\n"]}
@@ -1,28 +1,25 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
2
  import type { Address, Hash, TransactionReceipt } from "viem";
3
3
  import type { ClientNotFoundError, WrongNetworkError } from "../core/index.js";
4
- import { InsufficientFundsError, PublicClientService, ReceiptTimeoutError, TransactionFailedError, UserRejectedError, WalletClientService, WalletNotConnectedError } from "../core/index.js";
5
- export type TransferOverrides = {
6
- readonly gas?: bigint;
7
- readonly gasPrice?: bigint;
8
- readonly maxFeePerGas?: bigint;
9
- readonly maxPriorityFeePerGas?: bigint;
10
- readonly nonce?: number;
11
- };
4
+ import { InsufficientFundsError, PublicClientService, ReceiptTimeoutError, TxFailedError, UserRejectedError, WalletClientService, WalletNotConnectedError } from "../core/index.js";
5
+ import type { GasPriceUnavailableError } from "../gas/index.js";
6
+ import { GasService } from "../gas/index.js";
7
+ import type { TxOverrides } from "../types/index.js";
8
+ export type TransferOverrides = TxOverrides;
12
9
  export type TransferServiceShape = {
13
10
  readonly send: (params: {
14
11
  chainId: number;
15
12
  to: Address;
16
13
  value: bigint;
17
14
  overrides?: TransferOverrides;
18
- }) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TransactionFailedError>;
15
+ }) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError | GasPriceUnavailableError>;
19
16
  readonly sendAndWait: (params: {
20
17
  chainId: number;
21
18
  to: Address;
22
19
  value: bigint;
23
20
  confirmations?: number;
24
21
  overrides?: TransferOverrides;
25
- }) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TransactionFailedError | ReceiptTimeoutError>;
22
+ }) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError | ReceiptTimeoutError | GasPriceUnavailableError>;
26
23
  readonly estimateGas: (params: {
27
24
  chainId: number;
28
25
  to: Address;
@@ -32,6 +29,6 @@ export type TransferServiceShape = {
32
29
  declare const TransferService_base: Context.TagClass<TransferService, "ew3/TransferService", TransferServiceShape>;
33
30
  export declare class TransferService extends TransferService_base {
34
31
  }
35
- export declare const TransferServiceLive: Layer.Layer<TransferService, never, PublicClientService | WalletClientService>;
32
+ export declare const TransferServiceLive: Layer.Layer<TransferService, never, PublicClientService | WalletClientService | GasService>;
36
33
  export {};
37
34
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAgB,MAAM,MAAM,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EACL,sBAAsB,EAGtB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,IAAI,EACF,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,sBAAsB,CACzB,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,kBAAkB,EAChB,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,CACtB,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD,CAAC;;AAEF,qBAAa,eAAgB,SAAQ,oBAGlC;CAAG;AA8BN,eAAO,MAAM,mBAAmB,gFAmJ/B,CAAC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAgB,MAAM,MAAM,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EACL,sBAAsB,EAGtB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE5C,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,IAAI,EACF,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,wBAAwB,CAC3B,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,kBAAkB,EAChB,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,mBAAmB,GACnB,wBAAwB,CAC3B,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD,CAAC;;AAEF,qBAAa,eAAgB,SAAQ,oBAGlC;CAAG;AA8BN,eAAO,MAAM,mBAAmB,6FAwK/B,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
2
  import { MIN_TX_GAS } from "../constants/index.js";
3
- import { InsufficientFundsError, isInsufficientFunds, isUserRejection, PublicClientService, ReceiptTimeoutError, TransactionFailedError, UserRejectedError, WalletClientService, WalletNotConnectedError, } from "../core/index.js";
3
+ import { InsufficientFundsError, isInsufficientFunds, isUserRejection, PublicClientService, ReceiptTimeoutError, TxFailedError, UserRejectedError, WalletClientService, WalletNotConnectedError, } from "../core/index.js";
4
+ import { GasService } from "../gas/index.js";
5
+ import { deriveFeeOverrides, deriveTxType } from "../tx/index.js";
4
6
  export class TransferService extends Context.Tag("ew3/TransferService")() {
5
7
  }
6
8
  const classifyTransferError = (error, to) => {
@@ -16,7 +18,7 @@ const classifyTransferError = (error, to) => {
16
18
  required: "0",
17
19
  });
18
20
  }
19
- return new TransactionFailedError({
21
+ return new TxFailedError({
20
22
  cause: error,
21
23
  hash: "0x",
22
24
  message: error instanceof Error ? error.message : `Failed to send transfer to ${to}`,
@@ -25,6 +27,7 @@ const classifyTransferError = (error, to) => {
25
27
  export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(function* () {
26
28
  const walletClientService = yield* WalletClientService;
27
29
  const publicClientService = yield* PublicClientService;
30
+ const gasService = yield* GasService;
28
31
  return TransferService.of({
29
32
  estimateGas: Effect.fn("TransferService.estimateGas")(function* (params) {
30
33
  const publicClient = yield* publicClientService.get(params.chainId);
@@ -51,15 +54,23 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
51
54
  message: "No account connected",
52
55
  }));
53
56
  }
54
- const useLegacy = params.overrides?.gasPrice !== undefined;
57
+ const txType = yield* deriveTxType({
58
+ chainId: params.chainId,
59
+ userOverrides: params.overrides,
60
+ }).pipe(Effect.provideService(GasService, gasService));
61
+ const feeOverrides = yield* deriveFeeOverrides({
62
+ chainId: params.chainId,
63
+ userOverrides: params.overrides,
64
+ }).pipe(Effect.provideService(GasService, gasService));
65
+ const isLegacy = txType === "legacy";
55
66
  return yield* Effect.tryPromise({
56
67
  catch: (error) => classifyTransferError(error, params.to),
57
- try: () => useLegacy
68
+ try: () => isLegacy
58
69
  ? walletClient.sendTransaction({
59
70
  account,
60
71
  chain: null,
61
72
  gas: params.overrides?.gas,
62
- gasPrice: params.overrides?.gasPrice,
73
+ gasPrice: feeOverrides.gasPrice,
63
74
  nonce: params.overrides?.nonce,
64
75
  to: params.to,
65
76
  type: "legacy",
@@ -69,8 +80,8 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
69
80
  account,
70
81
  chain: null,
71
82
  gas: params.overrides?.gas,
72
- maxFeePerGas: params.overrides?.maxFeePerGas,
73
- maxPriorityFeePerGas: params.overrides?.maxPriorityFeePerGas,
83
+ maxFeePerGas: feeOverrides.maxFeePerGas,
84
+ maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,
74
85
  nonce: params.overrides?.nonce,
75
86
  to: params.to,
76
87
  type: "eip1559",
@@ -94,15 +105,23 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
94
105
  message: "No account connected",
95
106
  }));
96
107
  }
97
- const useLegacy = params.overrides?.gasPrice !== undefined;
108
+ const txType = yield* deriveTxType({
109
+ chainId: params.chainId,
110
+ userOverrides: params.overrides,
111
+ }).pipe(Effect.provideService(GasService, gasService));
112
+ const feeOverrides = yield* deriveFeeOverrides({
113
+ chainId: params.chainId,
114
+ userOverrides: params.overrides,
115
+ }).pipe(Effect.provideService(GasService, gasService));
116
+ const isLegacy = txType === "legacy";
98
117
  const hash = yield* Effect.tryPromise({
99
118
  catch: (error) => classifyTransferError(error, params.to),
100
- try: () => useLegacy
119
+ try: () => isLegacy
101
120
  ? walletClient.sendTransaction({
102
121
  account,
103
122
  chain: null,
104
123
  gas: params.overrides?.gas,
105
- gasPrice: params.overrides?.gasPrice,
124
+ gasPrice: feeOverrides.gasPrice,
106
125
  nonce: params.overrides?.nonce,
107
126
  to: params.to,
108
127
  type: "legacy",
@@ -112,8 +131,8 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
112
131
  account,
113
132
  chain: null,
114
133
  gas: params.overrides?.gas,
115
- maxFeePerGas: params.overrides?.maxFeePerGas,
116
- maxPriorityFeePerGas: params.overrides?.maxPriorityFeePerGas,
134
+ maxFeePerGas: feeOverrides.maxFeePerGas,
135
+ maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,
117
136
  nonce: params.overrides?.nonce,
118
137
  to: params.to,
119
138
  type: "eip1559",
@@ -129,7 +148,7 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
129
148
  timeout: 30_000,
130
149
  });
131
150
  }
132
- return new TransactionFailedError({
151
+ return new TxFailedError({
133
152
  cause: error,
134
153
  hash,
135
154
  message: `Failed to wait for transaction ${hash}`,
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type { Address, Hash, TransactionReceipt, WalletClient } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type { ClientNotFoundError, WrongNetworkError } from \"@/src/core/index.js\";\nimport {\n InsufficientFundsError,\n isInsufficientFunds,\n isUserRejection,\n PublicClientService,\n ReceiptTimeoutError,\n TxFailedError,\n UserRejectedError,\n WalletClientService,\n WalletNotConnectedError,\n} from \"@/src/core/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport { deriveFeeOverrides, deriveTxType } from \"@/src/tx/index.js\";\nimport type { TxOverrides } from \"@/src/types/index.js\";\n\nexport type TransferOverrides = TxOverrides;\n\nexport type TransferServiceShape = {\n readonly send: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n Hash,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n | GasPriceUnavailableError\n >;\n\n readonly sendAndWait: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n confirmations?: number;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n TransactionReceipt,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n | ReceiptTimeoutError\n | GasPriceUnavailableError\n >;\n\n readonly estimateGas: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n }) => Effect.Effect<bigint, ClientNotFoundError>;\n};\n\nexport class TransferService extends Context.Tag(\"ew3/TransferService\")<\n TransferService,\n TransferServiceShape\n>() {}\n\n/**\n * Classify transfer errors into appropriate error types\n */\nconst classifyTransferError = (\n error: unknown,\n to: Address\n): InsufficientFundsError | UserRejectedError | TxFailedError => {\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the transaction\",\n });\n }\n\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\",\n message: error instanceof Error ? error.message : \"Insufficient funds for transfer\",\n required: \"0\",\n });\n }\n\n return new TxFailedError({\n cause: error,\n hash: \"0x\",\n message: error instanceof Error ? error.message : `Failed to send transfer to ${to}`,\n });\n};\n\nexport const TransferServiceLive = Layer.effect(\n TransferService,\n Effect.gen(function* () {\n const walletClientService = yield* WalletClientService;\n const publicClientService = yield* PublicClientService;\n const gasService = yield* GasService;\n\n return TransferService.of({\n estimateGas: Effect.fn(\"TransferService.estimateGas\")(function* (params) {\n const publicClient = yield* publicClientService.get(params.chainId);\n\n // Try to estimate, fallback to standard transfer gas on failure\n return yield* Effect.tryPromise({\n catch: () => MIN_TX_GAS,\n try: () =>\n publicClient.estimateGas({\n to: params.to,\n value: params.value,\n }),\n }).pipe(Effect.catchAll(() => Effect.succeed(MIN_TX_GAS)));\n }),\n\n send: Effect.fn(\"TransferService.send\")(function* (params) {\n const walletClient = yield* walletClientService.get(params.chainId);\n const [account] = yield* Effect.tryPromise({\n catch: () =>\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account found\",\n }),\n try: () => walletClient.getAddresses(),\n });\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account connected\",\n })\n );\n }\n\n // Get derived tx type and fees\n const txType = yield* deriveTxType({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const isLegacy = txType === \"legacy\";\n\n return yield* Effect.tryPromise({\n catch: (error) => classifyTransferError(error, params.to),\n try: () =>\n isLegacy\n ? (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n gasPrice: feeOverrides.gasPrice,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"legacy\",\n value: params.value,\n })\n : (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"eip1559\",\n value: params.value,\n }),\n });\n }),\n\n sendAndWait: Effect.fn(\"TransferService.sendAndWait\")(function* (params) {\n const walletClient = yield* walletClientService.get(params.chainId);\n const publicClient = yield* publicClientService.get(params.chainId);\n const [account] = yield* Effect.tryPromise({\n catch: () =>\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account found\",\n }),\n try: () => walletClient.getAddresses(),\n });\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account connected\",\n })\n );\n }\n\n // Get derived tx type and fees\n const txType = yield* deriveTxType({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const isLegacy = txType === \"legacy\";\n\n const hash = yield* Effect.tryPromise({\n catch: (error) => classifyTransferError(error, params.to),\n try: () =>\n isLegacy\n ? (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n gasPrice: feeOverrides.gasPrice,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"legacy\",\n value: params.value,\n })\n : (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"eip1559\",\n value: params.value,\n }),\n });\n\n return yield* Effect.tryPromise({\n catch: (error) => {\n if (error instanceof Error && error.message.includes(\"timeout\")) {\n return new ReceiptTimeoutError({\n hash,\n message: `Transaction receipt timeout for ${hash}`,\n timeout: 30_000,\n });\n }\n return new TxFailedError({\n cause: error,\n hash,\n message: `Failed to wait for transaction ${hash}`,\n });\n },\n try: () =>\n publicClient.waitForTransactionReceipt({\n confirmations: params.confirmations,\n hash,\n }),\n });\n }),\n });\n })\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiB5C,eAAO,MAAM,YAAY,GAAI,QAAQ;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,KAAG,MAAM,CAAC,MAAM,CACf,WAAW,CAAC,MAAM,CAAC,EACnB,wBAAwB,GAAG,mBAAmB,EAC9C,UAAU,CAkBR,CAAC;AAEL,eAAO,MAAM,kBAAkB,GAAI,QAAQ;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,GAAG,mBAAmB,EAAE,UAAU,CAwCtF,CAAC"}
1
+ {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiB5C,eAAO,MAAM,YAAY,GAAI,QAAQ;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,KAAG,MAAM,CAAC,MAAM,CACf,WAAW,CAAC,MAAM,CAAC,EACnB,wBAAwB,GAAG,mBAAmB,EAC9C,UAAU,CAsBR,CAAC;AAEL,eAAO,MAAM,kBAAkB,GAAI,QAAQ;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,GAAG,mBAAmB,EAAE,UAAU,CAwCtF,CAAC"}
package/dist/tx/fees.js CHANGED
@@ -8,6 +8,9 @@ export const deriveTxType = (params) => Effect.gen(function* () {
8
8
  if (userOverrides?.type) {
9
9
  return userOverrides.type;
10
10
  }
11
+ if (params.policy?.txType) {
12
+ return params.policy.txType;
13
+ }
11
14
  if (userOverrides?.gasPrice !== undefined) {
12
15
  return "legacy";
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,GAAuB,EAAU,EAAE,CAC7D,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAEjD,MAAM,oBAAoB,GAAG,CAC3B,SAAkC,EAGlC,EAAE,CAAC,SAAS,EAAE,QAAQ,KAAK,SAAS,CAAC;AAEvC,MAAM,qBAAqB,GAAG,CAC5B,SAAkC,EAGlC,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,SAAS,CAAC;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAI5B,EAIC,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAE3C,IAAI,aAAa,EAAE,IAAI,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;IACrC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;QACxD,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChD,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAIlC,EAA2F,EAAE,CAC5F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAE3C,IAAI,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;SACzD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;IACrC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;QACxD,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,EAAE,QAAQ;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACvF,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,4BAA4B,GAAG,GAAG,CACtC,QAAQ,CAAC,oBAAoB,EAC7B,MAAM,EAAE,oBAAoB,CAC7B,CAAC;IAEF,MAAM,oBAAoB,GACxB,aAAa,EAAE,oBAAoB,IAAI,4BAA4B,CAAC;IAEtE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAChD,CAAC,CAAC,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport type { FeeOverrides, TxOverrides } from \"@/src/types/index.js\";\nimport type { TxPolicy } from \"./policy.js\";\n\nconst cap = (value: bigint, max: bigint | undefined): bigint =>\n max !== undefined && value > max ? max : value;\n\nconst hasLegacyFeeOverride = (\n overrides: TxOverrides | undefined\n): overrides is TxOverrides & {\n gasPrice: bigint;\n} => overrides?.gasPrice !== undefined;\n\nconst hasEip1559FeeOverride = (\n overrides: TxOverrides | undefined\n): overrides is TxOverrides & {\n maxFeePerGas: bigint;\n} => overrides?.maxFeePerGas !== undefined;\n\nexport const deriveTxType = (params: {\n chainId: number;\n policy?: TxPolicy | undefined;\n userOverrides?: TxOverrides | undefined;\n}): Effect.Effect<\n TxOverrides[\"type\"],\n GasPriceUnavailableError | ClientNotFoundError,\n GasService\n> =>\n Effect.gen(function* () {\n const userOverrides = params.userOverrides;\n\n if (userOverrides?.type) {\n return userOverrides.type;\n }\n\n if (params.policy?.txType) {\n return params.policy.txType;\n }\n\n if (userOverrides?.gasPrice !== undefined) {\n return \"legacy\";\n }\n\n const gasService = yield* GasService;\n const supportsEip1559 = yield* gasService.supportsEip1559({\n chainId: params.chainId,\n });\n return supportsEip1559 ? \"eip1559\" : \"legacy\";\n });\n\nexport const deriveFeeOverrides = (params: {\n chainId: number;\n policy?: TxPolicy | undefined;\n userOverrides?: TxOverrides | undefined;\n}): Effect.Effect<FeeOverrides, GasPriceUnavailableError | ClientNotFoundError, GasService> =>\n Effect.gen(function* () {\n const policy = params.policy;\n const userOverrides = params.userOverrides;\n\n if (hasLegacyFeeOverride(userOverrides)) {\n return { gasPrice: userOverrides.gasPrice };\n }\n\n if (hasEip1559FeeOverride(userOverrides)) {\n return {\n maxFeePerGas: userOverrides.maxFeePerGas,\n maxPriorityFeePerGas: userOverrides.maxPriorityFeePerGas,\n };\n }\n\n const gasService = yield* GasService;\n const supportsEip1559 = yield* gasService.supportsEip1559({\n chainId: params.chainId,\n });\n const estimate = yield* gasService.estimateFees({\n chainId: params.chainId,\n speed: policy?.feeSpeed,\n });\n\n if (!supportsEip1559) {\n const gasPrice = cap(estimate.gasPrice ?? estimate.maxFeePerGas, policy?.maxFeePerGas);\n return { gasPrice };\n }\n\n const maxFeePerGas = cap(estimate.maxFeePerGas, policy?.maxFeePerGas);\n const computedMaxPriorityFeePerGas = cap(\n estimate.maxPriorityFeePerGas,\n policy?.maxPriorityFeePerGas\n );\n\n const maxPriorityFeePerGas =\n userOverrides?.maxPriorityFeePerGas ?? computedMaxPriorityFeePerGas;\n\n return { maxFeePerGas, maxPriorityFeePerGas };\n });\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./fees.js\";\nexport * from \"./manager.js\";\nexport * from \"./policy.js\";\nexport * from \"./replacement.js\";\nexport * from \"./tracker.js\";\n"]}
@@ -2,13 +2,13 @@ import type { Scope, SubscriptionRef } from "effect";
2
2
  import { Context, Effect, Layer } from "effect";
3
3
  import type { Hash, TransactionReceipt } from "viem";
4
4
  import type { ClientNotFoundError } from "../core/index.js";
5
- import { PublicClientService, ReceiptTimeoutError, TransactionFailedError, TransactionReplacedError, TransportError } from "../core/index.js";
5
+ import { PublicClientService, ReceiptTimeoutError, TransportError, TxFailedError, TxReplacedError } from "../core/index.js";
6
6
  import type { TxPolicy } from "./policy.js";
7
7
  import { TxReplacement } from "./replacement.js";
8
8
  import type { TxState } from "./tracker.js";
9
9
  export type TxManagerShape = {
10
10
  readonly track: (chainId: number, hash: Hash, policy?: TxPolicy) => Effect.Effect<SubscriptionRef.SubscriptionRef<TxState>, ClientNotFoundError, Scope.Scope>;
11
- readonly waitForReceipt: (chainId: number, hash: Hash, timeoutOrPolicy?: number | TxPolicy) => Effect.Effect<TransactionReceipt, TransactionFailedError | ReceiptTimeoutError | TransactionReplacedError | ClientNotFoundError>;
11
+ readonly waitForReceipt: (chainId: number, hash: Hash, timeoutOrPolicy?: number | TxPolicy) => Effect.Effect<TransactionReceipt, TxFailedError | ReceiptTimeoutError | TxReplacedError | ClientNotFoundError>;
12
12
  readonly getConfirmations: (chainId: number, params: {
13
13
  hash: Hash;
14
14
  } | {
@@ -18,6 +18,7 @@ export type TxManagerShape = {
18
18
  declare const TxManager_base: Context.TagClass<TxManager, "ew3/TxManager", TxManagerShape>;
19
19
  export declare class TxManager extends TxManager_base {
20
20
  }
21
+ export declare function makeTxManagerLive(layerPolicy?: TxPolicy): Layer.Layer<TxManager, never, PublicClientService | TxReplacement>;
21
22
  export declare const TxManagerLive: Layer.Layer<TxManager, never, PublicClientService | TxReplacement>;
22
23
  export {};
23
24
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tx/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAS,OAAO,EAAE,MAAM,EAAS,KAAK,EAAe,MAAM,QAAQ,CAAC;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,mBAAmB,EAAgC,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,cAAc,GAAG;IAI3B,QAAQ,CAAC,KAAK,EAAE,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,QAAQ,KACd,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAK/F,QAAQ,CAAC,cAAc,EAAE,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,eAAe,CAAC,EAAE,MAAM,GAAG,QAAQ,KAChC,MAAM,CAAC,MAAM,CAChB,kBAAkB,EAClB,sBAAsB,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,mBAAmB,CAC9F,CAAC;IAKF,QAAQ,CAAC,gBAAgB,EAAE,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,kBAAkB,EAAE,kBAAkB,CAAA;KAAE,KAChE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAAC,CAAC;CAClE,CAAC;;AAEF,qBAAa,SAAU,SAAQ,cAAyD;CAAG;AAE3F,eAAO,MAAM,aAAa,oEAoTzB,CAAC"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tx/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAS,OAAO,EAAE,MAAM,EAAS,KAAK,EAAe,MAAM,QAAQ,CAAC;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,qBAAqB,CAAC;AACpF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,cAAc,GAAG;IAI3B,QAAQ,CAAC,KAAK,EAAE,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,QAAQ,KACd,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAK/F,QAAQ,CAAC,cAAc,EAAE,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,eAAe,CAAC,EAAE,MAAM,GAAG,QAAQ,KAChC,MAAM,CAAC,MAAM,CAChB,kBAAkB,EAClB,aAAa,GAAG,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,CAC5E,CAAC;IAKF,QAAQ,CAAC,gBAAgB,EAAE,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,kBAAkB,EAAE,kBAAkB,CAAA;KAAE,KAChE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAAC,CAAC;CAClE,CAAC;;AAEF,qBAAa,SAAU,SAAQ,cAAyD;CAAG;AAE3F,wBAAgB,iBAAiB,CAC/B,WAAW,CAAC,EAAE,QAAQ,GACrB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,mBAAmB,GAAG,aAAa,CAAC,CAqUpE;AAED,eAAO,MAAM,aAAa,oEAAsB,CAAC"}