@pimlico/alto 0.0.19 → 0.0.20

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 (337) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -1
  2. package/contracts/ERC165.sol/ERC165.json +1 -1
  3. package/contracts/ERC20.sol/ERC20.json +1 -1
  4. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -1
  5. package/contracts/EntryPoint.sol/EntryPoint.json +1 -1
  6. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  7. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  8. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  9. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  10. package/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  11. package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  12. package/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  13. package/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  14. package/contracts/Exec.sol/Exec.json +1 -1
  15. package/contracts/IAccount.sol/IAccount.json +1 -1
  16. package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -1
  17. package/contracts/IAggregator.sol/IAggregator.json +1 -1
  18. package/contracts/IERC165.sol/IERC165.json +1 -1
  19. package/contracts/IERC5267.sol/IERC5267.json +1 -1
  20. package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -1
  21. package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride08.json +1 -0
  22. package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride09.json +1 -0
  23. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -1
  24. package/contracts/INonceManager.sol/INonceManager.json +1 -1
  25. package/contracts/IPaymaster.sol/IPaymaster.json +1 -1
  26. package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -1
  27. package/contracts/IStakeManager.sol/IStakeManager.json +1 -1
  28. package/contracts/LibBytes.sol/LibBytes.json +1 -1
  29. package/contracts/Math.sol/Math.json +1 -1
  30. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -1
  31. package/contracts/NonceManager.sol/NonceManager.json +1 -1
  32. package/contracts/Panic.sol/Panic.json +1 -1
  33. package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  34. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -1
  35. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -1
  36. package/contracts/SafeCast.sol/SafeCast.json +1 -1
  37. package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
  38. package/contracts/ShortStrings.sol/ShortStrings.json +1 -1
  39. package/contracts/SignedMath.sol/SignedMath.json +1 -1
  40. package/contracts/SimulationOverrideHelper.sol/SimulationOverrideHelper.json +1 -0
  41. package/contracts/StakeManager.sol/StakeManager.json +1 -1
  42. package/contracts/StorageSlot.sol/StorageSlot.json +1 -1
  43. package/contracts/Strings.sol/Strings.json +1 -1
  44. package/contracts/TransientSlot.sol/TransientSlot.json +1 -1
  45. package/contracts/UserOperation.sol/UserOperationLib.json +1 -1
  46. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -1
  47. package/contracts/account-abstraction-v9/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -0
  48. package/contracts/account-abstraction-v9/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  49. package/contracts/account-abstraction-v9/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
  50. package/contracts/account-abstraction-v9/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -0
  51. package/contracts/build-info/338795fc743ca612.json +1 -0
  52. package/contracts/build-info/44a9648cfe32a468.json +1 -0
  53. package/contracts/build-info/{880955d5786bfdae.json → 8dbf8a4ad39019b5.json} +1 -1
  54. package/contracts/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  55. package/contracts/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  56. package/contracts/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  57. package/contracts/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  58. package/contracts/core/Eip7702Support.sol/Eip7702Support.json +1 -0
  59. package/contracts/core/NonceManager.sol/NonceManager.json +1 -0
  60. package/contracts/core/SenderCreator.sol/SenderCreator.json +1 -0
  61. package/contracts/core/StakeManager.sol/StakeManager.json +1 -0
  62. package/contracts/core/UserOperationLib.sol/UserOperationLib.json +1 -0
  63. package/contracts/interfaces/IAccount.sol/IAccount.json +1 -0
  64. package/contracts/interfaces/IAccountExecute.sol/IAccountExecute.json +1 -0
  65. package/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  66. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  67. package/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  68. package/contracts/interfaces/IPaymaster.sol/IPaymaster.json +1 -0
  69. package/contracts/interfaces/ISenderCreator.sol/ISenderCreator.json +1 -0
  70. package/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  71. package/contracts/overrides/Eip7702Support.sol/Eip7702Support.json +1 -0
  72. package/contracts/overrides/NonceManager.sol/NonceManager.json +1 -0
  73. package/contracts/overrides/SenderCreator.sol/SenderCreator.json +1 -0
  74. package/contracts/overrides/StakeManager.sol/StakeManager.json +1 -0
  75. package/contracts/overrides/UserOperationLib.sol/UserOperationLib.json +1 -0
  76. package/contracts/utils/Exec.sol/Exec.json +1 -1
  77. package/contracts/utils/StorageSlot.sol/StorageSlot.json +1 -0
  78. package/contracts/v09/EntryPoint.sol/EntryPoint.json +1 -0
  79. package/esm/cli/alto.js +13 -6
  80. package/esm/cli/alto.js.map +1 -1
  81. package/esm/cli/config/bundler.d.ts +190 -148
  82. package/esm/cli/config/bundler.js +72 -83
  83. package/esm/cli/config/bundler.js.map +1 -1
  84. package/esm/cli/config/options.d.ts +2 -1
  85. package/esm/cli/config/options.js +105 -68
  86. package/esm/cli/config/options.js.map +1 -1
  87. package/esm/cli/customTransport.d.ts +3 -3
  88. package/esm/cli/deploySimulationsContract.d.ts +1 -0
  89. package/esm/cli/deploySimulationsContract.js +41 -5
  90. package/esm/cli/deploySimulationsContract.js.map +1 -1
  91. package/esm/cli/handler.js +48 -52
  92. package/esm/cli/handler.js.map +1 -1
  93. package/esm/cli/setupServer.js +46 -47
  94. package/esm/cli/setupServer.js.map +1 -1
  95. package/esm/cli/shutDown.d.ts +20 -0
  96. package/esm/cli/shutDown.js +260 -0
  97. package/esm/cli/shutDown.js.map +1 -0
  98. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  99. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  100. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  101. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  102. package/esm/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  103. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  104. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  105. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  106. package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  107. package/esm/createConfig.d.ts +9 -2
  108. package/esm/createConfig.js.map +1 -1
  109. package/esm/executor/{userOpMonitor.d.ts → bundleManager.d.ts} +38 -32
  110. package/esm/executor/{userOpMonitor.js → bundleManager.js} +127 -99
  111. package/esm/executor/bundleManager.js.map +1 -0
  112. package/esm/executor/executor.d.ts +4 -3
  113. package/esm/executor/executor.js +33 -20
  114. package/esm/executor/executor.js.map +1 -1
  115. package/esm/executor/executorManager.d.ts +17 -15
  116. package/esm/executor/executorManager.js +130 -55
  117. package/esm/executor/executorManager.js.map +1 -1
  118. package/esm/executor/filterOpsAndEstimateGas.d.ts +17 -2
  119. package/esm/executor/filterOpsAndEstimateGas.js +100 -77
  120. package/esm/executor/filterOpsAndEstimateGas.js.map +1 -1
  121. package/esm/executor/index.d.ts +1 -0
  122. package/esm/executor/index.js +1 -0
  123. package/esm/executor/index.js.map +1 -1
  124. package/esm/executor/senderManager/createMemorySenderManager.js +13 -0
  125. package/esm/executor/senderManager/createMemorySenderManager.js.map +1 -1
  126. package/esm/executor/senderManager/createRedisSenderManager.d.ts +2 -1
  127. package/esm/executor/senderManager/createRedisSenderManager.js +3 -6
  128. package/esm/executor/senderManager/createRedisSenderManager.js.map +1 -1
  129. package/esm/executor/senderManager/flushOnStartUp.js +4 -4
  130. package/esm/executor/senderManager/flushOnStartUp.js.map +1 -1
  131. package/esm/executor/senderManager/index.d.ts +1 -0
  132. package/esm/executor/senderManager/index.js +6 -2
  133. package/esm/executor/senderManager/index.js.map +1 -1
  134. package/esm/executor/senderManager/validateAndRefill.js +2 -2
  135. package/esm/executor/senderManager/validateAndRefill.js.map +1 -1
  136. package/esm/executor/utilityWalletMonitor.d.ts +4 -4
  137. package/esm/executor/utilityWalletMonitor.js +1 -1
  138. package/esm/executor/utilityWalletMonitor.js.map +1 -1
  139. package/esm/executor/utils.d.ts +7 -2
  140. package/esm/executor/utils.js +57 -26
  141. package/esm/executor/utils.js.map +1 -1
  142. package/esm/handlers/arbitrumGasPriceManager.d.ts +3 -2
  143. package/esm/handlers/arbitrumGasPriceManager.js +6 -2
  144. package/esm/handlers/arbitrumGasPriceManager.js.map +1 -1
  145. package/esm/handlers/eventManager.d.ts +9 -9
  146. package/esm/handlers/eventManager.js +59 -60
  147. package/esm/handlers/eventManager.js.map +1 -1
  148. package/esm/handlers/gasPriceManager.d.ts +8 -9
  149. package/esm/handlers/gasPriceManager.js +68 -80
  150. package/esm/handlers/gasPriceManager.js.map +1 -1
  151. package/esm/handlers/mantleGasPriceManager.d.ts +4 -4
  152. package/esm/handlers/mantleGasPriceManager.js +4 -4
  153. package/esm/handlers/mantleGasPriceManager.js.map +1 -1
  154. package/esm/handlers/optimismManager.d.ts +1 -1
  155. package/esm/handlers/optimismManager.js +1 -1
  156. package/esm/handlers/optimismManager.js.map +1 -1
  157. package/esm/mempool/index.d.ts +1 -1
  158. package/esm/mempool/index.js +1 -1
  159. package/esm/mempool/index.js.map +1 -1
  160. package/esm/mempool/mempool.d.ts +57 -22
  161. package/esm/mempool/mempool.js +180 -134
  162. package/esm/mempool/mempool.js.map +1 -1
  163. package/esm/mempool/reputationManager.d.ts +14 -14
  164. package/esm/mempool/reputationManager.js +36 -39
  165. package/esm/mempool/reputationManager.js.map +1 -1
  166. package/esm/mempool/statusManager.d.ts +20 -0
  167. package/esm/mempool/statusManager.js +143 -0
  168. package/esm/mempool/statusManager.js.map +1 -0
  169. package/esm/receiptCache/createMemoryReceiptCache.d.ts +3 -0
  170. package/esm/receiptCache/createMemoryReceiptCache.js +30 -0
  171. package/esm/receiptCache/createMemoryReceiptCache.js.map +1 -0
  172. package/esm/receiptCache/createRedisReceiptCache.d.ts +10 -0
  173. package/esm/receiptCache/createRedisReceiptCache.js +56 -0
  174. package/esm/receiptCache/createRedisReceiptCache.js.map +1 -0
  175. package/esm/receiptCache/index.d.ts +11 -0
  176. package/esm/receiptCache/index.js +21 -0
  177. package/esm/receiptCache/index.js.map +1 -0
  178. package/esm/rpc/createMethodHandler.js.map +1 -1
  179. package/esm/rpc/estimation/gasEstimationHandler.d.ts +2 -4
  180. package/esm/rpc/estimation/gasEstimationHandler.js.map +1 -1
  181. package/esm/rpc/estimation/gasEstimations06.d.ts +6 -7
  182. package/esm/rpc/estimation/gasEstimations06.js +1 -5
  183. package/esm/rpc/estimation/gasEstimations06.js.map +1 -1
  184. package/esm/rpc/estimation/gasEstimations07.d.ts +13 -41
  185. package/esm/rpc/estimation/gasEstimations07.js +27 -34
  186. package/esm/rpc/estimation/gasEstimations07.js.map +1 -1
  187. package/esm/{utils/preVerificationGasCalulator.d.ts → rpc/estimation/preVerificationGasCalculator.d.ts} +20 -6
  188. package/esm/{utils/preVerificationGasCalulator.js → rpc/estimation/preVerificationGasCalculator.js} +95 -47
  189. package/esm/rpc/estimation/preVerificationGasCalculator.js.map +1 -0
  190. package/esm/rpc/estimation/types.d.ts +4 -2
  191. package/esm/rpc/estimation/utils.d.ts +10 -8
  192. package/esm/rpc/estimation/utils.js +54 -48
  193. package/esm/rpc/estimation/utils.js.map +1 -1
  194. package/esm/rpc/methods/boost_sendUserOperation.d.ts +304 -0
  195. package/esm/rpc/methods/debug_bundler_clearReputation.js +1 -1
  196. package/esm/rpc/methods/debug_bundler_clearReputation.js.map +1 -1
  197. package/esm/rpc/methods/debug_bundler_clearState.js +1 -1
  198. package/esm/rpc/methods/debug_bundler_clearState.js.map +1 -1
  199. package/esm/rpc/methods/debug_bundler_dumpMempool.d.ts +338 -0
  200. package/esm/rpc/methods/debug_bundler_dumpReputation.js +1 -1
  201. package/esm/rpc/methods/debug_bundler_dumpReputation.js.map +1 -1
  202. package/esm/rpc/methods/eth_estimateUserOperationGas.d.ts +622 -14
  203. package/esm/rpc/methods/eth_estimateUserOperationGas.js +50 -29
  204. package/esm/rpc/methods/eth_estimateUserOperationGas.js.map +1 -1
  205. package/esm/rpc/methods/eth_getUserOperationByHash.d.ts +621 -11
  206. package/esm/rpc/methods/eth_getUserOperationByHash.js.map +1 -1
  207. package/esm/rpc/methods/eth_getUserOperationReceipt.d.ts +26 -26
  208. package/esm/rpc/methods/eth_getUserOperationReceipt.js +1 -1
  209. package/esm/rpc/methods/eth_sendUserOperation.d.ts +305 -1
  210. package/esm/rpc/methods/eth_sendUserOperation.js +132 -36
  211. package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
  212. package/esm/rpc/methods/pimlico_getUserOperationStatus.js +1 -1
  213. package/esm/rpc/methods/pimlico_getUserOperationStatus.js.map +1 -1
  214. package/esm/rpc/methods/pimlico_sendUserOperationNow.d.ts +330 -26
  215. package/esm/rpc/methods/pimlico_sendUserOperationNow.js +15 -27
  216. package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  217. package/esm/rpc/methods/pimlico_simulateAssetChange.d.ts +620 -12
  218. package/esm/rpc/methods/pimlico_simulateAssetChange.js +14 -19
  219. package/esm/rpc/methods/pimlico_simulateAssetChange.js.map +1 -1
  220. package/esm/rpc/rpcHandler.d.ts +21 -22
  221. package/esm/rpc/rpcHandler.js +15 -17
  222. package/esm/rpc/rpcHandler.js.map +1 -1
  223. package/esm/rpc/server.d.ts +5 -5
  224. package/esm/rpc/server.js +15 -11
  225. package/esm/rpc/server.js.map +1 -1
  226. package/esm/rpc/validation/BundlerCollectorTracerV06.js +1 -1
  227. package/esm/rpc/validation/BundlerCollectorTracerV06.js.map +1 -1
  228. package/esm/rpc/validation/BundlerCollectorTracerV07.js +1 -1
  229. package/esm/rpc/validation/BundlerCollectorTracerV07.js.map +1 -1
  230. package/esm/rpc/validation/SafeValidator.d.ts +13 -14
  231. package/esm/rpc/validation/SafeValidator.js +24 -24
  232. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  233. package/esm/rpc/validation/TracerResultParserV06.d.ts +2 -2
  234. package/esm/rpc/validation/TracerResultParserV06.js +11 -11
  235. package/esm/rpc/validation/TracerResultParserV06.js.map +1 -1
  236. package/esm/rpc/validation/TracerResultParserV07.d.ts +2 -2
  237. package/esm/rpc/validation/TracerResultParserV07.js +13 -13
  238. package/esm/rpc/validation/TracerResultParserV07.js.map +1 -1
  239. package/esm/rpc/validation/UnsafeValidator.d.ts +18 -14
  240. package/esm/rpc/validation/UnsafeValidator.js +71 -40
  241. package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
  242. package/esm/store/createMempoolStore.d.ts +1 -1
  243. package/esm/store/createMempoolStore.js +63 -139
  244. package/esm/store/createMempoolStore.js.map +1 -1
  245. package/esm/store/index.d.ts +4 -75
  246. package/esm/store/index.js +4 -1
  247. package/esm/store/index.js.map +1 -1
  248. package/esm/store/outstanding/index.d.ts +13 -0
  249. package/esm/store/outstanding/index.js +16 -0
  250. package/esm/store/outstanding/index.js.map +1 -0
  251. package/esm/store/{createMemoryOutstandingStore.d.ts → outstanding/memory.d.ts} +14 -13
  252. package/esm/store/outstanding/memory.js +263 -0
  253. package/esm/store/outstanding/memory.js.map +1 -0
  254. package/esm/store/outstanding/redis.d.ts +11 -0
  255. package/esm/store/outstanding/redis.js +229 -0
  256. package/esm/store/outstanding/redis.js.map +1 -0
  257. package/esm/store/outstanding/types.d.ts +19 -0
  258. package/esm/store/outstanding/types.js +2 -0
  259. package/esm/store/outstanding/types.js.map +1 -0
  260. package/esm/store/processing/index.d.ts +11 -0
  261. package/esm/store/processing/index.js +17 -0
  262. package/esm/store/processing/index.js.map +1 -0
  263. package/esm/store/processing/memory.d.ts +16 -0
  264. package/esm/store/processing/memory.js +58 -0
  265. package/esm/store/processing/memory.js.map +1 -0
  266. package/esm/store/processing/redis.d.ts +23 -0
  267. package/esm/store/processing/redis.js +85 -0
  268. package/esm/store/processing/redis.js.map +1 -0
  269. package/esm/store/processing/types.d.ts +10 -0
  270. package/esm/store/processing/types.js +2 -0
  271. package/esm/store/processing/types.js.map +1 -0
  272. package/esm/store/types.d.ts +50 -0
  273. package/esm/store/types.js +2 -0
  274. package/esm/store/types.js.map +1 -0
  275. package/esm/types/contracts/PimlicoSimulations.d.ts +81 -0
  276. package/esm/types/contracts/PimlicoSimulations.js +105 -0
  277. package/esm/types/contracts/PimlicoSimulations.js.map +1 -1
  278. package/esm/types/gasPrice.js +0 -18
  279. package/esm/types/gasPrice.js.map +1 -1
  280. package/esm/types/interfaces.d.ts +15 -10
  281. package/esm/types/mempool.d.ts +3 -0
  282. package/esm/types/schemas.d.ts +13174 -4732
  283. package/esm/types/schemas.js +113 -25
  284. package/esm/types/schemas.js.map +1 -1
  285. package/esm/types/utils.d.ts +2 -5
  286. package/esm/types/utils.js +16 -18
  287. package/esm/types/utils.js.map +1 -1
  288. package/esm/types/validation.d.ts +7646 -6912
  289. package/esm/types/validation.js +122 -152
  290. package/esm/types/validation.js.map +1 -1
  291. package/esm/utils/eip7702.d.ts +2 -1
  292. package/esm/utils/eip7702.js +14 -8
  293. package/esm/utils/eip7702.js.map +1 -1
  294. package/esm/utils/entryPointOverrides.js +18 -4
  295. package/esm/utils/entryPointOverrides.js.map +1 -1
  296. package/esm/utils/helpers.d.ts +2 -1
  297. package/esm/utils/helpers.js +30 -11
  298. package/esm/utils/helpers.js.map +1 -1
  299. package/esm/utils/index.d.ts +0 -1
  300. package/esm/utils/index.js +0 -1
  301. package/esm/utils/index.js.map +1 -1
  302. package/esm/utils/metrics.d.ts +2 -1
  303. package/esm/utils/metrics.js +15 -8
  304. package/esm/utils/metrics.js.map +1 -1
  305. package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js +8 -9
  306. package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +1 -1
  307. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +24 -2
  308. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js +85 -64
  309. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js.map +1 -1
  310. package/esm/utils/minMaxQueue/index.d.ts +2 -2
  311. package/esm/utils/minMaxQueue/index.js +4 -3
  312. package/esm/utils/minMaxQueue/index.js.map +1 -1
  313. package/esm/utils/rpc-reply.d.ts +3 -3
  314. package/esm/utils/rpc-reply.js.map +1 -1
  315. package/esm/utils/toViemStateOverrides.js +7 -7
  316. package/esm/utils/toViemStateOverrides.js.map +1 -1
  317. package/esm/utils/userop.d.ts +87 -55
  318. package/esm/utils/userop.js +138 -248
  319. package/esm/utils/userop.js.map +1 -1
  320. package/package.json +4 -2
  321. package/contracts/build-info/7710b5a048396e70.json +0 -1
  322. package/esm/executor/userOpMonitor.js.map +0 -1
  323. package/esm/mempool/monitoring.d.ts +0 -15
  324. package/esm/mempool/monitoring.js +0 -118
  325. package/esm/mempool/monitoring.js.map +0 -1
  326. package/esm/store/createMemoryOutstandingStore.js +0 -240
  327. package/esm/store/createMemoryOutstandingStore.js.map +0 -1
  328. package/esm/store/createRedisOutstandingStore.d.ts +0 -27
  329. package/esm/store/createRedisOutstandingStore.js +0 -344
  330. package/esm/store/createRedisOutstandingStore.js.map +0 -1
  331. package/esm/store/createRedisStore.d.ts +0 -9
  332. package/esm/store/createRedisStore.js +0 -131
  333. package/esm/store/createRedisStore.js.map +0 -1
  334. package/esm/store/createStore.d.ts +0 -6
  335. package/esm/store/createStore.js +0 -66
  336. package/esm/store/createStore.js.map +0 -1
  337. package/esm/utils/preVerificationGasCalulator.js.map +0 -1
