@prb/effect-evm 1.0.0-beta.2 → 1.0.0-beta.4

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 (300) hide show
  1. package/dist/abi/erc165.js.map +1 -1
  2. package/dist/abi/erc20-no-output.js.map +1 -1
  3. package/dist/abi/erc20.js.map +1 -1
  4. package/dist/abi/erc721.js.map +1 -1
  5. package/dist/abi/index.js.map +1 -1
  6. package/dist/balance/index.js.map +1 -1
  7. package/dist/balance/service.js.map +1 -1
  8. package/dist/balance/service.test.integration.js.map +1 -1
  9. package/dist/balance/utils.js.map +1 -1
  10. package/dist/block/errors.js.map +1 -1
  11. package/dist/block/index.js.map +1 -1
  12. package/dist/block/service.js.map +1 -1
  13. package/dist/block/service.test.integration.js.map +1 -1
  14. package/dist/constants/index.js.map +1 -1
  15. package/dist/contract/cross-chain-reader.js.map +1 -1
  16. package/dist/contract/index.js.map +1 -1
  17. package/dist/contract/pipeline/index.js.map +1 -1
  18. package/dist/contract/pipeline/internal/core.js.map +1 -1
  19. package/dist/contract/pipeline/internal/helpers.js.map +1 -1
  20. package/dist/contract/pipeline/internal/nonce.js.map +1 -1
  21. package/dist/contract/pipeline/internal/prepare.js.map +1 -1
  22. package/dist/contract/pipeline/internal/receipt.js.map +1 -1
  23. package/dist/contract/pipeline/live.js.map +1 -1
  24. package/dist/contract/pipeline/service.js.map +1 -1
  25. package/dist/contract/pipeline/types.js.map +1 -1
  26. package/dist/contract/pipeline/write-and-track.js.map +1 -1
  27. package/dist/contract/pipeline/write-and-wait.js.map +1 -1
  28. package/dist/contract/pipeline.js.map +1 -1
  29. package/dist/contract/reader.js.map +1 -1
  30. package/dist/contract/typed-contract.js.map +1 -1
  31. package/dist/contract/writer.js.map +1 -1
  32. package/dist/core/clients/index.js.map +1 -1
  33. package/dist/core/clients/public-client.js.map +1 -1
  34. package/dist/core/clients/wallet-client.js.map +1 -1
  35. package/dist/core/errors/client.js.map +1 -1
  36. package/dist/core/errors/contract.js.map +1 -1
  37. package/dist/core/errors/erc20.js.map +1 -1
  38. package/dist/core/errors/event.js.map +1 -1
  39. package/dist/core/errors/index.js.map +1 -1
  40. package/dist/core/errors/predicates.js.map +1 -1
  41. package/dist/core/errors/transaction.js.map +1 -1
  42. package/dist/core/errors/viem-mapper.js.map +1 -1
  43. package/dist/core/index.js.map +1 -1
  44. package/dist/deploy/errors.js.map +1 -1
  45. package/dist/deploy/index.js.map +1 -1
  46. package/dist/deploy/service.js.map +1 -1
  47. package/dist/eip7702/erc7579.js.map +1 -1
  48. package/dist/eip7702/errors.js.map +1 -1
  49. package/dist/eip7702/index.js.map +1 -1
  50. package/dist/eip7702/service.js.map +1 -1
  51. package/dist/ens/ens.d.ts.map +1 -1
  52. package/dist/ens/ens.js +6 -6
  53. package/dist/ens/ens.js.map +1 -1
  54. package/dist/ens/errors.js.map +1 -1
  55. package/dist/ens/index.js.map +1 -1
  56. package/dist/erc20/allowance/core.js.map +1 -1
  57. package/dist/erc20/allowance/index.js.map +1 -1
  58. package/dist/erc20/allowance/no-output.js.map +1 -1
  59. package/dist/erc20/allowance/types.js.map +1 -1
  60. package/dist/erc20/index.js.map +1 -1
  61. package/dist/erc20/metadata.js.map +1 -1
  62. package/dist/erc721/errors.js.map +1 -1
  63. package/dist/erc721/helpers.js.map +1 -1
  64. package/dist/erc721/index.js.map +1 -1
  65. package/dist/erc721/metadata.js.map +1 -1
  66. package/dist/erc721/service.js.map +1 -1
  67. package/dist/events/backfill.js.map +1 -1
  68. package/dist/events/backfill.test.integration.js.map +1 -1
  69. package/dist/events/cursor.js.map +1 -1
  70. package/dist/events/decoder.js.map +1 -1
  71. package/dist/events/index.js.map +1 -1
  72. package/dist/events/reliable-stream-simple.test.integration.js.map +1 -1
  73. package/dist/events/reliable-stream.js.map +1 -1
  74. package/dist/events/reliable-stream.test.integration.js.map +1 -1
  75. package/dist/events/stream.js.map +1 -1
  76. package/dist/events/stream.test.integration.js.map +1 -1
  77. package/dist/gas/errors.js.map +1 -1
  78. package/dist/gas/estimator.js.map +1 -1
  79. package/dist/gas/index.js.map +1 -1
  80. package/dist/gas/service.js.map +1 -1
  81. package/dist/gas/service.test.integration.js.map +1 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/integrations/react-hooks/convenience/index.js.map +1 -1
  84. package/dist/integrations/react-hooks/internal/error.js.map +1 -1
  85. package/dist/integrations/react-hooks/internal/is-dev.js.map +1 -1
  86. package/dist/integrations/react-hooks/internal/runtime.js.map +1 -1
  87. package/dist/integrations/react-hooks/internal/scoped-run.js.map +1 -1
  88. package/dist/integrations/react-hooks/internal/stable.js.map +1 -1
  89. package/dist/integrations/react-hooks/primitives/use-effect-memo-factory.js.map +1 -1
  90. package/dist/integrations/react-hooks/primitives/use-effect.js.map +1 -1
  91. package/dist/integrations/react-hooks/primitives/use-fork-effect.js.map +1 -1
  92. package/dist/integrations/react-hooks/primitives/use-stream.js.map +1 -1
  93. package/dist/integrations/react-hooks/primitives.js.map +1 -1
  94. package/dist/integrations/react-hooks/provider.js.map +1 -1
  95. package/dist/integrations/react-hooks/wagmi/index.js.map +1 -1
  96. package/dist/integrations/react-hooks/wallet-provider-ref.js.map +1 -1
  97. package/dist/integrations/wagmi/index.js.map +1 -1
  98. package/dist/integrations/wagmi/layers.js.map +1 -1
  99. package/dist/internal/index.js.map +1 -1
  100. package/dist/internal/numbers.js.map +1 -1
  101. package/dist/internal/schedule.js.map +1 -1
  102. package/dist/internal/stream-adapters.js.map +1 -1
  103. package/dist/internal/viem-effect.js.map +1 -1
  104. package/dist/nonce/index.js.map +1 -1
  105. package/dist/nonce/manager.js.map +1 -1
  106. package/dist/nonce/service.js.map +1 -1
  107. package/dist/nonce/service.test.integration.js.map +1 -1
  108. package/dist/platform/browser/cursor-store/index.js.map +1 -1
  109. package/dist/platform/browser/cursor-store/local-storage.js.map +1 -1
  110. package/dist/platform/browser/index.js.map +1 -1
  111. package/dist/platform/browser/layers.js.map +1 -1
  112. package/dist/platform/browser/storage/errors.js.map +1 -1
  113. package/dist/platform/browser/storage/index.js.map +1 -1
  114. package/dist/platform/browser/storage/local-storage.js.map +1 -1
  115. package/dist/platform/browser/tx-persistence/index.js.map +1 -1
  116. package/dist/platform/browser/tx-persistence/persistence.js.map +1 -1
  117. package/dist/platform/browser/tx-store/errors.js.map +1 -1
  118. package/dist/platform/browser/tx-store/index.js.map +1 -1
  119. package/dist/platform/browser/tx-store/local-storage.js.map +1 -1
  120. package/dist/platform/browser/tx-store/store.js.map +1 -1
  121. package/dist/platform/browser/tx-store/types.js.map +1 -1
  122. package/dist/presets/index.js.map +1 -1
  123. package/dist/presets/layers.js.map +1 -1
  124. package/dist/presets/transports.js.map +1 -1
  125. package/dist/query/chain-head.js.map +1 -1
  126. package/dist/query/client.js.map +1 -1
  127. package/dist/query/client.test.integration.js.map +1 -1
  128. package/dist/query/contract-query.js.map +1 -1
  129. package/dist/query/contract-query.test.integration.js.map +1 -1
  130. package/dist/query/index.js.map +1 -1
  131. package/dist/query/multicall-batcher.js.map +1 -1
  132. package/dist/react-hooks/index.d.ts +3 -1
  133. package/dist/react-hooks/index.d.ts.map +1 -1
  134. package/dist/react-hooks/index.js +3 -1
  135. package/dist/react-hooks/index.js.map +1 -1
  136. package/dist/react-hooks/safe-origins.d.ts +8 -0
  137. package/dist/react-hooks/safe-origins.d.ts.map +1 -0
  138. package/dist/react-hooks/safe-origins.js +124 -0
  139. package/dist/react-hooks/safe-origins.js.map +1 -0
  140. package/dist/react-hooks/use-is-host-safe-multisig.d.ts +2 -0
  141. package/dist/react-hooks/use-is-host-safe-multisig.d.ts.map +1 -0
  142. package/dist/react-hooks/use-is-host-safe-multisig.js +16 -0
  143. package/dist/react-hooks/use-is-host-safe-multisig.js.map +1 -0
  144. package/dist/react-hooks/use-is-wallet-safe-multisig.d.ts +2 -0
  145. package/dist/react-hooks/use-is-wallet-safe-multisig.d.ts.map +1 -0
  146. package/dist/react-hooks/use-is-wallet-safe-multisig.js +24 -0
  147. package/dist/react-hooks/use-is-wallet-safe-multisig.js.map +1 -0
  148. package/dist/react-hooks/use-safe-context.d.ts.map +1 -1
  149. package/dist/react-hooks/use-safe-context.js.map +1 -1
  150. package/dist/react-hooks/wagmi/index.js.map +1 -1
  151. package/dist/rpc/cache.js.map +1 -1
  152. package/dist/rpc/circuit-breaker.js.map +1 -1
  153. package/dist/rpc/dedup.js.map +1 -1
  154. package/dist/rpc/index.js.map +1 -1
  155. package/dist/rpc/retry.js.map +1 -1
  156. package/dist/rpc/routemesh.js.map +1 -1
  157. package/dist/safe/adapter.js.map +1 -1
  158. package/dist/safe/detection.js.map +1 -1
  159. package/dist/safe/detection.test.integration.js.map +1 -1
  160. package/dist/safe/errors.js.map +1 -1
  161. package/dist/safe/index.js.map +1 -1
  162. package/dist/safe/live.js.map +1 -1
  163. package/dist/safe/service.js.map +1 -1
  164. package/dist/safe/service.test.integration.js.map +1 -1
  165. package/dist/safe/simulation/abis.d.ts.map +1 -1
  166. package/dist/safe/simulation/abis.js.map +1 -1
  167. package/dist/safe/simulation/addresses.d.ts.map +1 -1
  168. package/dist/safe/simulation/addresses.js +40 -26
  169. package/dist/safe/simulation/addresses.js.map +1 -1
  170. package/dist/safe/simulation/encoding.js.map +1 -1
  171. package/dist/safe/simulation/errors.js.map +1 -1
  172. package/dist/safe/simulation/index.js.map +1 -1
  173. package/dist/safe/simulation/internal/calldata/calldata.d.ts +5 -0
  174. package/dist/safe/simulation/internal/calldata/calldata.d.ts.map +1 -0
  175. package/dist/safe/simulation/internal/calldata/calldata.js +17 -0
  176. package/dist/safe/simulation/internal/calldata/calldata.js.map +1 -0
  177. package/dist/safe/simulation/internal/calldata/index.d.ts +2 -0
  178. package/dist/safe/simulation/internal/calldata/index.d.ts.map +1 -0
  179. package/dist/safe/simulation/internal/calldata/index.js +2 -0
  180. package/dist/safe/simulation/internal/calldata/index.js.map +1 -0
  181. package/dist/safe/simulation/internal/contracts/contracts.d.ts +5 -0
  182. package/dist/safe/simulation/internal/contracts/contracts.d.ts.map +1 -0
  183. package/dist/safe/simulation/internal/contracts/contracts.js +25 -0
  184. package/dist/safe/simulation/internal/contracts/contracts.js.map +1 -0
  185. package/dist/safe/simulation/internal/contracts/index.d.ts +2 -0
  186. package/dist/safe/simulation/internal/contracts/index.d.ts.map +1 -0
  187. package/dist/safe/simulation/internal/contracts/index.js +2 -0
  188. package/dist/safe/simulation/internal/contracts/index.js.map +1 -0
  189. package/dist/safe/simulation/internal/evaluation/evaluation.d.ts +6 -0
  190. package/dist/safe/simulation/internal/evaluation/evaluation.d.ts.map +1 -0
  191. package/dist/safe/simulation/internal/evaluation/evaluation.js +20 -0
  192. package/dist/safe/simulation/internal/evaluation/evaluation.js.map +1 -0
  193. package/dist/safe/simulation/internal/evaluation/index.d.ts +2 -0
  194. package/dist/safe/simulation/internal/evaluation/index.d.ts.map +1 -0
  195. package/dist/safe/simulation/internal/evaluation/index.js +2 -0
  196. package/dist/safe/simulation/internal/evaluation/index.js.map +1 -0
  197. package/dist/safe/simulation/internal/execution/execution.d.ts +9 -0
  198. package/dist/safe/simulation/internal/execution/execution.d.ts.map +1 -0
  199. package/dist/safe/simulation/internal/execution/execution.js +65 -0
  200. package/dist/safe/simulation/internal/execution/execution.js.map +1 -0
  201. package/dist/safe/simulation/internal/execution/index.d.ts +2 -0
  202. package/dist/safe/simulation/internal/execution/index.d.ts.map +1 -0
  203. package/dist/safe/simulation/internal/execution/index.js +2 -0
  204. package/dist/safe/simulation/internal/execution/index.js.map +1 -0
  205. package/dist/safe/simulation/internal/limits/index.d.ts +2 -0
  206. package/dist/safe/simulation/internal/limits/index.d.ts.map +1 -0
  207. package/dist/safe/simulation/internal/limits/index.js +2 -0
  208. package/dist/safe/simulation/internal/limits/index.js.map +1 -0
  209. package/dist/safe/simulation/internal/limits/limits.d.ts +5 -0
  210. package/dist/safe/simulation/internal/limits/limits.d.ts.map +1 -0
  211. package/dist/safe/simulation/internal/limits/limits.js +18 -0
  212. package/dist/safe/simulation/internal/limits/limits.js.map +1 -0
  213. package/dist/safe/simulation/internal/types/index.d.ts +2 -0
  214. package/dist/safe/simulation/internal/types/index.d.ts.map +1 -0
  215. package/dist/safe/simulation/internal/types/index.js +2 -0
  216. package/dist/safe/simulation/internal/types/index.js.map +1 -0
  217. package/dist/safe/simulation/internal/types/types.d.ts +11 -0
  218. package/dist/safe/simulation/internal/types/types.d.ts.map +1 -0
  219. package/dist/safe/simulation/internal/types/types.js +2 -0
  220. package/dist/safe/simulation/internal/types/types.js.map +1 -0
  221. package/dist/safe/simulation/internal/validation/index.d.ts +2 -0
  222. package/dist/safe/simulation/internal/validation/index.d.ts.map +1 -0
  223. package/dist/safe/simulation/internal/validation/index.js +2 -0
  224. package/dist/safe/simulation/internal/validation/index.js.map +1 -0
  225. package/dist/safe/simulation/internal/validation/validation.d.ts +5 -0
  226. package/dist/safe/simulation/internal/validation/validation.d.ts.map +1 -0
  227. package/dist/safe/simulation/internal/validation/validation.js +27 -0
  228. package/dist/safe/simulation/internal/validation/validation.js.map +1 -0
  229. package/dist/safe/simulation/service.d.ts +1 -1
  230. package/dist/safe/simulation/service.d.ts.map +1 -1
  231. package/dist/safe/simulation/service.js +12 -127
  232. package/dist/safe/simulation/service.js.map +1 -1
  233. package/dist/safe/simulation/types.js.map +1 -1
  234. package/dist/safe/types.js.map +1 -1
  235. package/dist/signature/errors.js.map +1 -1
  236. package/dist/signature/index.js.map +1 -1
  237. package/dist/signature/service.js.map +1 -1
  238. package/dist/signature/service.test.integration.js.map +1 -1
  239. package/dist/signature/utils.js.map +1 -1
  240. package/dist/simulation/errors.js.map +1 -1
  241. package/dist/simulation/index.js.map +1 -1
  242. package/dist/simulation/service.js.map +1 -1
  243. package/dist/simulation/tenderly.js.map +1 -1
  244. package/dist/simulation/tenderly.test.integration.js.map +1 -1
  245. package/dist/simulation/types.js.map +1 -1
  246. package/dist/subscriptions/block-subscription.js.map +1 -1
  247. package/dist/subscriptions/errors.js.map +1 -1
  248. package/dist/subscriptions/index.js.map +1 -1
  249. package/dist/subscriptions/log-subscription.js.map +1 -1
  250. package/dist/subscriptions/pending-tx.js.map +1 -1
  251. package/dist/subscriptions/service.js.map +1 -1
  252. package/dist/telemetry/index.js.map +1 -1
  253. package/dist/telemetry/logger.js.map +1 -1
  254. package/dist/telemetry/tracer.js.map +1 -1
  255. package/dist/testing-kit/_fixtures/addresses.js.map +1 -1
  256. package/dist/testing-kit/_fixtures/receipts.js.map +1 -1
  257. package/dist/testing-kit/helpers.js.map +1 -1
  258. package/dist/testing-kit/index.js.map +1 -1
  259. package/dist/testing-kit/mock-balance-service.js.map +1 -1
  260. package/dist/testing-kit/mock-block-service.js.map +1 -1
  261. package/dist/testing-kit/mock-cross-chain-reader.js.map +1 -1
  262. package/dist/testing-kit/mock-deploy-service.js.map +1 -1
  263. package/dist/testing-kit/mock-erc721-service.js.map +1 -1
  264. package/dist/testing-kit/mock-gas-service.js.map +1 -1
  265. package/dist/testing-kit/mock-nonce-service.js.map +1 -1
  266. package/dist/testing-kit/mock-public-client.js.map +1 -1
  267. package/dist/testing-kit/mock-signature-service.js.map +1 -1
  268. package/dist/testing-kit/mock-simulation-service.js.map +1 -1
  269. package/dist/testing-kit/mock-subscription-service.js.map +1 -1
  270. package/dist/testing-kit/mock-transfer-service.js.map +1 -1
  271. package/dist/testing-kit/mock-wallet-client.js.map +1 -1
  272. package/dist/testing-kit/mock-wallet-provider.js.map +1 -1
  273. package/dist/testing-kit/test-layer.js.map +1 -1
  274. package/dist/transfer/index.js.map +1 -1
  275. package/dist/transfer/service.js.map +1 -1
  276. package/dist/tx/fees.js.map +1 -1
  277. package/dist/tx/index.js.map +1 -1
  278. package/dist/tx/manager.js.map +1 -1
  279. package/dist/tx/manager.test.integration.js.map +1 -1
  280. package/dist/tx/policy.js.map +1 -1
  281. package/dist/tx/replacement.js.map +1 -1
  282. package/dist/tx/tracker.js.map +1 -1
  283. package/dist/types/abi.js.map +1 -1
  284. package/dist/types/index.js.map +1 -1
  285. package/dist/types/params.js.map +1 -1
  286. package/dist/types/tx-overrides.js.map +1 -1
  287. package/dist/wagmi/index.js.map +1 -1
  288. package/dist/wagmi/layers.js.map +1 -1
  289. package/dist/wallet/errors.js.map +1 -1
  290. package/dist/wallet/index.js.map +1 -1
  291. package/dist/wallet/lifecycle.js.map +1 -1
  292. package/dist/wallet/operations.js.map +1 -1
  293. package/dist/wallet/provider-ref.js.map +1 -1
  294. package/dist/wallet/service.js.map +1 -1
  295. package/dist/wallet/types.js.map +1 -1
  296. package/package.json +22 -10
  297. package/dist/react-hooks/use-is-safe-multisig.d.ts +0 -2
  298. package/dist/react-hooks/use-is-safe-multisig.d.ts.map +0 -1
  299. package/dist/react-hooks/use-is-safe-multisig.js +0 -44
  300. package/dist/react-hooks/use-is-safe-multisig.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/types/index.ts"],"names":[],"mappings":"","sourcesContent":["export type { LatestBlock, SafeContracts, SimulationDecoded } from \"./types.js\";\n"]}
