@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
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/signature/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CACF;CAAG;AAEJ,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CACF;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CACpF,uBAAuB,EACvB;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CACF;CAAG"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/signature/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CACF;CAAG;AAEJ,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB;IACE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CACF;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CACpF,uBAAuB,EACvB;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\nexport class SignatureVerificationError extends Schema.TaggedError<SignatureVerificationError>()(\n \"SignatureVerificationError\",\n {\n cause: Schema.optional(Schema.Unknown),\n message: Schema.String,\n signature: Schema.String,\n }\n) {}\n\nexport class SignatureRecoveryError extends Schema.TaggedError<SignatureRecoveryError>()(\n \"SignatureRecoveryError\",\n {\n cause: Schema.optional(Schema.Unknown),\n message: Schema.String,\n signature: Schema.String,\n }\n) {}\n\nexport class InvalidSignatureError extends Schema.TaggedError<InvalidSignatureError>()(\n \"InvalidSignatureError\",\n {\n message: Schema.String,\n signature: Schema.String,\n }\n) {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signature/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signature/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC","sourcesContent":["export * from \"./errors.js\";\nexport * from \"./service.js\";\nexport * from \"./utils.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/signature/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/signature/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type {\n Address,\n HashTypedDataParameters,\n Hex,\n RecoverTypedDataAddressParameters,\n SignableMessage,\n TypedData,\n VerifyTypedDataParameters,\n} from \"viem\";\nimport {\n hashMessage,\n hashTypedData,\n recoverMessageAddress,\n recoverTypedDataAddress,\n verifyMessage,\n verifyTypedData,\n} from \"viem\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport {\n InvalidSignatureError,\n SignatureRecoveryError,\n SignatureVerificationError,\n} from \"./errors.js\";\nimport { constructSignature, extractSignatureComponents, isValidSignature } from \"./utils.js\";\n\nconst toSignableMessage = (message: string | Uint8Array): SignableMessage =>\n typeof message === \"string\" ? message : { raw: message };\n\nexport type SignatureServiceShape = {\n readonly verifyMessage: (params: {\n address: Address;\n message: string | Uint8Array;\n signature: Hex;\n }) => Effect.Effect<boolean, SignatureVerificationError>;\n\n readonly verifyTypedData: <\n const TTypedData extends TypedData | Record<string, unknown>,\n TPrimaryType extends keyof TTypedData | \"EIP712Domain\",\n >(\n params: VerifyTypedDataParameters<TTypedData, TPrimaryType>\n ) => Effect.Effect<boolean, SignatureVerificationError>;\n\n readonly recoverAddress: (params: {\n message: string | Uint8Array;\n signature: Hex;\n }) => Effect.Effect<Address, SignatureRecoveryError>;\n\n readonly recoverTypedDataAddress: <\n const TTypedData extends TypedData | Record<string, unknown>,\n TPrimaryType extends keyof TTypedData | \"EIP712Domain\",\n >(\n params: RecoverTypedDataAddressParameters<TTypedData, TPrimaryType>\n ) => Effect.Effect<Address, SignatureRecoveryError>;\n\n readonly splitSignature: (signature: Hex) => Effect.Effect<\n {\n r: Hex;\n s: Hex;\n v: bigint;\n },\n InvalidSignatureError\n >;\n\n readonly joinSignature: (params: { r: Hex; s: Hex; v: bigint }) => Effect.Effect<Hex, never>;\n\n readonly hashMessage: (message: string | Uint8Array) => Effect.Effect<Hex, never>;\n\n readonly hashTypedData: <\n const TTypedData extends TypedData | Record<string, unknown>,\n TPrimaryType extends keyof TTypedData | \"EIP712Domain\",\n >(\n params: HashTypedDataParameters<TTypedData, TPrimaryType>\n ) => Effect.Effect<Hex, never>;\n};\n\nexport class SignatureService extends Context.Tag(\"ew3/SignatureService\")<\n SignatureService,\n SignatureServiceShape\n>() {}\n\nexport const SignatureServiceLive = Layer.succeed(\n SignatureService,\n SignatureService.of({\n hashMessage: (message) =>\n Effect.succeed(hashMessage(toSignableMessage(message))).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_HASH_MESSAGE, {\n attributes: {},\n })\n ),\n\n hashTypedData: (params) =>\n Effect.succeed(hashTypedData(params)).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_HASH_TYPED_DATA, {\n attributes: {\n primaryType: String(params.primaryType),\n },\n })\n ),\n\n joinSignature: (params) =>\n Effect.succeed(constructSignature(params)).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_JOIN, {\n attributes: {},\n })\n ),\n\n recoverAddress: (params) =>\n Effect.gen(function* () {\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new SignatureRecoveryError({\n cause,\n message: `Failed to recover address from message signature: ${cause}`,\n signature: params.signature,\n }),\n try: () =>\n recoverMessageAddress({\n message: toSignableMessage(params.message),\n signature: params.signature,\n }),\n });\n }).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_RECOVER_ADDRESS, {\n attributes: {},\n })\n ),\n\n recoverTypedDataAddress: (params) =>\n Effect.gen(function* () {\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new SignatureRecoveryError({\n cause,\n message: `Failed to recover address from typed data signature: ${cause}`,\n signature:\n typeof params.signature === \"string\" ? params.signature : String(params.signature),\n }),\n try: () => recoverTypedDataAddress(params),\n });\n }).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_RECOVER_TYPED_DATA_ADDRESS, {\n attributes: {\n primaryType: String(params.primaryType),\n },\n })\n ),\n\n splitSignature: (signature) =>\n Effect.gen(function* () {\n if (!isValidSignature(signature)) {\n return yield* Effect.fail(\n new InvalidSignatureError({\n message: `Invalid signature format: expected 65 bytes (0x + 130 hex chars), got ${signature.length / 2 - 1} bytes`,\n signature,\n })\n );\n }\n\n return extractSignatureComponents(signature);\n }).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_SPLIT, {\n attributes: {},\n })\n ),\n verifyMessage: (params) =>\n (isValidSignature(params.signature)\n ? Effect.tryPromise({\n catch: (cause) =>\n new SignatureVerificationError({\n cause,\n message: `Failed to verify message signature: ${cause}`,\n signature: params.signature,\n }),\n try: () =>\n verifyMessage({\n address: params.address,\n message: toSignableMessage(params.message),\n signature: params.signature,\n }),\n }).pipe(Effect.catchAll(() => Effect.succeed(false)))\n : Effect.succeed(false)\n ).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_VERIFY_MESSAGE, {\n attributes: {\n address: params.address,\n },\n })\n ),\n\n verifyTypedData: (params) =>\n (typeof params.signature === \"string\" && !isValidSignature(params.signature as Hex)\n ? Effect.succeed(false)\n : Effect.tryPromise({\n catch: (cause) =>\n new SignatureVerificationError({\n cause,\n message: `Failed to verify typed data signature: ${cause}`,\n signature:\n typeof params.signature === \"string\"\n ? params.signature\n : String(params.signature),\n }),\n try: () => verifyTypedData(params),\n }).pipe(Effect.catchAll(() => Effect.succeed(false)))\n ).pipe(\n Effect.withSpan(SpanNames.SIGNATURE_VERIFY_TYPED_DATA, {\n attributes: {\n address: params.address,\n primaryType: String(params.primaryType),\n },\n })\n ),\n })\n);\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=service.test.integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.test.integration.d.ts","sourceRoot":"","sources":["../../src/signature/service.test.integration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,179 @@
1
+ import { describe, expect, it } from "@effect/vitest";
2
+ import { Cause, Effect, Exit } from "effect";
3
+ import { privateKeyToAccount } from "viem/accounts";
4
+ import { mainnet } from "viem/chains";
5
+ import { InvalidSignatureError, SignatureService, SignatureServiceLive, } from "../signature/index.js";
6
+ describe("SignatureService", () => {
7
+ const testLayer = SignatureServiceLive;
8
+ const account = privateKeyToAccount("0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef");
9
+ describe("hashMessage", () => {
10
+ it.effect("returns hash for string message", () => Effect.gen(function* () {
11
+ const service = yield* SignatureService;
12
+ const result = yield* service.hashMessage("Hello, world!");
13
+ expect(result).toBeDefined();
14
+ expect(result.startsWith("0x")).toBe(true);
15
+ }).pipe(Effect.provide(testLayer)));
16
+ it.effect("returns hash for Uint8Array message", () => Effect.gen(function* () {
17
+ const service = yield* SignatureService;
18
+ const message = new Uint8Array([72, 101, 108, 108, 111]);
19
+ const result = yield* service.hashMessage(message);
20
+ expect(result).toBeDefined();
21
+ expect(result.startsWith("0x")).toBe(true);
22
+ }).pipe(Effect.provide(testLayer)));
23
+ });
24
+ describe("hashTypedData", () => {
25
+ it.effect("returns hash for typed data", () => Effect.gen(function* () {
26
+ const service = yield* SignatureService;
27
+ const result = yield* service.hashTypedData({
28
+ domain: {
29
+ chainId: mainnet.id,
30
+ name: "Test",
31
+ },
32
+ message: {
33
+ test: "value",
34
+ },
35
+ primaryType: "Test",
36
+ types: {
37
+ Test: [{ name: "test", type: "string" }],
38
+ },
39
+ });
40
+ expect(result).toBeDefined();
41
+ expect(result.startsWith("0x")).toBe(true);
42
+ }).pipe(Effect.provide(testLayer)));
43
+ });
44
+ describe("splitSignature", () => {
45
+ it.effect("splits valid signature into r, s, v components", () => Effect.gen(function* () {
46
+ const service = yield* SignatureService;
47
+ const signature = "0x1234567890123456789012345678901234567890123456789012345678901234abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd1b";
48
+ const result = yield* service.splitSignature(signature);
49
+ expect(result.r).toBeDefined();
50
+ expect(result.s).toBeDefined();
51
+ expect(result.v).toBeDefined();
52
+ expect(result.r.startsWith("0x")).toBe(true);
53
+ expect(result.s.startsWith("0x")).toBe(true);
54
+ expect(typeof result.v).toBe("bigint");
55
+ }).pipe(Effect.provide(testLayer)));
56
+ it.effect("fails with InvalidSignatureError for invalid signature", () => Effect.gen(function* () {
57
+ const service = yield* SignatureService;
58
+ const exit = yield* Effect.exit(service.splitSignature("0xinvalid"));
59
+ expect(Exit.isFailure(exit)).toBe(true);
60
+ if (Exit.isFailure(exit)) {
61
+ const error = Cause.failureOption(exit.cause);
62
+ if (error._tag === "Some") {
63
+ expect(error.value).toBeInstanceOf(InvalidSignatureError);
64
+ }
65
+ }
66
+ }).pipe(Effect.provide(testLayer)));
67
+ });
68
+ describe("joinSignature", () => {
69
+ it.effect("joins r, s, v into signature", () => Effect.gen(function* () {
70
+ const service = yield* SignatureService;
71
+ const result = yield* service.joinSignature({
72
+ r: "0x1234567890123456789012345678901234567890123456789012345678901234",
73
+ s: "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd",
74
+ v: 27n,
75
+ });
76
+ expect(result).toBeDefined();
77
+ expect(result.startsWith("0x")).toBe(true);
78
+ expect(result.length).toBe(132);
79
+ }).pipe(Effect.provide(testLayer)));
80
+ });
81
+ describe("verifyMessage", () => {
82
+ it.effect("returns true for valid signature", () => Effect.gen(function* () {
83
+ const service = yield* SignatureService;
84
+ const message = "Hello, world!";
85
+ const signature = yield* Effect.promise(() => account.signMessage({
86
+ message,
87
+ }));
88
+ const result = yield* service.verifyMessage({
89
+ address: account.address,
90
+ message,
91
+ signature,
92
+ });
93
+ expect(result).toBe(true);
94
+ }).pipe(Effect.provide(testLayer)));
95
+ it.effect("returns false for invalid signature", () => Effect.gen(function* () {
96
+ const service = yield* SignatureService;
97
+ const result = yield* service.verifyMessage({
98
+ address: account.address,
99
+ message: "Hello, world!",
100
+ signature: "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
101
+ });
102
+ expect(result).toBe(false);
103
+ }).pipe(Effect.provide(testLayer)));
104
+ });
105
+ describe("verifyTypedData", () => {
106
+ it.effect("returns true for valid typed data signature", () => Effect.gen(function* () {
107
+ const service = yield* SignatureService;
108
+ const domain = {
109
+ chainId: mainnet.id,
110
+ name: "Test",
111
+ };
112
+ const types = {
113
+ Test: [{ name: "test", type: "string" }],
114
+ };
115
+ const message = {
116
+ test: "value",
117
+ };
118
+ const signature = yield* Effect.promise(() => account.signTypedData({
119
+ domain,
120
+ message,
121
+ primaryType: "Test",
122
+ types,
123
+ }));
124
+ const result = yield* service.verifyTypedData({
125
+ address: account.address,
126
+ domain,
127
+ message,
128
+ primaryType: "Test",
129
+ signature,
130
+ types,
131
+ });
132
+ expect(result).toBe(true);
133
+ }).pipe(Effect.provide(testLayer)));
134
+ });
135
+ describe("recoverAddress", () => {
136
+ it.effect("recovers address from message signature", () => Effect.gen(function* () {
137
+ const service = yield* SignatureService;
138
+ const message = "Hello, world!";
139
+ const signature = yield* Effect.promise(() => account.signMessage({
140
+ message,
141
+ }));
142
+ const result = yield* service.recoverAddress({
143
+ message,
144
+ signature,
145
+ });
146
+ expect(result).toBe(account.address);
147
+ }).pipe(Effect.provide(testLayer)));
148
+ });
149
+ describe("recoverTypedDataAddress", () => {
150
+ it.effect("recovers address from typed data signature", () => Effect.gen(function* () {
151
+ const service = yield* SignatureService;
152
+ const domain = {
153
+ chainId: mainnet.id,
154
+ name: "Test",
155
+ };
156
+ const types = {
157
+ Test: [{ name: "test", type: "string" }],
158
+ };
159
+ const message = {
160
+ test: "value",
161
+ };
162
+ const signature = yield* Effect.promise(() => account.signTypedData({
163
+ domain,
164
+ message,
165
+ primaryType: "Test",
166
+ types,
167
+ }));
168
+ const result = yield* service.recoverTypedDataAddress({
169
+ domain,
170
+ message,
171
+ primaryType: "Test",
172
+ signature,
173
+ types,
174
+ });
175
+ expect(result).toBe(account.address);
176
+ }).pipe(Effect.provide(testLayer)));
177
+ });
178
+ });
179
+ //# sourceMappingURL=service.test.integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/signature/service.test.integration.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"@effect/vitest\";\nimport { Cause, Effect, Exit } from \"effect\";\nimport type { Hex } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { mainnet } from \"viem/chains\";\nimport {\n InvalidSignatureError,\n SignatureService,\n SignatureServiceLive,\n} from \"@/src/signature/index.js\";\n\ndescribe(\"SignatureService\", () => {\n const testLayer = SignatureServiceLive;\n const account = privateKeyToAccount(\n \"0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\" as Hex\n );\n\n describe(\"hashMessage\", () => {\n it.effect(\"returns hash for string message\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const result = yield* service.hashMessage(\"Hello, world!\");\n\n expect(result).toBeDefined();\n expect(result.startsWith(\"0x\")).toBe(true);\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"returns hash for Uint8Array message\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const message = new Uint8Array([72, 101, 108, 108, 111]); // \"Hello\"\n const result = yield* service.hashMessage(message);\n\n expect(result).toBeDefined();\n expect(result.startsWith(\"0x\")).toBe(true);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"hashTypedData\", () => {\n it.effect(\"returns hash for typed data\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const result = yield* service.hashTypedData({\n domain: {\n chainId: mainnet.id,\n name: \"Test\",\n },\n message: {\n test: \"value\",\n },\n primaryType: \"Test\",\n types: {\n Test: [{ name: \"test\", type: \"string\" }],\n },\n });\n\n expect(result).toBeDefined();\n expect(result.startsWith(\"0x\")).toBe(true);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"splitSignature\", () => {\n it.effect(\"splits valid signature into r, s, v components\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const signature =\n \"0x1234567890123456789012345678901234567890123456789012345678901234abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd1b\" as Hex;\n\n const result = yield* service.splitSignature(signature);\n\n expect(result.r).toBeDefined();\n expect(result.s).toBeDefined();\n expect(result.v).toBeDefined();\n expect(result.r.startsWith(\"0x\")).toBe(true);\n expect(result.s.startsWith(\"0x\")).toBe(true);\n expect(typeof result.v).toBe(\"bigint\");\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"fails with InvalidSignatureError for invalid signature\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const exit = yield* Effect.exit(service.splitSignature(\"0xinvalid\" as Hex));\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(InvalidSignatureError);\n }\n }\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"joinSignature\", () => {\n it.effect(\"joins r, s, v into signature\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const result = yield* service.joinSignature({\n r: \"0x1234567890123456789012345678901234567890123456789012345678901234\" as Hex,\n s: \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Hex,\n v: 27n,\n });\n\n expect(result).toBeDefined();\n expect(result.startsWith(\"0x\")).toBe(true);\n expect(result.length).toBe(132); // 0x + 130 hex chars\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"verifyMessage\", () => {\n it.effect(\"returns true for valid signature\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const message = \"Hello, world!\";\n const signature = yield* Effect.promise(() =>\n account.signMessage({\n message,\n })\n );\n const result = yield* service.verifyMessage({\n address: account.address,\n message,\n signature,\n });\n\n expect(result).toBe(true);\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"returns false for invalid signature\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const result = yield* service.verifyMessage({\n address: account.address,\n message: \"Hello, world!\",\n signature:\n \"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\" as Hex,\n });\n\n expect(result).toBe(false);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"verifyTypedData\", () => {\n it.effect(\"returns true for valid typed data signature\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const domain = {\n chainId: mainnet.id,\n name: \"Test\",\n } as const;\n const types = {\n Test: [{ name: \"test\", type: \"string\" }],\n } as const;\n const message = {\n test: \"value\",\n } as const;\n\n const signature = yield* Effect.promise(() =>\n account.signTypedData({\n domain,\n message,\n primaryType: \"Test\",\n types,\n })\n );\n const result = yield* service.verifyTypedData({\n address: account.address,\n domain,\n message,\n primaryType: \"Test\",\n signature,\n types,\n });\n\n expect(result).toBe(true);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"recoverAddress\", () => {\n it.effect(\"recovers address from message signature\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const message = \"Hello, world!\";\n const signature = yield* Effect.promise(() =>\n account.signMessage({\n message,\n })\n );\n const result = yield* service.recoverAddress({\n message,\n signature,\n });\n\n expect(result).toBe(account.address);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"recoverTypedDataAddress\", () => {\n it.effect(\"recovers address from typed data signature\", () =>\n Effect.gen(function* () {\n const service = yield* SignatureService;\n const domain = {\n chainId: mainnet.id,\n name: \"Test\",\n } as const;\n const types = {\n Test: [{ name: \"test\", type: \"string\" }],\n } as const;\n const message = {\n test: \"value\",\n } as const;\n\n const signature = yield* Effect.promise(() =>\n account.signTypedData({\n domain,\n message,\n primaryType: \"Test\",\n types,\n })\n );\n const result = yield* service.recoverTypedDataAddress({\n domain,\n message,\n primaryType: \"Test\",\n signature,\n types,\n });\n\n expect(result).toBe(account.address);\n }).pipe(Effect.provide(testLayer))\n );\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/signature/utils.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAc,EAAW,EAAE;IAC1D,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,CAAC;AAChE,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAc,EAAiC,EAAE;IAC1F,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAS,CAAC;IACzC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAS,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAE7C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrB,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAqC,EAAO,EAAE;IAC/E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAS,CAAC;AACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/signature/utils.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAc,EAAW,EAAE;IAC1D,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,CAAC;AAChE,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAc,EAAiC,EAAE;IAC1F,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAS,CAAC;IACzC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAS,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAE7C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrB,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAqC,EAAO,EAAE;IAC/E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAS,CAAC;AACjC,CAAC,CAAC","sourcesContent":["import type { Hex } from \"viem\";\n\n/**\n * Validates if a hex string is a valid signature (65 bytes)\n */\nexport const isValidSignature = (signature: Hex): boolean => {\n return signature.startsWith(\"0x\") && signature.length === 132; // 0x + 130 hex chars = 65 bytes\n};\n\n/**\n * Extracts signature components without validation\n */\nexport const extractSignatureComponents = (signature: Hex): { r: Hex; s: Hex; v: bigint } => {\n const sig = signature.slice(2); // Remove 0x prefix\n const r = `0x${sig.slice(0, 64)}` as Hex;\n const s = `0x${sig.slice(64, 128)}` as Hex;\n const v = BigInt(`0x${sig.slice(128, 130)}`);\n\n return { r, s, v };\n};\n\n/**\n * Constructs signature from components\n */\nexport const constructSignature = (params: { r: Hex; s: Hex; v: bigint }): Hex => {\n const r = params.r.slice(2);\n const s = params.s.slice(2);\n const v = params.v.toString(16).padStart(2, \"0\");\n\n return `0x${r}${s}${v}` as Hex;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/simulation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE;IAC5F,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAAC,kBAAkB,EAAE;IAC/F,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,MAAM;CAC1B,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,CACF;CAAG;AAEJ,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,CACF;CAAG"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/simulation/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE;IAC5F,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAAC,kBAAkB,EAAE;IAC/F,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,MAAM;CAC1B,CAAC;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,CACF;CAAG;AAEJ,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CAC3C,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\nexport class SimulationError extends Schema.TaggedError<SimulationError>()(\"SimulationError\", {\n cause: Schema.optional(Schema.Unknown),\n message: Schema.String,\n}) {}\n\nexport class TenderlyApiError extends Schema.TaggedError<TenderlyApiError>()(\"TenderlyApiError\", {\n message: Schema.String,\n response: Schema.optional(Schema.Unknown),\n statusCode: Schema.Number,\n}) {}\n\nexport class TenderlyRateLimitError extends Schema.TaggedError<TenderlyRateLimitError>()(\n \"TenderlyRateLimitError\",\n {\n message: Schema.String,\n retryAfter: Schema.optional(Schema.Number),\n }\n) {}\n\nexport class TenderlyNotConfiguredError extends Schema.TaggedError<TenderlyNotConfiguredError>()(\n \"TenderlyNotConfiguredError\",\n {\n message: Schema.String,\n missingConfig: Schema.Array(Schema.String),\n }\n) {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC","sourcesContent":["export * from \"./errors.js\";\nexport * from \"./service.js\";\nexport * from \"./tenderly.js\";\nexport * from \"./types.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/simulation/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/simulation/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AASxD,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAQrD,SAAS,uBAAuB,CAAC,MAAwB;IACvD,OAAO;QACL,gBAAgB,CAAC,MAAM,CAAC;QACxB,aAAa,CAAC,MAAM,CAAC;QACrB,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAC3B,GAAG,sBAAsB,CAAC,MAAM,CAAC;QACjC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,GAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC;QACzC,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;KAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAwB;IAChD,OAAO,WAAW,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,aAAa,CAAC,MAAwB;IAC7C,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,OAAO,QAAQ,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,UAAU,GAAG,CAAC;AACzG,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAwB;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAwB;IACtD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;YAC9B,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,IAA8B;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,EAAE,EAAE,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAwC;IACpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,EAAE,EAAE,kBAAkB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IACrE,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,KAAK,2BAA2B,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,SAAS,oBAAoB,CAAC,IAAe,EAAE,MAAc;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,OAAO;QACL,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,QAAQ,EAAE;QACvE,GAAG,MAAM,UAAU,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE;KAClF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAuB,EACvB,QAA0C,EAC1C,MAAc;IAEd,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO;IACT,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAuB,EAAE,KAA2B;IAC9E,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgC;IACxD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM;QACR,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AA4BD,MAAM,OAAO,iBAAkB,SAAQ,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAGxE;CAAG;AAEN,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAC/C,iBAAiB,EACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IAChD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEzE,OAAO;QACL,kBAAkB,EAAE,CAAC,MAAwB,EAAE,IAAU,EAAE,EAAE,CAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEpD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CACnB,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAC3B,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE;YAC7C,UAAU,EAAE;gBACV,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE;gBAC3B,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;aAChC;SACF,CAAC,CACH;QAEH,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CACzB,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,CACjC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,0BAA0B,EAAE;YACpD,UAAU,EAAE;gBACV,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;aAC7C;SACF,CAAC,CACH;KACJ,CAAC;AACJ,CAAC,CAAC,CACH,CAAC","sourcesContent":["import { HttpClient } from \"@effect/platform\";\nimport { Context, Effect, Layer } from \"effect\";\nimport type { Abi, Address, Hex } from \"viem\";\nimport { formatEther } from \"viem\";\nimport { formatPercent } from \"@/src/internal/index.js\";\nimport type {\n SimulationError,\n SimulationResult,\n StateOverride,\n TenderlyApiError,\n TenderlyNotConfiguredError,\n TenderlyRateLimitError,\n} from \"@/src/simulation/index.js\";\nimport { simulateBundleTenderly, simulateTenderly } from \"@/src/simulation/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\n\ntype TenderlyErrors =\n | SimulationError\n | TenderlyApiError\n | TenderlyNotConfiguredError\n | TenderlyRateLimitError;\n\nfunction formatSimulationSummary(result: SimulationResult): string {\n return [\n formatStatusLine(result),\n formatGasLine(result),\n ...formatErrorLines(result),\n ...formatReturnValueLines(result),\n ...formatLogsLines(result.logs),\n ...formatStateDiffLines(result.stateDiff),\n ...formatTraceLines(result.trace),\n ].join(\"\\n\");\n}\n\nfunction formatStatusLine(result: SimulationResult): string {\n return `Status: ${result.success ? \"✓ Success\" : \"✗ Failed\"}`;\n}\n\nfunction formatGasLine(result: SimulationResult): string {\n const gasPercent =\n result.gasLimit > 0n ? formatPercent(Number(result.gasUsed) / Number(result.gasLimit)) : \"0%\";\n return `Gas: ${result.gasUsed.toLocaleString()} / ${result.gasLimit.toLocaleString()} (${gasPercent})`;\n}\n\nfunction formatErrorLines(result: SimulationResult): readonly string[] {\n const lines: string[] = [];\n if (result.error) {\n lines.push(`Error: ${result.error}`);\n }\n if (result.revertReason) {\n lines.push(`Revert Reason: ${result.revertReason}`);\n }\n return lines;\n}\n\nfunction formatReturnValueLines(result: SimulationResult): readonly string[] {\n return result.returnValue ? [`Return Value: ${result.returnValue}`] : [];\n}\n\nfunction formatLogArgValue(value: unknown): string {\n if (typeof value === \"bigint\") {\n if (value > 1000000000000000n) {\n return `${formatEther(value)} ETH`;\n }\n return value.toLocaleString();\n }\n return String(value);\n}\n\nfunction formatLogsLines(logs: SimulationResult[\"logs\"]): readonly string[] {\n if (logs.length === 0) {\n return [];\n }\n\n const lines: string[] = [\"\", `Events (${logs.length}):`];\n for (const [i, log] of logs.entries()) {\n const index = i + 1;\n if (log.decoded) {\n lines.push(` ${index}. ${log.decoded.eventName}`);\n for (const [key, value] of Object.entries(log.decoded.args)) {\n lines.push(` ${key}: ${formatLogArgValue(value)}`);\n }\n continue;\n }\n\n lines.push(` ${index}. Log at ${log.address}`);\n lines.push(` Topics: ${log.topics.length}`);\n }\n\n return lines;\n}\n\nfunction formatStateDiffLines(stateDiff: SimulationResult[\"stateDiff\"]): readonly string[] {\n if (stateDiff.length === 0) {\n return [];\n }\n\n const byAddress = new Map<Address, number>();\n for (const diff of stateDiff) {\n byAddress.set(diff.address, (byAddress.get(diff.address) ?? 0) + 1);\n }\n\n const lines: string[] = [\"\", `State Changes (${stateDiff.length}):`];\n for (const [address, count] of byAddress) {\n lines.push(` ${address}: ${count} storage slot(s) modified`);\n }\n return lines;\n}\n\ntype Trace = NonNullable<SimulationResult[\"trace\"]>;\ntype TraceCall = Trace[number];\ntype TraceStackItem = { readonly call: TraceCall; readonly indent: number };\n\nfunction formatTraceCallLines(call: TraceCall, indent: number): readonly string[] {\n const spaces = \" \".repeat(indent);\n const valueStr = call.value > 0n ? ` {${formatEther(call.value)} ETH}` : \"\";\n const errorStr = call.error ? ` [ERROR: ${call.error}]` : \"\";\n\n return [\n `${spaces}${call.type} ${call.from} → ${call.to}${valueStr}${errorStr}`,\n `${spaces} Gas: ${call.gasUsed.toLocaleString()} / ${call.gas.toLocaleString()}`,\n ];\n}\n\nfunction pushTraceChildren(\n stack: TraceStackItem[],\n children: readonly TraceCall[] | undefined,\n indent: number\n): void {\n if (!children || children.length === 0) {\n return;\n }\n\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (child) {\n stack.push({ call: child, indent });\n }\n }\n}\n\nfunction pushTraceRootCalls(stack: TraceStackItem[], trace: readonly TraceCall[]): void {\n for (let i = trace.length - 1; i >= 0; i--) {\n const call = trace[i];\n if (call) {\n stack.push({ call, indent: 2 });\n }\n }\n}\n\nfunction formatTraceLines(trace: SimulationResult[\"trace\"]): readonly string[] {\n if (!trace || trace.length === 0) {\n return [];\n }\n\n const lines: string[] = [\"\", \"Call Trace:\"];\n const stack: TraceStackItem[] = [];\n pushTraceRootCalls(stack, trace);\n\n while (stack.length > 0) {\n const item = stack.pop();\n if (!item) {\n break;\n }\n lines.push(...formatTraceCallLines(item.call, item.indent));\n pushTraceChildren(stack, item.call.calls, item.indent + 2);\n }\n\n return lines;\n}\n\nexport type SimulationServiceShape = {\n readonly simulate: (params: {\n chainId: number;\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n gas?: bigint;\n blockNumber?: bigint;\n stateOverrides?: StateOverride[];\n }) => Effect.Effect<SimulationResult, TenderlyErrors>;\n\n readonly simulateBundle: (params: {\n chainId: number;\n transactions: Array<{\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n }>;\n blockNumber?: bigint;\n }) => Effect.Effect<SimulationResult[], TenderlyErrors>;\n\n readonly getReadableSummary: (result: SimulationResult, abi?: Abi) => Effect.Effect<string>;\n};\n\nexport class SimulationService extends Context.Tag(\"ew3/SimulationService\")<\n SimulationService,\n SimulationServiceShape\n>() {}\n\nexport const SimulationServiceLive = Layer.effect(\n SimulationService,\n Effect.gen(function* () {\n const httpClient = yield* HttpClient.HttpClient;\n const httpClientLayer = Layer.succeed(HttpClient.HttpClient, httpClient);\n\n return {\n getReadableSummary: (result: SimulationResult, _abi?: Abi) =>\n Effect.sync(() => formatSimulationSummary(result)),\n\n simulate: (params) =>\n simulateTenderly(params).pipe(\n Effect.provide(httpClientLayer),\n Effect.withSpan(SpanNames.SIMULATION_SIMULATE, {\n attributes: {\n chainId: params.chainId,\n from: params.from,\n gas: params.gas?.toString(),\n to: params.to,\n value: params.value?.toString(),\n },\n })\n ),\n\n simulateBundle: (params) =>\n simulateBundleTenderly(params).pipe(\n Effect.provide(httpClientLayer),\n Effect.withSpan(SpanNames.SIMULATION_SIMULATE_BUNDLE, {\n attributes: {\n chainId: params.chainId,\n transactionCount: params.transactions.length,\n },\n })\n ),\n };\n })\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tenderly.js","sourceRoot":"","sources":["../../src/simulation/tenderly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenderly.js","sourceRoot":"","sources":["../../src/simulation/tenderly.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpClient, HttpClientRequest, HttpClientResponse } from \"@effect/platform\";\nimport { Config, Effect, Schema } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport {\n SimulationError,\n TenderlyApiError,\n TenderlyNotConfiguredError,\n TenderlyRateLimitError,\n} from \"@/src/simulation/index.js\";\nimport type { SimulationResult, StateOverride, TraceCall } from \"@/src/simulation/types.ts\";\n\ntype TenderlySimulationRequest = {\n network_id: string;\n from: Address;\n to: Address;\n input?: Hex;\n value?: string;\n gas?: number;\n gas_price?: string;\n block_number?: number;\n state_objects?: Record<\n Address,\n {\n balance?: string;\n code?: Hex;\n nonce?: number;\n storage?: Record<Hex, Hex>;\n }\n >;\n save?: boolean;\n save_if_fails?: boolean;\n simulation_type?: \"quick\" | \"full\";\n};\n\ntype TenderlySimulationResponse = {\n transaction: {\n hash: Hex;\n block_number: number;\n block_hash: Hex;\n from: Address;\n to: Address;\n gas: number;\n gas_price: string;\n gas_used: number;\n cumulative_gas_used: number;\n input: Hex;\n output?: Hex;\n nonce: number;\n value: string;\n status: boolean;\n error_message?: string;\n };\n simulation: {\n id: string;\n status: boolean;\n };\n logs: Array<{\n address: Address;\n topics: Hex[];\n data: Hex;\n name?: string;\n anonymous?: boolean;\n inputs?: Array<{\n name: string;\n type: string;\n value: unknown;\n }>;\n }>;\n trace?: Array<{\n type: string;\n from: Address;\n to: Address;\n value: string;\n gas: number;\n gas_used: number;\n input: Hex;\n output?: Hex;\n error?: string;\n calls?: unknown[];\n }>;\n state_diff?: Array<{\n address: Address;\n soltype?: {\n name: string;\n type: string;\n };\n original: Hex;\n dirty: Hex;\n raw: Array<{\n key: Hex;\n original: Hex;\n dirty: Hex;\n }>;\n }>;\n};\n\nconst getTenderlyConfig = Effect.gen(function* () {\n const accessKey = yield* Config.string(\"TENDERLY_ACCESS_KEY\").pipe(\n Effect.catchAll(() => Effect.succeed(undefined))\n );\n const account = yield* Config.string(\"TENDERLY_ACCOUNT\").pipe(\n Effect.catchAll(() => Effect.succeed(undefined))\n );\n const project = yield* Config.string(\"TENDERLY_PROJECT\").pipe(\n Effect.catchAll(() => Effect.succeed(undefined))\n );\n\n const missing: string[] = [];\n if (!accessKey) {\n missing.push(\"TENDERLY_ACCESS_KEY\");\n }\n if (!account) {\n missing.push(\"TENDERLY_ACCOUNT\");\n }\n if (!project) {\n missing.push(\"TENDERLY_PROJECT\");\n }\n\n if (missing.length > 0) {\n return yield* Effect.fail(\n new TenderlyNotConfiguredError({\n message: `Missing Tenderly configuration: ${missing.join(\", \")}`,\n missingConfig: missing,\n })\n );\n }\n\n return {\n accessKey: accessKey as string,\n account: account as string,\n project: project as string,\n };\n});\n\nfunction mapTenderlyResponse(response: TenderlySimulationResponse): SimulationResult {\n const tx = response.transaction;\n\n return {\n error: tx.error_message,\n gasLimit: BigInt(tx.gas),\n gasUsed: BigInt(tx.gas_used),\n logs:\n response.logs?.map((log) => ({\n address: log.address,\n data: log.data,\n decoded: log.name\n ? {\n args:\n log.inputs?.reduce(\n (acc, input) => {\n acc[input.name] = input.value;\n return acc;\n },\n {} as Record<string, unknown>\n ) ?? {},\n eventName: log.name,\n }\n : undefined,\n topics: log.topics,\n })) ?? [],\n returnValue: tx.status ? (tx.output ?? response.trace?.[0]?.output) : undefined,\n revertReason: tx.error_message,\n stateDiff:\n response.state_diff?.flatMap((diff) =>\n diff.raw.map((raw) => ({\n address: diff.address,\n key: raw.key,\n modified: raw.dirty,\n original: raw.original,\n }))\n ) ?? [],\n success: tx.status,\n trace: response.trace ? mapTenderlyTrace(response.trace) : undefined,\n };\n}\n\nfunction mapTenderlyTrace(trace: TenderlySimulationResponse[\"trace\"]): TraceCall[] {\n if (!trace) {\n return [];\n }\n\n return trace.map((call) => ({\n calls: call.calls ? mapTenderlyTrace(call.calls as TenderlySimulationResponse[\"trace\"]) : [],\n error: call.error,\n from: call.from,\n gas: BigInt(call.gas),\n gasUsed: BigInt(call.gas_used),\n input: call.input,\n output: call.output,\n to: call.to,\n type: call.type.toUpperCase() as TraceCall[\"type\"],\n value: BigInt(call.value),\n }));\n}\n\nfunction parseRetryAfterSeconds(value: string | undefined): number | undefined {\n if (!value) {\n return;\n }\n\n const asSeconds = Number(value);\n if (Number.isFinite(asSeconds)) {\n return asSeconds;\n }\n\n const asDate = Date.parse(value);\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now();\n return deltaMs > 0 ? Math.ceil(deltaMs / 1000) : 0;\n }\n\n return;\n}\n\nfunction toTenderlyStateObjects(\n overrides: readonly StateOverride[] | undefined\n): TenderlySimulationRequest[\"state_objects\"] | undefined {\n if (!overrides || overrides.length === 0) {\n return;\n }\n\n const stateObjects: TenderlySimulationRequest[\"state_objects\"] = {};\n for (const override of overrides) {\n stateObjects[override.address] = {\n balance: override.balance?.toString(),\n code: override.code,\n nonce: override.nonce ? Number(override.nonce) : undefined,\n storage: override.state,\n };\n }\n\n return stateObjects;\n}\n\nfunction toTenderlyRequestBody(params: {\n chainId: number;\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n gas?: bigint;\n blockNumber?: bigint;\n stateOverrides?: StateOverride[];\n}): TenderlySimulationRequest {\n return {\n block_number: params.blockNumber ? Number(params.blockNumber) : undefined,\n from: params.from,\n gas: params.gas ? Number(params.gas) : undefined,\n input: params.data ?? \"0x\",\n network_id: params.chainId.toString(),\n save: false,\n save_if_fails: false,\n simulation_type: \"full\",\n state_objects: toTenderlyStateObjects(params.stateOverrides),\n to: params.to,\n value: params.value ? params.value.toString() : \"0\",\n };\n}\n\nfunction ensureTenderlyOk(response: HttpClientResponse.HttpClientResponse) {\n return Effect.gen(function* () {\n if (response.status === 429) {\n const retryAfter = parseRetryAfterSeconds(response.headers[\"retry-after\"]);\n return yield* Effect.fail(\n new TenderlyRateLimitError({\n message: \"Tenderly API rate limit exceeded\",\n retryAfter,\n })\n );\n }\n\n if (response.status < 200 || response.status >= 300) {\n const body = yield* response.json.pipe(Effect.catchAll(() => Effect.succeed(undefined)));\n return yield* Effect.fail(\n new TenderlyApiError({\n message: \"Tenderly API request failed\",\n response: body,\n statusCode: response.status,\n })\n );\n }\n });\n}\n\nexport function simulateTenderly(params: {\n chainId: number;\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n gas?: bigint;\n blockNumber?: bigint;\n stateOverrides?: StateOverride[];\n}) {\n return Effect.gen(function* () {\n const config = yield* getTenderlyConfig;\n const client = yield* HttpClient.HttpClient;\n\n const url = `https://api.tenderly.co/api/v1/account/${config.account}/project/${config.project}/simulate`;\n\n const requestBody = toTenderlyRequestBody(params);\n\n const request = yield* HttpClientRequest.post(url).pipe(\n HttpClientRequest.setHeader(\"X-Access-Key\", config.accessKey),\n HttpClientRequest.setHeader(\"Content-Type\", \"application/json\"),\n HttpClientRequest.bodyJson(requestBody),\n Effect.mapError(\n () =>\n new SimulationError({\n message: \"Failed to serialize request body\",\n })\n )\n );\n\n const response = yield* client.execute(request).pipe(\n Effect.mapError(\n (cause) =>\n new SimulationError({\n cause,\n message: \"Failed to execute Tenderly request\",\n })\n )\n );\n\n yield* ensureTenderlyOk(response);\n\n const body = yield* HttpClientResponse.schemaBodyJson(Schema.Unknown)(response).pipe(\n Effect.mapError(\n (cause) =>\n new SimulationError({\n cause,\n message: \"Failed to decode Tenderly response body\",\n })\n )\n );\n\n return mapTenderlyResponse(body as TenderlySimulationResponse);\n });\n}\n\nexport function simulateBundleTenderly(params: {\n chainId: number;\n transactions: Array<{\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n }>;\n blockNumber?: bigint;\n}) {\n return Effect.gen(function* () {\n // Tenderly doesn't have a native bundle simulation endpoint\n // We simulate each transaction sequentially with state carryover\n const results: SimulationResult[] = [];\n const stateOverrides: StateOverride[] = [];\n\n for (const tx of params.transactions) {\n const result = yield* simulateTenderly({\n blockNumber: params.blockNumber,\n chainId: params.chainId,\n data: tx.data,\n from: tx.from,\n stateOverrides,\n to: tx.to,\n value: tx.value,\n });\n\n results.push(result);\n\n // Carry state changes forward\n // This is a simplified approach - in production you'd want more sophisticated state tracking\n for (const diff of result.stateDiff) {\n const existingOverride = stateOverrides.find((o) => o.address === diff.address);\n if (existingOverride) {\n existingOverride.state = {\n ...existingOverride.state,\n [diff.key]: diff.modified,\n };\n } else {\n stateOverrides.push({\n address: diff.address,\n state: {\n [diff.key]: diff.modified,\n },\n });\n }\n }\n }\n\n return results;\n });\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tenderly.test.integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenderly.test.integration.d.ts","sourceRoot":"","sources":["../../src/simulation/tenderly.test.integration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,104 @@
1
+ import { HttpClient, HttpClientResponse } from "@effect/platform";
2
+ import { describe, expect, it } from "@effect/vitest";
3
+ import { ConfigProvider, Effect, Exit, Layer } from "effect";
4
+ import { mainnet } from "viem/chains";
5
+ import { simulateTenderly, TenderlyApiError, TenderlyRateLimitError, } from "../simulation/index.js";
6
+ const configProvider = ConfigProvider.fromMap(new Map([
7
+ ["TENDERLY_ACCESS_KEY", "test-access-key"],
8
+ ["TENDERLY_ACCOUNT", "test-account"],
9
+ ["TENDERLY_PROJECT", "test-project"],
10
+ ]));
11
+ const TEST_FROM = "0x1234567890123456789012345678901234567890";
12
+ const TEST_TO = "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd";
13
+ const makeMockHttpClientLayer = (params) => {
14
+ const client = {
15
+ execute: (request) => Effect.succeed(HttpClientResponse.fromWeb(request, new Response(JSON.stringify(params.body), {
16
+ headers: params.headers,
17
+ status: params.status,
18
+ }))),
19
+ };
20
+ return Layer.succeed(HttpClient.HttpClient, client);
21
+ };
22
+ describe("Tenderly simulation", () => {
23
+ it.effect("maps returnValue from transaction.output (not input)", () => Effect.gen(function* () {
24
+ const layer = makeMockHttpClientLayer({
25
+ body: {
26
+ logs: [],
27
+ simulation: { id: "sim_1", status: true },
28
+ transaction: {
29
+ block_hash: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
30
+ block_number: 123,
31
+ cumulative_gas_used: 21_000,
32
+ from: TEST_FROM,
33
+ gas: 50_000,
34
+ gas_price: "1",
35
+ gas_used: 21_000,
36
+ hash: "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
37
+ input: "0x1234",
38
+ nonce: 0,
39
+ output: "0xabcd",
40
+ status: true,
41
+ to: TEST_TO,
42
+ value: "0",
43
+ },
44
+ },
45
+ status: 200,
46
+ });
47
+ const result = yield* simulateTenderly({
48
+ chainId: mainnet.id,
49
+ from: TEST_FROM,
50
+ to: TEST_TO,
51
+ }).pipe(Effect.withConfigProvider(configProvider), Effect.provide(layer));
52
+ expect(result.success).toBe(true);
53
+ expect(result.returnValue).toBe("0xabcd");
54
+ }));
55
+ it.effect("fails 429 as TenderlyRateLimitError with retryAfter", () => Effect.gen(function* () {
56
+ const layer = makeMockHttpClientLayer({
57
+ body: { error: "rate limited" },
58
+ headers: { "Retry-After": "120" },
59
+ status: 429,
60
+ });
61
+ const exit = yield* simulateTenderly({
62
+ chainId: mainnet.id,
63
+ from: TEST_FROM,
64
+ to: TEST_TO,
65
+ })
66
+ .pipe(Effect.withConfigProvider(configProvider), Effect.provide(layer))
67
+ .pipe(Effect.exit);
68
+ expect(Exit.isFailure(exit)).toBe(true);
69
+ if (Exit.isFailure(exit)) {
70
+ expect(exit.cause._tag).toBe("Fail");
71
+ if (exit.cause._tag === "Fail") {
72
+ expect(exit.cause.error).toBeInstanceOf(TenderlyRateLimitError);
73
+ if (exit.cause.error instanceof TenderlyRateLimitError) {
74
+ expect(exit.cause.error.retryAfter).toBe(120);
75
+ }
76
+ }
77
+ }
78
+ }));
79
+ it.effect("fails non-2xx as TenderlyApiError with statusCode and response", () => Effect.gen(function* () {
80
+ const layer = makeMockHttpClientLayer({
81
+ body: { message: "bad" },
82
+ status: 500,
83
+ });
84
+ const exit = yield* simulateTenderly({
85
+ chainId: mainnet.id,
86
+ from: TEST_FROM,
87
+ to: TEST_TO,
88
+ })
89
+ .pipe(Effect.withConfigProvider(configProvider), Effect.provide(layer))
90
+ .pipe(Effect.exit);
91
+ expect(Exit.isFailure(exit)).toBe(true);
92
+ if (Exit.isFailure(exit)) {
93
+ expect(exit.cause._tag).toBe("Fail");
94
+ if (exit.cause._tag === "Fail") {
95
+ expect(exit.cause.error).toBeInstanceOf(TenderlyApiError);
96
+ if (exit.cause.error instanceof TenderlyApiError) {
97
+ expect(exit.cause.error.statusCode).toBe(500);
98
+ expect(exit.cause.error.response).toEqual({ message: "bad" });
99
+ }
100
+ }
101
+ }
102
+ }));
103
+ });
104
+ //# sourceMappingURL=tenderly.test.integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenderly.test.integration.js","sourceRoot":"","sources":["../../src/simulation/tenderly.test.integration.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HttpClientRequest } from \"@effect/platform\";\nimport { HttpClient, HttpClientResponse } from \"@effect/platform\";\nimport { describe, expect, it } from \"@effect/vitest\";\nimport { ConfigProvider, Effect, Exit, Layer } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport { mainnet } from \"viem/chains\";\nimport {\n simulateTenderly,\n TenderlyApiError,\n TenderlyRateLimitError,\n} from \"@/src/simulation/index.js\";\n\nconst configProvider = ConfigProvider.fromMap(\n new Map([\n [\"TENDERLY_ACCESS_KEY\", \"test-access-key\"],\n [\"TENDERLY_ACCOUNT\", \"test-account\"],\n [\"TENDERLY_PROJECT\", \"test-project\"],\n ])\n);\n\nconst TEST_FROM = \"0x1234567890123456789012345678901234567890\" as Address;\nconst TEST_TO = \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Address;\n\nconst makeMockHttpClientLayer = (params: {\n status: number;\n body: unknown;\n headers?: Record<string, string>;\n}) => {\n const client = {\n execute: (request: HttpClientRequest.HttpClientRequest) =>\n Effect.succeed(\n HttpClientResponse.fromWeb(\n request,\n new Response(JSON.stringify(params.body), {\n headers: params.headers,\n status: params.status,\n })\n )\n ),\n } as unknown as HttpClient.HttpClient;\n\n return Layer.succeed(HttpClient.HttpClient, client);\n};\n\ndescribe(\"Tenderly simulation\", () => {\n it.effect(\"maps returnValue from transaction.output (not input)\", () =>\n Effect.gen(function* () {\n const layer = makeMockHttpClientLayer({\n body: {\n logs: [],\n simulation: { id: \"sim_1\", status: true },\n transaction: {\n block_hash: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n block_number: 123,\n cumulative_gas_used: 21_000,\n from: TEST_FROM,\n gas: 50_000,\n gas_price: \"1\",\n gas_used: 21_000,\n hash: \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n input: \"0x1234\",\n nonce: 0,\n output: \"0xabcd\",\n status: true,\n to: TEST_TO,\n value: \"0\",\n },\n },\n status: 200,\n });\n\n const result = yield* simulateTenderly({\n chainId: mainnet.id,\n from: TEST_FROM,\n to: TEST_TO,\n }).pipe(Effect.withConfigProvider(configProvider), Effect.provide(layer));\n\n expect(result.success).toBe(true);\n expect(result.returnValue).toBe(\"0xabcd\" as Hex);\n })\n );\n\n it.effect(\"fails 429 as TenderlyRateLimitError with retryAfter\", () =>\n Effect.gen(function* () {\n const layer = makeMockHttpClientLayer({\n body: { error: \"rate limited\" },\n headers: { \"Retry-After\": \"120\" },\n status: 429,\n });\n\n const exit = yield* simulateTenderly({\n chainId: mainnet.id,\n from: TEST_FROM,\n to: TEST_TO,\n })\n .pipe(Effect.withConfigProvider(configProvider), Effect.provide(layer))\n .pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n expect(exit.cause._tag).toBe(\"Fail\");\n if (exit.cause._tag === \"Fail\") {\n expect(exit.cause.error).toBeInstanceOf(TenderlyRateLimitError);\n if (exit.cause.error instanceof TenderlyRateLimitError) {\n expect(exit.cause.error.retryAfter).toBe(120);\n }\n }\n }\n })\n );\n\n it.effect(\"fails non-2xx as TenderlyApiError with statusCode and response\", () =>\n Effect.gen(function* () {\n const layer = makeMockHttpClientLayer({\n body: { message: \"bad\" },\n status: 500,\n });\n\n const exit = yield* simulateTenderly({\n chainId: mainnet.id,\n from: TEST_FROM,\n to: TEST_TO,\n })\n .pipe(Effect.withConfigProvider(configProvider), Effect.provide(layer))\n .pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n expect(exit.cause._tag).toBe(\"Fail\");\n if (exit.cause._tag === \"Fail\") {\n expect(exit.cause.error).toBeInstanceOf(TenderlyApiError);\n if (exit.cause.error instanceof TenderlyApiError) {\n expect(exit.cause.error.statusCode).toBe(500);\n expect(exit.cause.error.response).toEqual({ message: \"bad\" });\n }\n }\n }\n })\n );\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/simulation/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/simulation/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Address, Hex } from \"viem\";\n\nexport type SimulatedLog = {\n address: Address;\n topics: Hex[];\n data: Hex;\n decoded?: {\n eventName: string;\n args: Record<string, unknown>;\n };\n};\n\nexport type StateDiff = {\n address: Address;\n key: Hex;\n original: Hex;\n modified: Hex;\n};\n\nexport type TraceCall = {\n type: \"CALL\" | \"DELEGATECALL\" | \"STATICCALL\" | \"CREATE\" | \"CREATE2\";\n from: Address;\n to: Address;\n value: bigint;\n gas: bigint;\n gasUsed: bigint;\n input: Hex;\n output?: Hex;\n error?: string;\n calls?: TraceCall[];\n};\n\nexport type SimulationResult = {\n success: boolean;\n gasUsed: bigint;\n gasLimit: bigint;\n returnValue?: Hex;\n error?: string;\n revertReason?: string;\n logs: SimulatedLog[];\n stateDiff: StateDiff[];\n trace?: TraceCall[];\n};\n\nexport type StateOverride = {\n address: Address;\n balance?: bigint;\n nonce?: bigint;\n code?: Hex;\n state?: Record<Hex, Hex>;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"block-subscription.js","sourceRoot":"","sources":["../../src/subscriptions/block-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,WAAW,CACzB,mBAA6C,EAC7C,MAIC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,iBAAiB,CAAkC;YAChE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,IAAI,wBAAwB,CAAC;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,uCAAuC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;gBAClF,gBAAgB,EAAE,QAAQ;aAC3B,CAAC;YACJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACZ,MAAM,CAAC,WAAW,CAAC;gBACjB,WAAW,EAAE,IAAI;gBACjB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK;gBACxD,OAAO,EAAE,EAAE,CAAC,MAAM;gBAClB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,EAAE;QACnD,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK;YACxD,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"block-subscription.js","sourceRoot":"","sources":["../../src/subscriptions/block-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,WAAW,CACzB,mBAA6C,EAC7C,MAIC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,iBAAiB,CAAkC;YAChE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,IAAI,wBAAwB,CAAC;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,uCAAuC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;gBAClF,gBAAgB,EAAE,QAAQ;aAC3B,CAAC;YACJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACZ,MAAM,CAAC,WAAW,CAAC;gBACjB,WAAW,EAAE,IAAI;gBACjB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK;gBACxD,OAAO,EAAE,EAAE,CAAC,MAAM;gBAClB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,EAAE;QACnD,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,KAAK;YACxD,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport type { Block } from \"viem\";\nimport type { PublicClientServiceShape } from \"@/src/core/index.js\";\nimport { fromWatchCallback } from \"@/src/internal/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport { SubscriptionDroppedError } from \"./errors.js\";\n\nexport function watchBlocks(\n publicClientService: PublicClientServiceShape,\n params: {\n chainId: number;\n includeTransactions?: boolean;\n pollingInterval?: number;\n }\n) {\n return Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n const stream = fromWatchCallback<Block, SubscriptionDroppedError>({\n mapError: (error) =>\n new SubscriptionDroppedError({\n chainId: params.chainId,\n message: `Block subscription dropped on chain ${params.chainId}: ${String(error)}`,\n subscriptionType: \"blocks\",\n }),\n watch: (cb) =>\n client.watchBlocks({\n emitOnBegin: true,\n includeTransactions: params.includeTransactions ?? false,\n onBlock: cb.onData,\n onError: cb.onError,\n pollingInterval: params.pollingInterval,\n }),\n });\n\n return stream;\n }).pipe(\n Effect.withSpan(SpanNames.SUBSCRIPTION_WATCH_BLOCKS, {\n attributes: {\n chainId: params.chainId,\n includeTransactions: params.includeTransactions ?? false,\n pollingInterval: params.pollingInterval,\n },\n })\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/subscriptions/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,6BAA8B,SAAQ,MAAM,CAAC,WAAW,EAAiC,CACpG,+BAA+B,EAC/B;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,gBAAgB,EAAE,MAAM,CAAC,MAAM;CAChC,CACF;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,gBAAgB,EAAE,MAAM,CAAC,MAAM;CAChC,CACF;CAAG"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/subscriptions/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,6BAA8B,SAAQ,MAAM,CAAC,WAAW,EAAiC,CACpG,+BAA+B,EAC/B;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,gBAAgB,EAAE,MAAM,CAAC,MAAM;CAChC,CACF;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,gBAAgB,EAAE,MAAM,CAAC,MAAM;CAChC,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\nexport class SubscriptionNotSupportedError extends Schema.TaggedError<SubscriptionNotSupportedError>()(\n \"SubscriptionNotSupportedError\",\n {\n chainId: Schema.Number,\n message: Schema.String,\n subscriptionType: Schema.String,\n }\n) {}\n\nexport class SubscriptionDroppedError extends Schema.TaggedError<SubscriptionDroppedError>()(\n \"SubscriptionDroppedError\",\n {\n chainId: Schema.Number,\n message: Schema.String,\n subscriptionType: Schema.String,\n }\n) {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subscriptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subscriptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./block-subscription.js\";\nexport * from \"./errors.js\";\nexport * from \"./log-subscription.js\";\nexport * from \"./pending-tx.js\";\nexport * from \"./service.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"log-subscription.js","sourceRoot":"","sources":["../../src/subscriptions/log-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,SAAS,CACvB,mBAA6C,EAC7C,MAKC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,iBAAiB,CAAgC;YAC9D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,IAAI,wBAAwB,CAAC;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,qCAAqC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;gBAChF,gBAAgB,EAAE,MAAM;aACzB,CAAC;YACJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACZ,MAAM,CAAC,UAAU,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC;gBACD,eAAe,EAAE,MAAM,CAAC,eAAe;gBAEvC,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,EAAE;QACjD,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"log-subscription.js","sourceRoot":"","sources":["../../src/subscriptions/log-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,SAAS,CACvB,mBAA6C,EAC7C,MAKC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,iBAAiB,CAAgC;YAC9D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,IAAI,wBAAwB,CAAC;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,qCAAqC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;gBAChF,gBAAgB,EAAE,MAAM;aACzB,CAAC;YACJ,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACZ,MAAM,CAAC,UAAU,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC;gBACD,eAAe,EAAE,MAAM,CAAC,eAAe;gBAEvC,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,EAAE;QACjD,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport type { Address, Hex, Log } from \"viem\";\nimport type { PublicClientServiceShape } from \"@/src/core/index.js\";\nimport { fromWatchCallback } from \"@/src/internal/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport { SubscriptionDroppedError } from \"./errors.js\";\n\nexport function watchLogs(\n publicClientService: PublicClientServiceShape,\n params: {\n chainId: number;\n address?: Address | Address[];\n topics?: (Hex | Hex[] | null)[];\n pollingInterval?: number;\n }\n) {\n return Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n const stream = fromWatchCallback<Log, SubscriptionDroppedError>({\n mapError: (error) =>\n new SubscriptionDroppedError({\n chainId: params.chainId,\n message: `Log subscription dropped on chain ${params.chainId}: ${String(error)}`,\n subscriptionType: \"logs\",\n }),\n watch: (cb) =>\n client.watchEvent({\n address: params.address,\n onError: cb.onError,\n onLogs: (logs) => {\n for (const log of logs) {\n cb.onData(log);\n }\n },\n pollingInterval: params.pollingInterval,\n // @ts-expect-error - topics type is compatible\n topics: params.topics,\n }),\n });\n\n return stream;\n }).pipe(\n Effect.withSpan(SpanNames.SUBSCRIPTION_WATCH_LOGS, {\n attributes: {\n address: params.address,\n chainId: params.chainId,\n pollingInterval: params.pollingInterval,\n },\n })\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Effect } from "effect";
2
2
  import type { PublicClientServiceShape } from "../core/index.js";
3
3
  import { SubscriptionDroppedError, SubscriptionNotSupportedError } from "./errors.js";
4
- export declare function watchPendingTransactions(publicClientService: PublicClientServiceShape, params: {
4
+ export declare function watchPendingTxs(publicClientService: PublicClientServiceShape, params: {
5
5
  chainId: number;
6
6
  pollingInterval?: number;
7
7
  }): Effect.Effect<import("effect/Stream").Stream<`0x${string}`, SubscriptionDroppedError, never>, import("../core/index.js").ClientNotFoundError | SubscriptionNotSupportedError, never>;