@@ -1,344 +0,0 @@
1
- import { userOpInfoSchema } from "../types/index.js";
2
- import { Redis } from "ioredis";
3
- import { toHex } from "viem/utils";
4
- import { getNonceKeyAndSequence, isVersion06, isVersion07 } from "../utils/userop.js";
5
- const serializeUserOpInfo = (userOpInfo) => {
6
- return JSON.stringify(userOpInfo, (_, value) => typeof value === "bigint" ? toHex(value) : value);
7
- };
8
- const deserializeUserOpInfo = (data) => {
9
- try {
10
- const parsed = JSON.parse(data);
11
- const result = userOpInfoSchema.safeParse(parsed);
12
- if (!result.success) {
13
- throw new Error(`Failed to parse UserOpInfo: ${result.error.message}`);
14
- }
15
- return result.data;
16
- }
17
- catch (error) {
18
- if (error instanceof Error) {
19
- throw new Error(`UserOpInfo deserialization failed: ${error.message}`);
20
- }
21
- throw new Error("UserOpInfo deserialization failed with unknown error");
22
- }
23
- };
24
- const isDeployment = (userOp) => {
25
- const isV6Deployment = isVersion06(userOp) && !!userOp.initCode && userOp.initCode !== "0x";
26
- const isV7Deployment = isVersion07(userOp) && !!userOp.factory && userOp.factory !== "0x";
27
- return isV6Deployment || isV7Deployment;
28
- };
29
- class RedisSortedSet {
30
- redis;
31
- keyName;
32
- constructor(redis, keyName) {
33
- this.redis = redis;
34
- this.keyName = keyName;
35
- }
36
- get keyPath() {
37
- return this.keyName;
38
- }
39
- async add({ member, score, multi = this.redis }) {
40
- await multi.zadd(this.keyPath, score, member);
41
- }
42
- async remove({ member, multi = this.redis }) {
43
- await multi.zrem(this.keyPath, member);
44
- }
45
- getByScoreRange(min, max) {
46
- return Promise.resolve(this.redis.zrangebyscore(this.keyPath, min, max));
47
- }
48
- getByRankRange(start, stop) {
49
- return Promise.resolve(this.redis.zrange(this.keyPath, start, stop));
50
- }
51
- async popMax() {
52
- const result = (await this.redis.zmpop(1, [this.keyPath], "MAX", "COUNT", 1));
53
- return result && result[1].length > 0 ? result[1][0][0] : undefined;
54
- }
55
- async popMin() {
56
- const result = (await this.redis.zmpop(1, [this.keyPath], "MIN", "COUNT", 1));
57
- return result && result[1].length > 0 ? result[1][0][0] : undefined;
58
- }
59
- async delete({ multi = this.redis }) {
60
- await multi.del(this.keyPath);
61
- }
62
- }
63
- export class RedisHash {
64
- redis;
65
- keyName;
66
- constructor(redis, keyName) {
67
- this.redis = redis;
68
- this.keyName = keyName;
69
- }
70
- get keyPath() {
71
- return this.keyName;
72
- }
73
- async set({ key, value, multi = this.redis }) {
74
- await multi.hset(this.keyPath, key, value);
75
- }
76
- get(field) {
77
- return Promise.resolve(this.redis.hget(this.keyPath, field));
78
- }
79
- async delete({ key, multi = this.redis }) {
80
- await multi.hdel(this.keyPath, key);
81
- }
82
- async exists(field) {
83
- return (await this.redis.hexists(this.keyPath, field)) === 1;
84
- }
85
- getAll() {
86
- return Promise.resolve(this.redis.hgetall(this.keyPath));
87
- }
88
- }
89
- class RedisOutstandingQueue {
90
- redis;
91
- chainId;
92
- entryPoint;
93
- // Redis data structures
94
- readyOpsQueue; // gasPrice -> pendingOpsKey
95
- userOpHashLookup; // userOpHash -> pendingOpsKey
96
- factoryLookup; // sender -> userOpHash
97
- constructor({ config, entryPoint }) {
98
- if (!config.redisMempoolUrl) {
99
- throw new Error("Missing required redisMempoolUrl");
100
- }
101
- this.redis = new Redis(config.redisMempoolUrl, {});
102
- this.chainId = config.chainId;
103
- this.entryPoint = entryPoint;
104
- // Initialize Redis data structures
105
- const factoryLookupKey = `${this.chainId}:outstanding:factory-lookup:${this.entryPoint}`;
106
- const userOpHashLookupKey = `${this.chainId}:outstanding:user-op-hash-index:${this.entryPoint}`;
107
- const readyOpsQueueKey = `${this.chainId}:outstanding:pending-queue:${this.entryPoint}`;
108
- this.readyOpsQueue = new RedisSortedSet(this.redis, readyOpsQueueKey);
109
- this.userOpHashLookup = new RedisHash(this.redis, userOpHashLookupKey);
110
- this.factoryLookup = new RedisHash(this.redis, factoryLookupKey);
111
- }
112
- // Helpers
113
- getPendingOpsSet(userOp) {
114
- return new RedisSortedSet(this.redis, this.getPendingOpsKey(userOp));
115
- }
116
- getPendingOpsKey(userOp) {
117
- const [nonceKey] = getNonceKeyAndSequence(userOp.nonce);
118
- const fingerprint = `${userOp.sender}-${toHex(nonceKey)}`;
119
- return `${this.chainId}:outstanding:pending-ops:${this.entryPoint}:${fingerprint}`;
120
- }
121
- // OutstandingStore methods
122
- contains(userOpHash) {
123
- return Promise.resolve(this.userOpHashLookup.exists(userOpHash));
124
- }
125
- async popConflicting(userOp) {
126
- const [, nonceSeq] = getNonceKeyAndSequence(userOp.nonce);
127
- const pendingOpsSet = this.getPendingOpsSet(userOp);
128
- // Check for operations with the same nonce sequence
129
- const conflictingNonce = await pendingOpsSet.getByScoreRange(Number(nonceSeq), Number(nonceSeq));
130
- if (conflictingNonce.length > 0) {
131
- const conflicting = deserializeUserOpInfo(conflictingNonce[0]);
132
- await this.remove(conflicting.userOpHash);
133
- return {
134
- reason: "conflicting_nonce",
135
- userOpInfo: conflicting
136
- };
137
- }
138
- // Check for conflicting deployments to the same address
139
- if (isDeployment(userOp)) {
140
- const conflictingUserOpHash = await this.factoryLookup.get(userOp.sender);
141
- if (conflictingUserOpHash) {
142
- const pendingOpsKey = await this.userOpHashLookup.get(conflictingUserOpHash);
143
- if (pendingOpsKey) {
144
- const conflictingPendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKey);
145
- const ops = await conflictingPendingOpsSet.getByRankRange(0, -1);
146
- const userOps = ops.map(deserializeUserOpInfo);
147
- const conflictingUserOp = userOps.find((op) => op.userOpHash === conflictingUserOpHash);
148
- if (conflictingUserOp) {
149
- await this.remove(conflictingUserOp.userOpHash);
150
- return {
151
- reason: "conflicting_deployment",
152
- userOpInfo: conflictingUserOp
153
- };
154
- }
155
- }
156
- }
157
- }
158
- return undefined;
159
- }
160
- async peek() {
161
- // Get highest gas price operation's key
162
- const pendingOpsKeys = await this.readyOpsQueue.getByRankRange(0, 0);
163
- if (pendingOpsKeys.length === 0) {
164
- return undefined;
165
- }
166
- // Get the lowest nonce operation from the pendingOpsKey
167
- const pendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKeys[0]);
168
- const userOpInfoStrings = await pendingOpsSet.getByRankRange(0, 0);
169
- if (userOpInfoStrings.length === 0) {
170
- return undefined;
171
- }
172
- return deserializeUserOpInfo(userOpInfoStrings[0]);
173
- }
174
- async add(userOpInfo) {
175
- const { userOpHash, userOp } = userOpInfo;
176
- const pendingOpsSet = this.getPendingOpsSet(userOp);
177
- const [, nonceSeq] = getNonceKeyAndSequence(userOp.nonce);
178
- // check if this will be the lowest nonce operation
179
- // We need this info before starting the transaction
180
- const existingOps = await pendingOpsSet.getByRankRange(0, 0);
181
- const isLowestNonce = existingOps.length === 0 ||
182
- userOp.nonce < deserializeUserOpInfo(existingOps[0]).userOp.nonce;
183
- const multi = this.redis.multi();
184
- // Add to pendingOps sorted set with nonceSeq as score
185
- await pendingOpsSet.add({
186
- member: serializeUserOpInfo(userOpInfo),
187
- score: Number(nonceSeq),
188
- multi
189
- });
190
- // Add to userOpHash lookup
191
- await this.userOpHashLookup.set({
192
- key: userOpHash,
193
- value: pendingOpsSet.keyPath,
194
- multi
195
- });
196
- // Track factory deployments if needed
197
- if (isDeployment(userOp)) {
198
- await this.factoryLookup.set({
199
- key: userOp.sender,
200
- value: userOpHash,
201
- multi
202
- });
203
- }
204
- // If lowest nonce, update ready queue with this userOp's gasPrice
205
- if (isLowestNonce) {
206
- await this.readyOpsQueue.add({
207
- member: pendingOpsSet.keyPath,
208
- score: Number(userOp.maxFeePerGas),
209
- multi
210
- });
211
- }
212
- await multi.exec();
213
- }
214
- async remove(userOpHash) {
215
- // Get the userOp info from the secondary index
216
- const pendingOpsKey = await this.userOpHashLookup.get(userOpHash);
217
- if (!pendingOpsKey) {
218
- return false;
219
- }
220
- // Get all pending operations for this key
221
- const pendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKey);
222
- const ops = await pendingOpsSet.getByRankRange(0, -1);
223
- if (ops.length === 0) {
224
- return false;
225
- }
226
- const userOps = ops.map(deserializeUserOpInfo);
227
- const userOpInfo = userOps.find((op) => op.userOpHash === userOpHash);
228
- if (!userOpInfo) {
229
- return false;
230
- }
231
- // Check if we're removing the lowest nonce operation
232
- const isLowestNonce = userOps[0].userOpHash === userOpHash;
233
- // If this is the lowest nonce, check if there's a next operation before starting the transaction
234
- let nextOp;
235
- if (isLowestNonce && userOps.length > 1) {
236
- // userOps is already sorted by nonce sequence because it comes from the sorted set
237
- // So we can simply take the second operation as the next one
238
- nextOp = userOps[1];
239
- }
240
- // Create a transaction
241
- const multi = this.redis.multi();
242
- // Clean up factory deployment tracking if needed
243
- if (isDeployment(userOpInfo.userOp)) {
244
- await this.factoryLookup.delete({
245
- key: userOpInfo.userOp.sender,
246
- multi
247
- });
248
- }
249
- // Remove from the sorted set
250
- await pendingOpsSet.remove({
251
- member: serializeUserOpInfo(userOpInfo),
252
- multi
253
- });
254
- // Remove from hash lookup
255
- await this.userOpHashLookup.delete({
256
- key: userOpHash,
257
- multi
258
- });
259
- if (isLowestNonce) {
260
- // Remove from ready queue
261
- await this.readyOpsQueue.remove({ member: pendingOpsKey, multi });
262
- // If we have a next operation, add it to the ready queue
263
- if (nextOp) {
264
- await this.readyOpsQueue.add({
265
- member: pendingOpsKey,
266
- score: Number(nextOp.userOp.maxFeePerGas),
267
- multi
268
- });
269
- }
270
- }
271
- // Execute transaction
272
- await multi.exec();
273
- return true;
274
- }
275
- async pop() {
276
- // Pop highest gas price operation
277
- const pendingOpsKey = await this.readyOpsQueue.popMax();
278
- if (!pendingOpsKey) {
279
- return undefined;
280
- }
281
- const pendingOpsSet = new RedisSortedSet(this.redis, pendingOpsKey);
282
- // Get the operations from the set (limited to 2 for efficiency)
283
- const ops = await pendingOpsSet.getByRankRange(0, 1);
284
- if (ops.length === 0) {
285
- return undefined;
286
- }
287
- const currentUserOpStr = ops[0];
288
- const currentUserOp = deserializeUserOpInfo(currentUserOpStr);
289
- // Create a transaction
290
- const multi = this.redis.multi();
291
- // Remove the current operation
292
- await pendingOpsSet.remove({ member: currentUserOpStr, multi });
293
- await this.userOpHashLookup.delete({
294
- key: currentUserOp.userOpHash,
295
- multi
296
- });
297
- // Execute transaction
298
- await multi.exec();
299
- // Check if there are more operations in this set
300
- if (ops.length > 1) {
301
- const nextUserOp = deserializeUserOpInfo(ops[1]);
302
- await this.readyOpsQueue.add({
303
- member: pendingOpsKey,
304
- score: Number(nextUserOp.userOp.maxFeePerGas)
305
- });
306
- }
307
- else {
308
- // Delete the empty set
309
- await pendingOpsSet.delete({});
310
- }
311
- return currentUserOp;
312
- }
313
- async getQueuedUserOps(userOp) {
314
- const pendingOpsSet = this.getPendingOpsSet(userOp);
315
- const [, nonceSequence] = getNonceKeyAndSequence(userOp.nonce);
316
- const pendingOps = await pendingOpsSet.getByRankRange(0, -1);
317
- // Filter operations with nonce sequence less than the current one
318
- return pendingOps
319
- .map(deserializeUserOpInfo)
320
- .filter((opInfo) => {
321
- const [, opNonceSeq] = getNonceKeyAndSequence(opInfo.userOp.nonce);
322
- return opNonceSeq < nonceSequence;
323
- })
324
- .map((opInfo) => opInfo.userOp);
325
- }
326
- // These methods aren't implemented
327
- dumpLocal() {
328
- return Promise.resolve([]); // We can't dump from redis as the latency is too high
329
- }
330
- clear() {
331
- throw new Error("Not implemented: clear");
332
- }
333
- // Skip limit checks when using Redis
334
- validateQueuedLimit() {
335
- return true;
336
- }
337
- validateParallelLimit() {
338
- return true;
339
- }
340
- }
341
- export const createRedisOutstandingQueue = ({ config, entryPoint }) => {
342
- return new RedisOutstandingQueue({ config, entryPoint });
343
- };
344
- //# sourceMappingURL=createRedisOutstandingStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRedisOutstandingStore.js","sourceRoot":"","sources":["../../store/createRedisOutstandingStore.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { type Address } from "viem";
2
- import type { Store } from "./index.js";
3
- import type { AltoConfig } from "../createConfig.js";
4
- export declare const createRedisStore: ({ config, storeType, entryPoint }: {
5
- config: AltoConfig;
6
- storeType: string;
7
- entryPoint: Address;
8
- }) => Store;
9
- //# sourceMappingURL=createRedisStore.d.ts.map
@@ -1,131 +0,0 @@
1
- import Redis from "ioredis";
2
- import { toHex } from "viem";
3
- import { userOperationSchema } from "../types/schemas.js";
4
- import { isVersion06, isVersion07 } from "../utils/userop.js";
5
- import { RedisHash } from "./createRedisOutstandingStore.js";
6
- import { createMemoryStore } from "./createStore.js";
7
- const isDeploymentOperation = (userOp) => {
8
- const isV6Deployment = isVersion06(userOp) && !!userOp.initCode && userOp.initCode !== "0x";
9
- const isV7Deployment = isVersion07(userOp) && !!userOp.factory && userOp.factory !== "0x";
10
- return isV6Deployment || isV7Deployment;
11
- };
12
- const serializeUserOp = (userOpInfo) => {
13
- return JSON.stringify(userOpInfo, (_, value) => typeof value === "bigint" ? toHex(value) : value);
14
- };
15
- const deserializeUserOp = (data) => {
16
- try {
17
- const parsed = JSON.parse(data);
18
- const result = userOperationSchema.safeParse(parsed);
19
- if (!result.success) {
20
- throw new Error(`Failed to parse UserOpInfo: ${result.error.message}`);
21
- }
22
- return result.data;
23
- }
24
- catch (error) {
25
- if (error instanceof Error) {
26
- throw new Error(`UserOpInfo deserialization failed: ${error.message}`);
27
- }
28
- throw new Error("UserOpInfo deserialization failed with unknown error");
29
- }
30
- };
31
- export const createRedisStore = ({ config, storeType, entryPoint }) => {
32
- if (!config.redisMempoolUrl) {
33
- throw new Error("Missing required redisMempoolUrl");
34
- }
35
- const redis = new Redis(config.redisMempoolUrl, {});
36
- const factoryLookupKey = `${config.chainId}:${storeType}:factory-lookup:${entryPoint}`;
37
- const conflictingNonceKey = `${config.chainId}:${storeType}:conflicting-nonce:${entryPoint}`;
38
- const userOpHashLookupKey = `${config.chainId}:${storeType}:user-op-hash-index:${entryPoint}`;
39
- const senderNonceLookupKey = `${config.chainId}:${storeType}:sender-nonce-lookup:${entryPoint}`;
40
- const conflictingNonce = new RedisHash(redis, conflictingNonceKey); // userOpHash -> userOp
41
- const factoryLookup = new RedisHash(redis, factoryLookupKey); // sender -> userOpHash (if deployment is present)
42
- const senderNonceLookup = new RedisHash(redis, senderNonceLookupKey); // sender + nonce -> userOp
43
- const userOpHashLookup = new RedisHash(redis, userOpHashLookupKey); // userOpHash -> userOp
44
- const memoryStore = createMemoryStore({ config });
45
- const encodeSenderNonce = (userOp) => {
46
- return `${userOp.sender}-${userOp.nonce}`;
47
- };
48
- return {
49
- add: async (op) => {
50
- // Local memory logic
51
- memoryStore.add(op);
52
- // Global redis logic
53
- const { userOpHash, userOp } = op;
54
- const multi = redis.multi();
55
- await userOpHashLookup.set({
56
- key: userOpHash,
57
- value: serializeUserOp(userOp),
58
- multi
59
- });
60
- await conflictingNonce.set({
61
- key: userOpHash,
62
- value: serializeUserOp(userOp),
63
- multi
64
- });
65
- await senderNonceLookup.set({
66
- key: encodeSenderNonce(userOp),
67
- value: serializeUserOp(userOp),
68
- multi
69
- });
70
- if (isDeploymentOperation(userOp)) {
71
- await factoryLookup.set({
72
- key: op.userOp.sender,
73
- value: op.userOpHash,
74
- multi
75
- });
76
- }
77
- await multi.exec();
78
- },
79
- remove: async (userOpHash) => {
80
- // Local memory logic
81
- memoryStore.remove(userOpHash);
82
- // Redis Logic
83
- const exist = await userOpHashLookup.get(userOpHash);
84
- if (!exist) {
85
- return false;
86
- }
87
- const userOp = deserializeUserOp(exist);
88
- const multi = redis.multi();
89
- await userOpHashLookup.delete({ key: userOpHash, multi });
90
- await senderNonceLookup.delete({
91
- key: encodeSenderNonce(userOp),
92
- multi
93
- });
94
- if (isDeploymentOperation(userOp)) {
95
- await factoryLookup.delete({ key: userOp.sender, multi });
96
- }
97
- await multi.exec();
98
- return true;
99
- },
100
- contains: async (userOpHash) => {
101
- return await userOpHashLookup.exists(userOpHash);
102
- },
103
- dumpLocal: () => {
104
- return memoryStore.dumpLocal();
105
- },
106
- findConflicting: async (userOp) => {
107
- const conflictingNonce = await senderNonceLookup.get(encodeSenderNonce(userOp));
108
- if (conflictingNonce) {
109
- return {
110
- reason: "conflicting_nonce",
111
- userOp: deserializeUserOp(conflictingNonce)
112
- };
113
- }
114
- if (isDeploymentOperation(userOp)) {
115
- const userOpHash = await factoryLookup.get(userOp.sender);
116
- if (userOpHash) {
117
- const userOp = await userOpHashLookup.get(userOpHash);
118
- if (!userOp) {
119
- return undefined;
120
- }
121
- return {
122
- reason: "conflicting_deployment",
123
- userOp: deserializeUserOp(userOp)
124
- };
125
- }
126
- }
127
- return undefined;
128
- }
129
- };
130
- };
131
- //# sourceMappingURL=createRedisStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRedisStore.js","sourceRoot":"","sources":["../../store/createRedisStore.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { Store } from "./index.js";
2
- import type { AltoConfig } from "../createConfig.js";
3
- export declare const createMemoryStore: ({ config }: {
4
- config: AltoConfig;
5
- }) => Store;
6
- //# sourceMappingURL=createStore.d.ts.map
@@ -1,66 +0,0 @@
1
- import { isVersion06, isVersion07 } from "../utils/userop.js";
2
- export const createMemoryStore = ({ config }) => {
3
- let store = [];
4
- return {
5
- findConflicting: async (userOp) => {
6
- const dump = [...store];
7
- const { sender, nonce } = userOp;
8
- // Check for same sender and nonce
9
- const conflictingNonce = dump.find((userOpInfo) => {
10
- const { userOp: mempoolUserOp } = userOpInfo;
11
- return (mempoolUserOp.sender === sender &&
12
- mempoolUserOp.nonce === nonce);
13
- });
14
- if (conflictingNonce) {
15
- return {
16
- reason: "conflicting_nonce",
17
- userOp: conflictingNonce.userOp
18
- };
19
- }
20
- // Check for deployment conflict
21
- const isCurrentOpDeployment = (isVersion06(userOp) &&
22
- userOp.initCode &&
23
- userOp.initCode !== "0x") ||
24
- (isVersion07(userOp) &&
25
- userOp.factory &&
26
- userOp.factory !== "0x");
27
- if (isCurrentOpDeployment) {
28
- const conflictingDeployment = dump.find((userOpInfo) => {
29
- const { userOp: mempoolUserOp } = userOpInfo;
30
- const isV6Deployment = isVersion06(mempoolUserOp) &&
31
- mempoolUserOp.initCode &&
32
- mempoolUserOp.initCode !== "0x";
33
- const isV7Deployment = isVersion07(mempoolUserOp) &&
34
- mempoolUserOp.factory &&
35
- mempoolUserOp.factory !== "0x";
36
- const isDeployment = isV6Deployment || isV7Deployment;
37
- return mempoolUserOp.sender === sender && isDeployment;
38
- });
39
- if (conflictingDeployment) {
40
- return {
41
- reason: "conflicting_deployment",
42
- userOp: conflictingDeployment.userOp
43
- };
44
- }
45
- }
46
- return undefined;
47
- },
48
- add: (op) => {
49
- store = [...store, op];
50
- return Promise.resolve();
51
- },
52
- remove: (userOpHash) => {
53
- const exists = store.some((op) => op.userOpHash === userOpHash);
54
- store = store.filter((op) => op.userOpHash !== userOpHash);
55
- return Promise.resolve(exists);
56
- },
57
- contains: (userOpHash) => {
58
- const contains = store.some((op) => op.userOpHash === userOpHash);
59
- return Promise.resolve(contains);
60
- },
61
- dumpLocal: () => {
62
- return Promise.resolve([...store]);
63
- }
64
- };
65
- };
66
- //# sourceMappingURL=createStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createStore.js","sourceRoot":"","sources":["../../store/createStore.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preVerificationGasCalulator.js","sourceRoot":"","sources":["../../utils/preVerificationGasCalulator.ts"],"names":[],"mappings":"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"}