@@ -0,0 +1,11 @@
1
+ import type { Address, PublicClient } from "viem";
2
+ export type SafeContracts = {
3
+ readonly multiSendAddr: Address;
4
+ readonly simulateAccessorAddr: Address;
5
+ };
6
+ export type SimulationDecoded = {
7
+ readonly gas: bigint;
8
+ readonly success: boolean;
9
+ };
10
+ export type LatestBlock = Awaited<ReturnType<PublicClient["getBlock"]>>;
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/types/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAKlD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACxC,CAAC;AAKF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAKF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/types/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Shared type definitions for Safe simulation internals.\n */\nimport type { Address, PublicClient } from \"viem\";\n\n/**\n * Resolved Safe contract addresses required for simulation.\n */\nexport type SafeContracts = {\n readonly multiSendAddr: Address;\n readonly simulateAccessorAddr: Address;\n};\n\n/**\n * Decoded revert payload for simulateAndRevert.\n */\nexport type SimulationDecoded = {\n readonly gas: bigint;\n readonly success: boolean;\n};\n\n/**\n * Block type alias used by helpers to avoid re-deriving it everywhere.\n */\nexport type LatestBlock = Awaited<ReturnType<PublicClient[\"getBlock\"]>>;\n"]}
@@ -0,0 +1,2 @@
1
+ export { validateSimulationParams } from "./validation.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { validateSimulationParams } from "./validation.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["export { validateSimulationParams } from \"./validation.js\";\n"]}
@@ -0,0 +1,5 @@
1
+ import { Effect } from "effect";
2
+ import { InvalidGasThresholdError, SafeSimulationFailedError } from "../../errors.js";
3
+ import type { SafeSimulateBatchParams } from "../../types.js";
4
+ export declare function validateSimulationParams(params: SafeSimulateBatchParams): Effect.Effect<SafeSimulateBatchParams, InvalidGasThresholdError | SafeSimulationFailedError>;
5
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/validation/validation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAK9D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,uBAAuB,GAC9B,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,GAAG,yBAAyB,CAAC,CAkC9F"}
@@ -0,0 +1,27 @@
1
+ import { Effect } from "effect";
2
+ import { zeroAddress } from "viem";
3
+ import { InvalidGasThresholdError, SafeSimulationFailedError } from "../../errors.js";
4
+ export function validateSimulationParams(params) {
5
+ return Effect.gen(function* () {
6
+ const { gasThresholdPercent, safeAddress, transactions } = params;
7
+ if (transactions.length === 0) {
8
+ return yield* Effect.fail(new SafeSimulationFailedError({
9
+ message: "Cannot simulate empty transaction batch",
10
+ }));
11
+ }
12
+ if (safeAddress === zeroAddress) {
13
+ return yield* Effect.fail(new SafeSimulationFailedError({
14
+ message: "Invalid Safe address: cannot be zero address",
15
+ }));
16
+ }
17
+ if (gasThresholdPercent !== undefined &&
18
+ (gasThresholdPercent < 1 || gasThresholdPercent > 100)) {
19
+ return yield* Effect.fail(new InvalidGasThresholdError({
20
+ message: "gasThresholdPercent must be between 1 and 100 (inclusive)",
21
+ value: gasThresholdPercent,
22
+ }));
23
+ }
24
+ return params;
25
+ });
26
+ }
27
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../src/safe/simulation/internal/validation/validation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAMtF,MAAM,UAAU,wBAAwB,CACtC,MAA+B;IAE/B,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAElE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,yBAAyB,CAAC;gBAC5B,OAAO,EAAE,yCAAyC;aACnD,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,yBAAyB,CAAC;gBAC5B,OAAO,EAAE,8CAA8C;aACxD,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IACE,mBAAmB,KAAK,SAAS;YACjC,CAAC,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,GAAG,GAAG,CAAC,EACtD,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,wBAAwB,CAAC;gBAC3B,OAAO,EAAE,2DAA2D;gBACpE,KAAK,EAAE,mBAAmB;aAC3B,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * Input validation for Safe batch simulation parameters.\n */\nimport { Effect } from \"effect\";\nimport { zeroAddress } from \"viem\";\nimport { InvalidGasThresholdError, SafeSimulationFailedError } from \"../../errors.js\";\nimport type { SafeSimulateBatchParams } from \"../../types.js\";\n\n/**\n * Validate user-supplied simulation inputs before any chain calls.\n */\nexport function validateSimulationParams(\n params: SafeSimulateBatchParams\n): Effect.Effect<SafeSimulateBatchParams, InvalidGasThresholdError | SafeSimulationFailedError> {\n return Effect.gen(function* () {\n const { gasThresholdPercent, safeAddress, transactions } = params;\n\n if (transactions.length === 0) {\n return yield* Effect.fail(\n new SafeSimulationFailedError({\n message: \"Cannot simulate empty transaction batch\",\n })\n );\n }\n\n if (safeAddress === zeroAddress) {\n return yield* Effect.fail(\n new SafeSimulationFailedError({\n message: \"Invalid Safe address: cannot be zero address\",\n })\n );\n }\n\n if (\n gasThresholdPercent !== undefined &&\n (gasThresholdPercent < 1 || gasThresholdPercent > 100)\n ) {\n return yield* Effect.fail(\n new InvalidGasThresholdError({\n message: \"gasThresholdPercent must be between 1 and 100 (inclusive)\",\n value: gasThresholdPercent,\n })\n );\n }\n\n return params;\n });\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
2
  import type { ClientNotFoundError } from "../../core/index.js";
3
3
  import { PublicClientService } from "../../core/index.js";
4
- import { GasLimitOverflowError, InvalidGasThresholdError, SafeContractsNotDeployedError, SafeSimulationFailedError, SimulationDecodeError, TransactionSizeTooLargeError } from "./errors.js";
4
+ import type { GasLimitOverflowError, InvalidGasThresholdError, SafeContractsNotDeployedError, SafeSimulationFailedError, SimulationDecodeError, TransactionSizeTooLargeError } from "./errors.js";
5
5
  import type { SafeSimulateBatchParams, SafeSimulationResult } from "./types.js";
6
6
  export type SafeSimulationServiceShape = {
7
7
  readonly simulateBatch: (params: SafeSimulateBatchParams) => Effect.Effect<SafeSimulationResult, ClientNotFoundError | InvalidGasThresholdError | SafeContractsNotDeployedError | TransactionSizeTooLargeError | SafeSimulationFailedError | SimulationDecodeError | GasLimitOverflowError>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/safe/simulation/service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,0BAA0B,GAAG;IAUvC,QAAQ,CAAC,aAAa,EAAE,CACtB,MAAM,EAAE,uBAAuB,KAC5B,MAAM,CAAC,MAAM,CAChB,oBAAoB,EAClB,mBAAmB,GACnB,wBAAwB,GACxB,6BAA6B,GAC7B,4BAA4B,GAC5B,yBAAyB,GACzB,qBAAqB,GACrB,qBAAqB,CACxB,CAAC;CACH,CAAC;;AAEF,qBAAa,qBAAsB,SAAQ,0BAGxC;CAAG;AAEN,eAAO,MAAM,yBAAyB,gEAkMrC,CAAC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/safe/simulation/service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,MAAM,0BAA0B,GAAG;IAUvC,QAAQ,CAAC,aAAa,EAAE,CACtB,MAAM,EAAE,uBAAuB,KAC5B,MAAM,CAAC,MAAM,CAChB,oBAAoB,EAClB,mBAAmB,GACnB,wBAAwB,GACxB,6BAA6B,GAC7B,4BAA4B,GAC5B,yBAAyB,GACzB,qBAAqB,GACrB,qBAAqB,CACxB,CAAC;CACH,CAAC;;AAEF,qBAAa,qBAAsB,SAAQ,0BAGxC;CAAG;AAEN,eAAO,MAAM,yBAAyB,gEAyBrC,CAAC"}
@@ -1,139 +1,24 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
- import { BaseError as CoreError, encodeFunctionData, zeroAddress } from "viem";
3
2
  import { PublicClientService } from "../../core/index.js";
4
- import { safeAbis } from "./abis.js";
5
- import { getMultiSendAddress, getSimulateAccessorAddress } from "./addresses.js";
6
- import { decodeSimulationData, encodeMultiSend } from "./encoding.js";
7
- import { GasLimitOverflowError, InvalidGasThresholdError, SafeContractsNotDeployedError, SafeSimulationFailedError, SimulationDecodeError, TransactionSizeTooLargeError, } from "./errors.js";
3
+ import { buildSafeCalldata } from "./internal/calldata/index.js";
4
+ import { resolveSafeContracts } from "./internal/contracts/index.js";
5
+ import { evaluateSimulationResult } from "./internal/evaluation/index.js";
6
+ import { fetchLatestBlock, simulateAndDecode } from "./internal/execution/index.js";
7
+ import { enforceTxSizeLimit } from "./internal/limits/index.js";
8
+ import { validateSimulationParams } from "./internal/validation/index.js";
8
9
  export class SafeSimulationService extends Context.Tag("ew3/SafeSimulation")() {
9
10
  }
10
11
  export const SafeSimulationServiceLive = Layer.effect(SafeSimulationService, Effect.gen(function* () {
11
12
  const publicClientService = yield* PublicClientService;
12
13
  return SafeSimulationService.of({
13
14
  simulateBatch: (params) => Effect.gen(function* () {
14
- const { chainId, safeAddress, transactions, txSizeLimit, gasThresholdPercent } = params;
15
- if (transactions.length === 0) {
16
- return yield* Effect.fail(new SafeSimulationFailedError({
17
- message: "Cannot simulate empty transaction batch",
18
- }));
19
- }
20
- if (safeAddress === zeroAddress) {
21
- return yield* Effect.fail(new SafeSimulationFailedError({
22
- message: "Invalid Safe address: cannot be zero address",
23
- }));
24
- }
25
- if (gasThresholdPercent !== undefined &&
26
- (gasThresholdPercent < 1 || gasThresholdPercent > 100)) {
27
- return yield* Effect.fail(new InvalidGasThresholdError({
28
- message: "gasThresholdPercent must be between 1 and 100 (inclusive)",
29
- value: gasThresholdPercent,
30
- }));
31
- }
32
- const multiSendAddr = getMultiSendAddress(chainId);
33
- const simulateAccessorAddr = getSimulateAccessorAddress(chainId);
34
- if (!multiSendAddr) {
35
- return yield* Effect.fail(new SafeContractsNotDeployedError({
36
- chainId,
37
- message: "MultiSend contract not deployed on this chain",
38
- missingContract: "multiSend",
39
- }));
40
- }
41
- if (!simulateAccessorAddr) {
42
- return yield* Effect.fail(new SafeContractsNotDeployedError({
43
- chainId,
44
- message: "SimulateAccessor contract not deployed on this chain",
45
- missingContract: "simulateAccessor",
46
- }));
47
- }
48
- const multiSendCalldata = encodeMultiSend(transactions);
49
- const simulateAccessorCalldata = encodeFunctionData({
50
- abi: safeAbis.simulateAccessor,
51
- args: [multiSendAddr, 0n, multiSendCalldata, 1],
52
- functionName: "simulate",
53
- });
54
- const safeCalldata = encodeFunctionData({
55
- abi: safeAbis.multisig,
56
- args: [simulateAccessorAddr, simulateAccessorCalldata],
57
- functionName: "simulateAndRevert",
58
- });
59
- if (txSizeLimit) {
60
- const sizeInBytes = (safeCalldata.length - 2) / 2;
61
- if (sizeInBytes > txSizeLimit) {
62
- return yield* Effect.fail(new TransactionSizeTooLargeError({
63
- actualSize: sizeInBytes,
64
- maxSize: txSizeLimit,
65
- message: `Transaction size (${sizeInBytes} bytes) exceeds chain limit (${txSizeLimit} bytes). Try splitting into smaller batches.`,
66
- }));
67
- }
68
- }
15
+ const { chainId, safeAddress, transactions, txSizeLimit, gasThresholdPercent } = yield* validateSimulationParams(params);
16
+ const contracts = yield* resolveSafeContracts(chainId);
17
+ const safeCalldata = buildSafeCalldata(contracts, transactions);
18
+ yield* enforceTxSizeLimit(safeCalldata, txSizeLimit);
69
19
  const client = yield* publicClientService.get(chainId);
70
- const simulationEffect = Effect.gen(function* () {
71
- const revertData = yield* Effect.tryPromise({
72
- catch: (error) => new SafeSimulationFailedError({
73
- cause: error,
74
- message: "Network error or unexpected behavior during simulation",
75
- }),
76
- try: async () => {
77
- try {
78
- await client.call({
79
- account: safeAddress,
80
- data: safeCalldata,
81
- to: safeAddress,
82
- });
83
- throw new Error("simulateAndRevert did not revert");
84
- }
85
- catch (error) {
86
- if (error instanceof CoreError) {
87
- const revertError = error.walk((err) => {
88
- const typedErr = err;
89
- return typeof typedErr.data === "string";
90
- });
91
- if (revertError) {
92
- const typedErr = revertError;
93
- const extractedData = typedErr.data;
94
- if (typeof extractedData === "string") {
95
- return extractedData;
96
- }
97
- }
98
- }
99
- throw error;
100
- }
101
- },
102
- });
103
- return yield* Effect.try({
104
- catch: (error) => new SimulationDecodeError({
105
- cause: error,
106
- message: "Failed to decode simulation revert data - unexpected format",
107
- revertData,
108
- }),
109
- try: () => decodeSimulationData(revertData),
110
- });
111
- });
112
- const [result, block] = yield* Effect.all([
113
- simulationEffect,
114
- Effect.tryPromise({
115
- catch: (e) => new SafeSimulationFailedError({
116
- cause: e,
117
- message: `Failed to fetch block: ${e}`,
118
- }),
119
- try: () => client.getBlock({ blockTag: "latest" }),
120
- }),
121
- ], { concurrency: "unbounded" });
122
- const threshold = (block.gasLimit * BigInt(params.gasThresholdPercent ?? 95)) / 100n;
123
- if (result.success && result.gas > threshold) {
124
- return yield* Effect.fail(new GasLimitOverflowError({
125
- blockGasLimit: block.gasLimit,
126
- estimatedGas: result.gas,
127
- message: "Gas consumption exceeds threshold of block gas limit. Try splitting into smaller batches.",
128
- threshold,
129
- }));
130
- }
131
- if (!result.success) {
132
- return yield* Effect.fail(new SafeSimulationFailedError({
133
- message: "Transaction simulation failed - the transaction would revert",
134
- }));
135
- }
136
- return { estimatedGas: result.gas, success: true };
20
+ const [result, block] = yield* Effect.all([simulateAndDecode(client, safeAddress, safeCalldata), fetchLatestBlock(client)], { concurrency: "unbounded" });
21
+ return yield* evaluateSimulationResult(result, block, gasThresholdPercent);
137
22
  }),
138
23
  });
139
24
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/safe/simulation/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/safe/simulation/service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAS1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AA2B1E,MAAM,OAAO,qBAAsB,SAAQ,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAGzE;CAAG;AAEN,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC,MAAM,CACnD,qBAAqB,EACrB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IAEvD,OAAO,qBAAqB,CAAC,EAAE,CAAC;QAC9B,aAAa,EAAE,CAAC,MAA+B,EAAE,EAAE,CACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAC5E,KAAK,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAEhE,KAAK,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAErD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACvC,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAChF,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CAAC;YAEF,OAAO,KAAK,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAC7E,CAAC,CAAC;KACL,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC","sourcesContent":["/**\n * Safe batch simulation service using Effect-TS.\n *\n * Simulates Safe multisig batch transactions to estimate gas consumption before execution.\n * Uses Safe's simulateAndRevert algorithm to get accurate gas estimates.\n *\n * @see https://github.com/safe-global/safe-smart-account/blob/c4859f4/contracts/common/StorageAccessible.sol#L32-L43\n */\n\nimport { Context, Effect, Layer } from \"effect\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport { PublicClientService } from \"@/src/core/index.js\";\nimport type {\n GasLimitOverflowError,\n InvalidGasThresholdError,\n SafeContractsNotDeployedError,\n SafeSimulationFailedError,\n SimulationDecodeError,\n TransactionSizeTooLargeError,\n} from \"./errors.js\";\nimport { buildSafeCalldata } from \"./internal/calldata/index.js\";\nimport { resolveSafeContracts } from \"./internal/contracts/index.js\";\nimport { evaluateSimulationResult } from \"./internal/evaluation/index.js\";\nimport { fetchLatestBlock, simulateAndDecode } from \"./internal/execution/index.js\";\nimport { enforceTxSizeLimit } from \"./internal/limits/index.js\";\nimport { validateSimulationParams } from \"./internal/validation/index.js\";\nimport type { SafeSimulateBatchParams, SafeSimulationResult } from \"./types.js\";\n\nexport type SafeSimulationServiceShape = {\n /**\n * Simulate a batch of transactions in Safe context.\n *\n * Uses simulateAndRevert algorithm to estimate gas consumption. This always reverts,\n * and we decode the revert data to extract the gas estimate.\n *\n * @param params - Simulation parameters including chainId, safeAddress, and transactions\n * @returns Gas estimate and success flag\n */\n readonly simulateBatch: (\n params: SafeSimulateBatchParams\n ) => Effect.Effect<\n SafeSimulationResult,\n | ClientNotFoundError\n | InvalidGasThresholdError\n | SafeContractsNotDeployedError\n | TransactionSizeTooLargeError\n | SafeSimulationFailedError\n | SimulationDecodeError\n | GasLimitOverflowError\n >;\n};\n\nexport class SafeSimulationService extends Context.Tag(\"ew3/SafeSimulation\")<\n SafeSimulationService,\n SafeSimulationServiceShape\n>() {}\n\nexport const SafeSimulationServiceLive = Layer.effect(\n SafeSimulationService,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n\n return SafeSimulationService.of({\n simulateBatch: (params: SafeSimulateBatchParams) =>\n Effect.gen(function* () {\n const { chainId, safeAddress, transactions, txSizeLimit, gasThresholdPercent } =\n yield* validateSimulationParams(params);\n const contracts = yield* resolveSafeContracts(chainId);\n const safeCalldata = buildSafeCalldata(contracts, transactions);\n\n yield* enforceTxSizeLimit(safeCalldata, txSizeLimit);\n\n const client = yield* publicClientService.get(chainId);\n const [result, block] = yield* Effect.all(\n [simulateAndDecode(client, safeAddress, safeCalldata), fetchLatestBlock(client)],\n { concurrency: \"unbounded\" }\n );\n\n return yield* evaluateSimulationResult(result, block, gasThresholdPercent);\n }),\n });\n })\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/safe/simulation/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/safe/simulation/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Type definitions for Safe multisig gas simulation operations.\n */\nimport type { Address, Hex } from \"viem\";\n\n/** Safe transaction operation type */\nexport type SafeOperation = 0 | 1; // 0 = Call, 1 = DelegateCall\n\n/** A single transaction in a Safe batch */\nexport type SafeSimulationTransaction = {\n data: Hex;\n operation?: SafeOperation;\n to: Address;\n value: bigint;\n};\n\n/** Parameters for simulating a Safe batch */\nexport type SafeSimulateBatchParams = {\n chainId: number;\n safeAddress: Address;\n transactions: SafeSimulationTransaction[];\n /** Optional transaction size limit in bytes (for ZK chains) */\n txSizeLimit?: number;\n /** Gas threshold as percentage of block gas limit (1-100, default 95) */\n gasThresholdPercent?: number;\n};\n\n/** Result of a successful Safe simulation */\nexport type SafeSimulationResult = {\n estimatedGas: bigint;\n success: boolean;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/safe/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/safe/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Address, Hash, Hex, TransactionReceipt } from \"viem\";\n\n/** Safe info returned from SDK */\nexport type SafeInfo = {\n safeAddress: Address;\n chainId: number;\n};\n\n/** Transaction to send via Safe */\nexport type SafeTransaction = {\n to: Address;\n data: Hex;\n value?: bigint; // Converted to string at SDK boundary\n};\n\n/** Result from sendTransactions */\nexport type SafeTxSubmission = {\n safeTxHash: Hash;\n safeAddress: Address;\n chainId: number;\n};\n\n/** Result from waitForTransactionReceipt */\nexport type SafeTxResult = {\n safeTxHash: Hash;\n onchainHash: Hash;\n receipt: TransactionReceipt;\n safeAddress: Address;\n chainId: number;\n};\n\n/** Discriminated union for signTypedData result */\nexport type SignTypedDataResult =\n | { readonly _tag: \"Offchain\"; readonly messageHash: Hex }\n | { readonly _tag: \"Onchain\"; readonly safeTxHash: Hash };\n\n/** Off-chain signature result */\nexport type OffchainSignatureResult = {\n messageHash: Hex;\n signature: Hex;\n};\n\n/** Policy for Safe tx waiting (aligns with TxPolicy from src/tx/policy.ts) */\nexport type SafeWaitPolicy = {\n /** Poll interval for Safe gateway in ms (default: 3000) */\n pollInterval?: number;\n /** Timeout for Safe tx execution in ms (default: 300000 = 5 min) */\n executionTimeout?: number;\n /** Policy passed to TxManager.waitForReceipt */\n receiptPolicy?: {\n receiptTimeout?: number;\n pollingInterval?: number;\n };\n};\n\n/** Policy for off-chain signature polling */\nexport type OffchainSignaturePolicy = {\n /** Poll interval in ms (default: 2000) */\n pollInterval?: number;\n /** Timeout in ms (default: 120000 = 2 min) */\n timeout?: number;\n};\n\n/** EIP-712 typed data structure (local definition to avoid SDK import) */\nexport type EIP712TypedData = {\n domain: {\n name?: string;\n version?: string;\n chainId?: number;\n verifyingContract?: string;\n salt?: string;\n };\n types: Record<string, Array<{ name: string; type: string }>>;\n message: Record<string, unknown>;\n primaryType?: string;\n};\n"]}
@@ -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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/signature/service.test.integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC;IACvC,MAAM,OAAO,GAAG,mBAAmB,CACjC,oEAA2E,CAC5E,CAAC;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,MAAM,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAE3D,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,qCAAqC,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,MAAM,EAAE;oBACN,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,IAAI,EAAE,MAAM;iBACb;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;iBACd;gBACD,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;iBACzC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,MAAM,CAAC,gDAAgD,EAAE,GAAG,EAAE,CAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,SAAS,GACb,sIAA6I,CAAC;YAEhJ,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAExD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,wDAAwD,EAAE,GAAG,EAAE,CACvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAkB,CAAC,CAAC,CAAC;YAE5E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAC7C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,CAAC,EAAE,oEAA2E;gBAC9E,CAAC,EAAE,oEAA2E;gBAC9E,CAAC,EAAE,GAAG;aACP,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,MAAM,CAAC,kCAAkC,EAAE,GAAG,EAAE,CACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,OAAO,GAAG,eAAe,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,WAAW,CAAC;gBAClB,OAAO;aACR,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO;gBACP,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,qCAAqC,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,eAAe;gBACxB,SAAS,EACP,sIAA6I;aAChJ,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,MAAM,CAAC,6CAA6C,EAAE,GAAG,EAAE,CAC5D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,IAAI,EAAE,MAAM;aACJ,CAAC;YACX,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC;YACX,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,OAAO;aACL,CAAC;YAEX,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,aAAa,CAAC;gBACpB,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,KAAK;aACN,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,SAAS;gBACT,KAAK;aACN,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,MAAM,CAAC,yCAAyC,EAAE,GAAG,EAAE,CACxD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,OAAO,GAAG,eAAe,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,WAAW,CAAC;gBAClB,OAAO;aACR,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC3C,OAAO;gBACP,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,MAAM,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,IAAI,EAAE,MAAM;aACJ,CAAC;YACX,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC;YACX,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,OAAO;aACL,CAAC;YAEX,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,aAAa,CAAC;gBACpB,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,KAAK;aACN,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;gBACpD,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,SAAS;gBACT,KAAK;aACN,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/signature/service.test.integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,SAAS,GAAG,oBAAoB,CAAC;IACvC,MAAM,OAAO,GAAG,mBAAmB,CACjC,oEAA2E,CAC5E,CAAC;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,MAAM,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAE3D,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,qCAAqC,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,MAAM,EAAE;oBACN,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,IAAI,EAAE,MAAM;iBACb;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;iBACd;gBACD,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;iBACzC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,MAAM,CAAC,gDAAgD,EAAE,GAAG,EAAE,CAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,SAAS,GACb,sIAA6I,CAAC;YAEhJ,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAExD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,wDAAwD,EAAE,GAAG,EAAE,CACvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAkB,CAAC,CAAC,CAAC;YAE5E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAC7C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,CAAC,EAAE,oEAA2E;gBAC9E,CAAC,EAAE,oEAA2E;gBAC9E,CAAC,EAAE,GAAG;aACP,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,MAAM,CAAC,kCAAkC,EAAE,GAAG,EAAE,CACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,OAAO,GAAG,eAAe,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,WAAW,CAAC;gBAClB,OAAO;aACR,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO;gBACP,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,qCAAqC,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,eAAe;gBACxB,SAAS,EACP,sIAA6I;aAChJ,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,MAAM,CAAC,6CAA6C,EAAE,GAAG,EAAE,CAC5D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,IAAI,EAAE,MAAM;aACJ,CAAC;YACX,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC;YACX,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,OAAO;aACL,CAAC;YAEX,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,aAAa,CAAC;gBACpB,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,KAAK;aACN,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,SAAS;gBACT,KAAK;aACN,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,MAAM,CAAC,yCAAyC,EAAE,GAAG,EAAE,CACxD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,OAAO,GAAG,eAAe,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,WAAW,CAAC;gBAClB,OAAO;aACR,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC3C,OAAO;gBACP,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,MAAM,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;YACxC,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,IAAI,EAAE,MAAM;aACJ,CAAC;YACX,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAChC,CAAC;YACX,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,OAAO;aACL,CAAC;YAEX,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,OAAO,CAAC,aAAa,CAAC;gBACpB,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,KAAK;aACN,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;gBACpD,MAAM;gBACN,OAAO;gBACP,WAAW,EAAE,MAAM;gBACnB,SAAS;gBACT,KAAK;aACN,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","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":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/simulation/service.ts"],"names":[],"mappings":"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","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"]}