@pimlico/alto 0.0.18 → 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 (749) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -0
  2. package/contracts/ERC165.sol/ERC165.json +1 -0
  3. package/contracts/ERC20.sol/ERC20.json +1 -0
  4. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -0
  5. package/contracts/EntryPoint.sol/EntryPoint.json +1 -0
  6. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -0
  7. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -0
  8. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -0
  9. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  10. package/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -0
  11. package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -0
  12. package/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -0
  13. package/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  14. package/contracts/Exec.sol/Exec.json +1 -0
  15. package/contracts/IAccount.sol/IAccount.json +1 -0
  16. package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -0
  17. package/contracts/IAggregator.sol/IAggregator.json +1 -0
  18. package/contracts/IERC165.sol/IERC165.json +1 -0
  19. package/contracts/IERC5267.sol/IERC5267.json +1 -0
  20. package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -0
  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 -0
  24. package/contracts/INonceManager.sol/INonceManager.json +1 -0
  25. package/contracts/IPaymaster.sol/IPaymaster.json +1 -0
  26. package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -0
  27. package/contracts/IStakeManager.sol/IStakeManager.json +1 -0
  28. package/contracts/LibBytes.sol/LibBytes.json +1 -0
  29. package/contracts/Math.sol/Math.json +1 -0
  30. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -0
  31. package/contracts/NonceManager.sol/NonceManager.json +1 -0
  32. package/contracts/Panic.sol/Panic.json +1 -0
  33. package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -0
  34. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -0
  35. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -0
  36. package/contracts/SafeCast.sol/SafeCast.json +1 -0
  37. package/contracts/SenderCreator.sol/SenderCreator.json +1 -0
  38. package/contracts/ShortStrings.sol/ShortStrings.json +1 -0
  39. package/contracts/SignedMath.sol/SignedMath.json +1 -0
  40. package/contracts/SimulationOverrideHelper.sol/SimulationOverrideHelper.json +1 -0
  41. package/contracts/StakeManager.sol/StakeManager.json +1 -0
  42. package/contracts/StorageSlot.sol/StorageSlot.json +1 -0
  43. package/contracts/Strings.sol/Strings.json +1 -0
  44. package/contracts/TransientSlot.sol/TransientSlot.json +1 -0
  45. package/contracts/UserOperation.sol/UserOperationLib.json +1 -0
  46. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -0
  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/8dbf8a4ad39019b5.json +1 -0
  54. package/contracts/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -0
  55. package/contracts/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  56. package/contracts/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
  57. package/contracts/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -0
  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 -0
  66. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  67. package/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
  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 -0
  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 -0
  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 +16 -7
  80. package/esm/cli/alto.js.map +1 -1
  81. package/esm/cli/config/bundler.d.ts +690 -540
  82. package/esm/cli/config/bundler.js +101 -66
  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 +207 -59
  86. package/esm/cli/config/options.js.map +1 -1
  87. package/esm/cli/customTransport.d.ts +3 -3
  88. package/esm/cli/customTransport.js +4 -3
  89. package/esm/cli/customTransport.js.map +1 -1
  90. package/esm/cli/deploySimulationsContract.d.ts +5 -2
  91. package/esm/cli/deploySimulationsContract.js +108 -40
  92. package/esm/cli/deploySimulationsContract.js.map +1 -1
  93. package/esm/cli/handler.js +94 -22
  94. package/esm/cli/handler.js.map +1 -1
  95. package/esm/cli/instrumentation.js +7 -1
  96. package/esm/cli/instrumentation.js.map +1 -1
  97. package/esm/cli/parseArgs.js.map +1 -1
  98. package/esm/cli/setupServer.js +63 -63
  99. package/esm/cli/setupServer.js.map +1 -1
  100. package/esm/cli/shutDown.d.ts +20 -0
  101. package/esm/cli/shutDown.js +260 -0
  102. package/esm/cli/shutDown.js.map +1 -0
  103. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -0
  104. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -0
  105. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -0
  106. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  107. package/esm/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -0
  108. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -0
  109. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -0
  110. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  111. package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -0
  112. package/esm/createConfig.d.ts +12 -4
  113. package/esm/createConfig.js +2 -0
  114. package/esm/createConfig.js.map +1 -1
  115. package/esm/executor/bundleManager.d.ts +111 -0
  116. package/esm/executor/bundleManager.js +354 -0
  117. package/esm/executor/bundleManager.js.map +1 -0
  118. package/esm/executor/executor.d.ts +18 -23
  119. package/esm/executor/executor.js +183 -119
  120. package/esm/executor/executor.js.map +1 -1
  121. package/esm/executor/executorManager.d.ts +39 -88
  122. package/esm/executor/executorManager.js +325 -550
  123. package/esm/executor/executorManager.js.map +1 -1
  124. package/esm/executor/filterOpsAndEstimateGas.d.ts +39 -0
  125. package/esm/executor/filterOpsAndEstimateGas.js +280 -0
  126. package/esm/executor/filterOpsAndEstimateGas.js.map +1 -0
  127. package/esm/executor/getBundleStatus.d.ts +25 -0
  128. package/esm/executor/getBundleStatus.js +35 -0
  129. package/esm/executor/getBundleStatus.js.map +1 -0
  130. package/esm/executor/index.d.ts +1 -0
  131. package/esm/executor/index.js +1 -0
  132. package/esm/executor/index.js.map +1 -1
  133. package/esm/executor/senderManager/createMemorySenderManager.d.ts +3 -3
  134. package/esm/executor/senderManager/createMemorySenderManager.js +14 -1
  135. package/esm/executor/senderManager/createMemorySenderManager.js.map +1 -1
  136. package/esm/executor/senderManager/createRedisSenderManager.d.ts +5 -4
  137. package/esm/executor/senderManager/createRedisSenderManager.js +4 -7
  138. package/esm/executor/senderManager/createRedisSenderManager.js.map +1 -1
  139. package/esm/executor/senderManager/flushOnStartUp.d.ts +3 -3
  140. package/esm/executor/senderManager/flushOnStartUp.js +4 -4
  141. package/esm/executor/senderManager/flushOnStartUp.js.map +1 -1
  142. package/esm/executor/senderManager/index.d.ts +4 -3
  143. package/esm/executor/senderManager/index.js +6 -2
  144. package/esm/executor/senderManager/index.js.map +1 -1
  145. package/esm/executor/senderManager/validateAndRefill.d.ts +4 -4
  146. package/esm/executor/senderManager/validateAndRefill.js +3 -3
  147. package/esm/executor/senderManager/validateAndRefill.js.map +1 -1
  148. package/esm/executor/utilityWalletMonitor.d.ts +5 -5
  149. package/esm/executor/utilityWalletMonitor.js +1 -1
  150. package/esm/executor/utilityWalletMonitor.js.map +1 -1
  151. package/esm/executor/utils.d.ts +14 -6
  152. package/esm/executor/utils.js +68 -37
  153. package/esm/executor/utils.js.map +1 -1
  154. package/esm/handlers/arbitrumGasPriceManager.d.ts +4 -3
  155. package/esm/handlers/arbitrumGasPriceManager.js +9 -5
  156. package/esm/handlers/arbitrumGasPriceManager.js.map +1 -1
  157. package/esm/handlers/eventManager.d.ts +19 -18
  158. package/esm/handlers/eventManager.js +81 -61
  159. package/esm/handlers/eventManager.js.map +1 -1
  160. package/esm/handlers/gasPriceManager.d.ts +12 -10
  161. package/esm/handlers/gasPriceManager.js +79 -125
  162. package/esm/handlers/gasPriceManager.js.map +1 -1
  163. package/esm/handlers/mantleGasPriceManager.d.ts +5 -5
  164. package/esm/handlers/mantleGasPriceManager.js +4 -4
  165. package/esm/handlers/mantleGasPriceManager.js.map +1 -1
  166. package/esm/handlers/optimismManager.d.ts +2 -2
  167. package/esm/handlers/optimismManager.js +1 -1
  168. package/esm/handlers/optimismManager.js.map +1 -1
  169. package/esm/mempool/index.d.ts +1 -1
  170. package/esm/mempool/index.js +1 -1
  171. package/esm/mempool/index.js.map +1 -1
  172. package/esm/mempool/mempool.d.ts +71 -33
  173. package/esm/mempool/mempool.js +231 -155
  174. package/esm/mempool/mempool.js.map +1 -1
  175. package/esm/mempool/reputationManager.d.ts +36 -36
  176. package/esm/mempool/reputationManager.js +93 -97
  177. package/esm/mempool/reputationManager.js.map +1 -1
  178. package/esm/mempool/statusManager.d.ts +20 -0
  179. package/esm/mempool/statusManager.js +143 -0
  180. package/esm/mempool/statusManager.js.map +1 -0
  181. package/esm/receiptCache/createMemoryReceiptCache.d.ts +3 -0
  182. package/esm/receiptCache/createMemoryReceiptCache.js +30 -0
  183. package/esm/receiptCache/createMemoryReceiptCache.js.map +1 -0
  184. package/esm/receiptCache/createRedisReceiptCache.d.ts +10 -0
  185. package/esm/receiptCache/createRedisReceiptCache.js +56 -0
  186. package/esm/receiptCache/createRedisReceiptCache.js.map +1 -0
  187. package/esm/receiptCache/index.d.ts +11 -0
  188. package/esm/receiptCache/index.js +21 -0
  189. package/esm/receiptCache/index.js.map +1 -0
  190. package/esm/rpc/createMethodHandler.d.ts +2 -2
  191. package/esm/rpc/createMethodHandler.js.map +1 -1
  192. package/esm/rpc/estimation/gasEstimationHandler.d.ts +15 -16
  193. package/esm/rpc/estimation/gasEstimationHandler.js +24 -24
  194. package/esm/rpc/estimation/gasEstimationHandler.js.map +1 -1
  195. package/esm/rpc/estimation/gasEstimations06.d.ts +18 -0
  196. package/esm/rpc/estimation/gasEstimations06.js +45 -0
  197. package/esm/rpc/estimation/gasEstimations06.js.map +1 -0
  198. package/esm/rpc/estimation/gasEstimations07.d.ts +63 -0
  199. package/esm/rpc/estimation/gasEstimations07.js +384 -0
  200. package/esm/rpc/estimation/gasEstimations07.js.map +1 -0
  201. package/esm/rpc/estimation/preVerificationGasCalculator.d.ts +56 -0
  202. package/esm/rpc/estimation/preVerificationGasCalculator.js +467 -0
  203. package/esm/rpc/estimation/preVerificationGasCalculator.js.map +1 -0
  204. package/esm/rpc/estimation/types.d.ts +25 -111
  205. package/esm/rpc/estimation/types.js +5 -121
  206. package/esm/rpc/estimation/types.js.map +1 -1
  207. package/esm/rpc/estimation/utils.d.ts +69 -0
  208. package/esm/rpc/estimation/utils.js +240 -0
  209. package/esm/rpc/estimation/utils.js.map +1 -0
  210. package/{lib/rpc/methods/pimlico_sendUserOperationNow.d.ts → esm/rpc/methods/boost_sendUserOperation.d.ts} +299 -385
  211. package/esm/rpc/methods/boost_sendUserOperation.js +57 -0
  212. package/esm/rpc/methods/boost_sendUserOperation.js.map +1 -0
  213. package/esm/rpc/methods/debug_bundler_clearReputation.js +2 -2
  214. package/esm/rpc/methods/debug_bundler_clearReputation.js.map +1 -1
  215. package/esm/rpc/methods/debug_bundler_clearState.js +2 -2
  216. package/esm/rpc/methods/debug_bundler_clearState.js.map +1 -1
  217. package/esm/rpc/methods/debug_bundler_dumpMempool.d.ts +338 -0
  218. package/esm/rpc/methods/debug_bundler_dumpMempool.js +1 -1
  219. package/esm/rpc/methods/debug_bundler_dumpMempool.js.map +1 -1
  220. package/esm/rpc/methods/debug_bundler_dumpReputation.js +2 -2
  221. package/esm/rpc/methods/debug_bundler_dumpReputation.js.map +1 -1
  222. package/esm/rpc/methods/debug_bundler_getStakeStatus.js +1 -2
  223. package/esm/rpc/methods/debug_bundler_getStakeStatus.js.map +1 -1
  224. package/esm/rpc/methods/debug_bundler_sendBundleNow.js +10 -2
  225. package/esm/rpc/methods/debug_bundler_sendBundleNow.js.map +1 -1
  226. package/esm/rpc/methods/debug_bundler_setBundlingMode.js +1 -1
  227. package/esm/rpc/methods/debug_bundler_setBundlingMode.js.map +1 -1
  228. package/esm/rpc/methods/debug_bundler_setReputation.js +1 -1
  229. package/esm/rpc/methods/debug_bundler_setReputation.js.map +1 -1
  230. package/esm/rpc/methods/eth_chainId.js +1 -1
  231. package/esm/rpc/methods/eth_chainId.js.map +1 -1
  232. package/esm/rpc/methods/eth_estimateUserOperationGas.d.ts +910 -301
  233. package/esm/rpc/methods/eth_estimateUserOperationGas.js +228 -12
  234. package/esm/rpc/methods/eth_estimateUserOperationGas.js.map +1 -1
  235. package/esm/rpc/methods/eth_getUserOperationByHash.d.ts +621 -11
  236. package/esm/rpc/methods/eth_getUserOperationByHash.js +8 -8
  237. package/esm/rpc/methods/eth_getUserOperationByHash.js.map +1 -1
  238. package/esm/rpc/methods/eth_getUserOperationReceipt.d.ts +26 -26
  239. package/esm/rpc/methods/eth_getUserOperationReceipt.js +10 -4
  240. package/esm/rpc/methods/eth_getUserOperationReceipt.js.map +1 -1
  241. package/esm/rpc/methods/eth_sendUserOperation.d.ts +319 -2
  242. package/esm/rpc/methods/eth_sendUserOperation.js +223 -20
  243. package/esm/rpc/methods/eth_sendUserOperation.js.map +1 -1
  244. package/esm/rpc/methods/eth_supportedEntryPoints.js +1 -1
  245. package/esm/rpc/methods/eth_supportedEntryPoints.js.map +1 -1
  246. package/esm/rpc/methods/index.js +11 -6
  247. package/esm/rpc/methods/index.js.map +1 -1
  248. package/esm/rpc/methods/pimlico_getUserOperationGasPrice.js +1 -1
  249. package/esm/rpc/methods/pimlico_getUserOperationGasPrice.js.map +1 -1
  250. package/esm/rpc/methods/pimlico_getUserOperationStatus.d.ts +6 -6
  251. package/esm/rpc/methods/pimlico_getUserOperationStatus.js +3 -3
  252. package/esm/rpc/methods/pimlico_getUserOperationStatus.js.map +1 -1
  253. package/esm/rpc/methods/pimlico_sendUserOperationNow.d.ts +330 -26
  254. package/esm/rpc/methods/pimlico_sendUserOperationNow.js +27 -24
  255. package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  256. package/{lib/rpc/methods/eth_estimateUserOperationGas.d.ts → esm/rpc/methods/pimlico_simulateAssetChange.d.ts} +891 -333
  257. package/esm/rpc/methods/pimlico_simulateAssetChange.js +113 -0
  258. package/esm/rpc/methods/pimlico_simulateAssetChange.js.map +1 -0
  259. package/esm/rpc/rpcHandler.d.ts +30 -54
  260. package/esm/rpc/rpcHandler.js +137 -315
  261. package/esm/rpc/rpcHandler.js.map +1 -1
  262. package/esm/rpc/server.d.ts +5 -5
  263. package/esm/rpc/server.js +15 -11
  264. package/esm/rpc/server.js.map +1 -1
  265. package/esm/rpc/validation/BundlerCollectorTracerV06.js +2 -2
  266. package/esm/rpc/validation/BundlerCollectorTracerV06.js.map +1 -1
  267. package/esm/rpc/validation/BundlerCollectorTracerV07.js +1 -1
  268. package/esm/rpc/validation/BundlerCollectorTracerV07.js.map +1 -1
  269. package/esm/rpc/validation/SafeValidator.d.ts +20 -22
  270. package/esm/rpc/validation/SafeValidator.js +87 -100
  271. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  272. package/esm/rpc/validation/TracerResultParserV06.d.ts +3 -3
  273. package/esm/rpc/validation/TracerResultParserV06.js +19 -19
  274. package/esm/rpc/validation/TracerResultParserV06.js.map +1 -1
  275. package/esm/rpc/validation/TracerResultParserV07.d.ts +3 -3
  276. package/esm/rpc/validation/TracerResultParserV07.js +25 -25
  277. package/esm/rpc/validation/TracerResultParserV07.js.map +1 -1
  278. package/esm/rpc/validation/UnsafeValidator.d.ts +32 -33
  279. package/esm/rpc/validation/UnsafeValidator.js +117 -101
  280. package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
  281. package/esm/rpc/validation/tracer.d.ts +1 -1
  282. package/esm/store/createMempoolStore.d.ts +3 -3
  283. package/esm/store/createMempoolStore.js +100 -113
  284. package/esm/store/createMempoolStore.js.map +1 -1
  285. package/esm/store/index.d.ts +4 -80
  286. package/esm/store/index.js +4 -1
  287. package/esm/store/index.js.map +1 -1
  288. package/esm/store/outstanding/index.d.ts +13 -0
  289. package/esm/store/outstanding/index.js +16 -0
  290. package/esm/store/outstanding/index.js.map +1 -0
  291. package/esm/store/outstanding/memory.d.ts +29 -0
  292. package/esm/store/outstanding/memory.js +263 -0
  293. package/esm/store/outstanding/memory.js.map +1 -0
  294. package/esm/store/outstanding/redis.d.ts +11 -0
  295. package/esm/store/outstanding/redis.js +229 -0
  296. package/esm/store/outstanding/redis.js.map +1 -0
  297. package/esm/store/outstanding/types.d.ts +19 -0
  298. package/esm/store/outstanding/types.js +2 -0
  299. package/esm/store/outstanding/types.js.map +1 -0
  300. package/esm/store/processing/index.d.ts +11 -0
  301. package/esm/store/processing/index.js +17 -0
  302. package/esm/store/processing/index.js.map +1 -0
  303. package/esm/store/processing/memory.d.ts +16 -0
  304. package/esm/store/processing/memory.js +58 -0
  305. package/esm/store/processing/memory.js.map +1 -0
  306. package/esm/store/processing/redis.d.ts +23 -0
  307. package/esm/store/processing/redis.js +85 -0
  308. package/esm/store/processing/redis.js.map +1 -0
  309. package/esm/store/processing/types.d.ts +10 -0
  310. package/esm/store/processing/types.js +2 -0
  311. package/esm/store/processing/types.js.map +1 -0
  312. package/esm/store/types.d.ts +50 -0
  313. package/esm/store/types.js +2 -0
  314. package/esm/store/types.js.map +1 -0
  315. package/esm/types/contracts/PimlicoSimulations.d.ts +1661 -0
  316. package/esm/types/contracts/{EntryPointSimulationsV7.js → PimlicoSimulations.js} +1104 -1788
  317. package/esm/types/contracts/PimlicoSimulations.js.map +1 -0
  318. package/esm/types/contracts/index.d.ts +1 -3
  319. package/esm/types/contracts/index.js +1 -3
  320. package/esm/types/contracts/index.js.map +1 -1
  321. package/esm/types/gasPrice.js +0 -18
  322. package/esm/types/gasPrice.js.map +1 -1
  323. package/esm/types/interfaces.d.ts +26 -26
  324. package/esm/types/mempool.d.ts +14 -28
  325. package/esm/types/mempool.js +1 -7
  326. package/esm/types/mempool.js.map +1 -1
  327. package/esm/types/schemas.d.ts +26347 -10767
  328. package/esm/types/schemas.js +202 -38
  329. package/esm/types/schemas.js.map +1 -1
  330. package/esm/types/utils.d.ts +2 -5
  331. package/esm/types/utils.js +16 -18
  332. package/esm/types/utils.js.map +1 -1
  333. package/esm/types/validation.d.ts +9447 -8727
  334. package/esm/types/validation.js +123 -161
  335. package/esm/types/validation.js.map +1 -1
  336. package/esm/utils/asyncTimeout.d.ts +5 -0
  337. package/esm/utils/asyncTimeout.js +23 -0
  338. package/esm/utils/asyncTimeout.js.map +1 -0
  339. package/esm/utils/bigInt.d.ts +9 -0
  340. package/esm/utils/bigInt.js +19 -2
  341. package/esm/utils/bigInt.js.map +1 -1
  342. package/esm/utils/eip7702.d.ts +4 -3
  343. package/esm/utils/eip7702.js +16 -7
  344. package/esm/utils/eip7702.js.map +1 -1
  345. package/esm/utils/entryPointOverrides.d.ts +12 -0
  346. package/esm/utils/entryPointOverrides.js +71 -0
  347. package/esm/utils/entryPointOverrides.js.map +1 -0
  348. package/esm/utils/helpers.d.ts +5 -3
  349. package/esm/utils/helpers.js +36 -13
  350. package/esm/utils/helpers.js.map +1 -1
  351. package/esm/utils/index.d.ts +2 -2
  352. package/esm/utils/index.js +1 -1
  353. package/esm/utils/index.js.map +1 -1
  354. package/esm/utils/metrics.d.ts +11 -9
  355. package/esm/utils/metrics.js +44 -25
  356. package/esm/utils/metrics.js.map +1 -1
  357. package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.d.ts +2 -2
  358. package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js +2 -2
  359. package/esm/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +1 -1
  360. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +26 -4
  361. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js +111 -71
  362. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js.map +1 -1
  363. package/esm/utils/minMaxQueue/index.d.ts +3 -3
  364. package/esm/utils/minMaxQueue/index.js +4 -3
  365. package/esm/utils/minMaxQueue/index.js.map +1 -1
  366. package/esm/utils/rpc-reply.d.ts +3 -3
  367. package/esm/utils/rpc-reply.js.map +1 -1
  368. package/esm/utils/toViemStateOverrides.d.ts +4 -0
  369. package/esm/utils/toViemStateOverrides.js +44 -0
  370. package/esm/utils/toViemStateOverrides.js.map +1 -0
  371. package/esm/utils/userop.d.ts +89 -87
  372. package/esm/utils/userop.js +207 -439
  373. package/esm/utils/userop.js.map +1 -1
  374. package/package.json +12 -7
  375. package/esm/executor/fastlane.d.ts +0 -9
  376. package/esm/executor/fastlane.js +0 -37
  377. package/esm/executor/fastlane.js.map +0 -1
  378. package/esm/executor/filterOpsAndEStimateGas.d.ts +0 -29
  379. package/esm/executor/filterOpsAndEStimateGas.js +0 -198
  380. package/esm/executor/filterOpsAndEStimateGas.js.map +0 -1
  381. package/esm/mempool/monitoring.d.ts +0 -14
  382. package/esm/mempool/monitoring.js +0 -97
  383. package/esm/mempool/monitoring.js.map +0 -1
  384. package/esm/rpc/estimation/gasEstimationsV06.d.ts +0 -19
  385. package/esm/rpc/estimation/gasEstimationsV06.js +0 -144
  386. package/esm/rpc/estimation/gasEstimationsV06.js.map +0 -1
  387. package/esm/rpc/estimation/gasEstimationsV07.d.ts +0 -101
  388. package/esm/rpc/estimation/gasEstimationsV07.js +0 -721
  389. package/esm/rpc/estimation/gasEstimationsV07.js.map +0 -1
  390. package/esm/store/createMemoryOutstandingStore.d.ts +0 -28
  391. package/esm/store/createMemoryOutstandingStore.js +0 -231
  392. package/esm/store/createMemoryOutstandingStore.js.map +0 -1
  393. package/esm/store/createRedisOutstandingStore.d.ts +0 -27
  394. package/esm/store/createRedisOutstandingStore.js +0 -344
  395. package/esm/store/createRedisOutstandingStore.js.map +0 -1
  396. package/esm/store/createRedisStore.d.ts +0 -9
  397. package/esm/store/createRedisStore.js +0 -131
  398. package/esm/store/createRedisStore.js.map +0 -1
  399. package/esm/store/createStore.d.ts +0 -6
  400. package/esm/store/createStore.js +0 -66
  401. package/esm/store/createStore.js.map +0 -1
  402. package/esm/types/contracts/EntryPointSimulationsV6.d.ts +0 -34
  403. package/esm/types/contracts/EntryPointSimulationsV6.js +0 -48
  404. package/esm/types/contracts/EntryPointSimulationsV6.js.map +0 -1
  405. package/esm/types/contracts/EntryPointSimulationsV7.d.ts +0 -2193
  406. package/esm/types/contracts/EntryPointSimulationsV7.js.map +0 -1
  407. package/esm/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -26
  408. package/esm/types/contracts/PimlicoEntryPointSimulations.js +0 -38
  409. package/esm/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
  410. package/esm/utils/validation.d.ts +0 -76
  411. package/esm/utils/validation.js +0 -484
  412. package/esm/utils/validation.js.map +0 -1
  413. package/lib/cli/alto.d.ts +0 -7
  414. package/lib/cli/alto.js +0 -141
  415. package/lib/cli/alto.js.map +0 -1
  416. package/lib/cli/config/bundler.d.ts +0 -2836
  417. package/lib/cli/config/bundler.js +0 -222
  418. package/lib/cli/config/bundler.js.map +0 -1
  419. package/lib/cli/config/index.d.ts +0 -3
  420. package/lib/cli/config/index.js +0 -19
  421. package/lib/cli/config/index.js.map +0 -1
  422. package/lib/cli/config/options.d.ts +0 -13
  423. package/lib/cli/config/options.js +0 -553
  424. package/lib/cli/config/options.js.map +0 -1
  425. package/lib/cli/customTransport.d.ts +0 -14
  426. package/lib/cli/customTransport.js +0 -94
  427. package/lib/cli/customTransport.js.map +0 -1
  428. package/lib/cli/deploySimulationsContract.d.ts +0 -13
  429. package/lib/cli/deploySimulationsContract.js +0 -112
  430. package/lib/cli/deploySimulationsContract.js.map +0 -1
  431. package/lib/cli/handler.d.ts +0 -3
  432. package/lib/cli/handler.js +0 -157
  433. package/lib/cli/handler.js.map +0 -1
  434. package/lib/cli/index.d.ts +0 -4
  435. package/lib/cli/index.js +0 -20
  436. package/lib/cli/index.js.map +0 -1
  437. package/lib/cli/instrumentation.d.ts +0 -2
  438. package/lib/cli/instrumentation.js +0 -47
  439. package/lib/cli/instrumentation.js.map +0 -1
  440. package/lib/cli/parseArgs.d.ts +0 -8
  441. package/lib/cli/parseArgs.js +0 -25
  442. package/lib/cli/parseArgs.js.map +0 -1
  443. package/lib/cli/setupServer.d.ts +0 -13
  444. package/lib/cli/setupServer.js +0 -266
  445. package/lib/cli/setupServer.js.map +0 -1
  446. package/lib/cli/util.d.ts +0 -22
  447. package/lib/cli/util.js +0 -34
  448. package/lib/cli/util.js.map +0 -1
  449. package/lib/createConfig.d.ts +0 -16
  450. package/lib/createConfig.js +0 -13
  451. package/lib/createConfig.js.map +0 -1
  452. package/lib/executor/executor.d.ts +0 -65
  453. package/lib/executor/executor.js +0 -285
  454. package/lib/executor/executor.js.map +0 -1
  455. package/lib/executor/executorManager.d.ts +0 -107
  456. package/lib/executor/executorManager.js +0 -682
  457. package/lib/executor/executorManager.js.map +0 -1
  458. package/lib/executor/fastlane.d.ts +0 -9
  459. package/lib/executor/fastlane.js +0 -41
  460. package/lib/executor/fastlane.js.map +0 -1
  461. package/lib/executor/filterOpsAndEStimateGas.d.ts +0 -29
  462. package/lib/executor/filterOpsAndEStimateGas.js +0 -225
  463. package/lib/executor/filterOpsAndEStimateGas.js.map +0 -1
  464. package/lib/executor/index.d.ts +0 -5
  465. package/lib/executor/index.js +0 -21
  466. package/lib/executor/index.js.map +0 -1
  467. package/lib/executor/senderManager/createMemorySenderManager.d.ts +0 -8
  468. package/lib/executor/senderManager/createMemorySenderManager.js +0 -45
  469. package/lib/executor/senderManager/createMemorySenderManager.js.map +0 -1
  470. package/lib/executor/senderManager/createRedisSenderManager.d.ts +0 -8
  471. package/lib/executor/senderManager/createRedisSenderManager.js +0 -85
  472. package/lib/executor/senderManager/createRedisSenderManager.js.map +0 -1
  473. package/lib/executor/senderManager/flushOnStartUp.d.ts +0 -9
  474. package/lib/executor/senderManager/flushOnStartUp.js +0 -37
  475. package/lib/executor/senderManager/flushOnStartUp.js.map +0 -1
  476. package/lib/executor/senderManager/index.d.ts +0 -15
  477. package/lib/executor/senderManager/index.js +0 -25
  478. package/lib/executor/senderManager/index.js.map +0 -1
  479. package/lib/executor/senderManager/validateAndRefill.d.ts +0 -11
  480. package/lib/executor/senderManager/validateAndRefill.js +0 -115
  481. package/lib/executor/senderManager/validateAndRefill.js.map +0 -1
  482. package/lib/executor/utilityWalletMonitor.d.ts +0 -19
  483. package/lib/executor/utilityWalletMonitor.js +0 -42
  484. package/lib/executor/utilityWalletMonitor.js.map +0 -1
  485. package/lib/executor/utils.d.ts +0 -31
  486. package/lib/executor/utils.js +0 -170
  487. package/lib/executor/utils.js.map +0 -1
  488. package/lib/handlers/arbitrumGasPriceManager.d.ts +0 -14
  489. package/lib/handlers/arbitrumGasPriceManager.js +0 -39
  490. package/lib/handlers/arbitrumGasPriceManager.js.map +0 -1
  491. package/lib/handlers/eventManager.d.ts +0 -28
  492. package/lib/handlers/eventManager.js +0 -207
  493. package/lib/handlers/eventManager.js.map +0 -1
  494. package/lib/handlers/gasPriceManager.d.ts +0 -36
  495. package/lib/handlers/gasPriceManager.js +0 -423
  496. package/lib/handlers/gasPriceManager.js.map +0 -1
  497. package/lib/handlers/index.d.ts +0 -3
  498. package/lib/handlers/index.js +0 -19
  499. package/lib/handlers/index.js.map +0 -1
  500. package/lib/handlers/mantleGasPriceManager.d.ts +0 -23
  501. package/lib/handlers/mantleGasPriceManager.js +0 -44
  502. package/lib/handlers/mantleGasPriceManager.js.map +0 -1
  503. package/lib/handlers/optimismManager.d.ts +0 -10
  504. package/lib/handlers/optimismManager.js +0 -21
  505. package/lib/handlers/optimismManager.js.map +0 -1
  506. package/lib/index.d.ts +0 -2
  507. package/lib/index.js +0 -4
  508. package/lib/index.js.map +0 -1
  509. package/lib/mempool/index.d.ts +0 -4
  510. package/lib/mempool/index.js +0 -20
  511. package/lib/mempool/index.js.map +0 -1
  512. package/lib/mempool/mempool.d.ts +0 -191
  513. package/lib/mempool/mempool.js +0 -498
  514. package/lib/mempool/mempool.js.map +0 -1
  515. package/lib/mempool/monitoring.d.ts +0 -14
  516. package/lib/mempool/monitoring.js +0 -101
  517. package/lib/mempool/monitoring.js.map +0 -1
  518. package/lib/mempool/reputationManager.d.ts +0 -121
  519. package/lib/mempool/reputationManager.js +0 -472
  520. package/lib/mempool/reputationManager.js.map +0 -1
  521. package/lib/rpc/createMethodHandler.d.ts +0 -31
  522. package/lib/rpc/createMethodHandler.js +0 -34
  523. package/lib/rpc/createMethodHandler.js.map +0 -1
  524. package/lib/rpc/estimation/gasEstimationHandler.d.ts +0 -30
  525. package/lib/rpc/estimation/gasEstimationHandler.js +0 -50
  526. package/lib/rpc/estimation/gasEstimationHandler.js.map +0 -1
  527. package/lib/rpc/estimation/gasEstimationsV06.d.ts +0 -19
  528. package/lib/rpc/estimation/gasEstimationsV06.js +0 -148
  529. package/lib/rpc/estimation/gasEstimationsV06.js.map +0 -1
  530. package/lib/rpc/estimation/gasEstimationsV07.d.ts +0 -101
  531. package/lib/rpc/estimation/gasEstimationsV07.js +0 -727
  532. package/lib/rpc/estimation/gasEstimationsV07.js.map +0 -1
  533. package/lib/rpc/estimation/types.d.ts +0 -120
  534. package/lib/rpc/estimation/types.js +0 -125
  535. package/lib/rpc/estimation/types.js.map +0 -1
  536. package/lib/rpc/index.d.ts +0 -4
  537. package/lib/rpc/index.js +0 -20
  538. package/lib/rpc/index.js.map +0 -1
  539. package/lib/rpc/methods/debug_bundler_clearReputation.d.ts +0 -22
  540. package/lib/rpc/methods/debug_bundler_clearReputation.js +0 -15
  541. package/lib/rpc/methods/debug_bundler_clearReputation.js.map +0 -1
  542. package/lib/rpc/methods/debug_bundler_clearState.d.ts +0 -22
  543. package/lib/rpc/methods/debug_bundler_clearState.js +0 -16
  544. package/lib/rpc/methods/debug_bundler_clearState.js.map +0 -1
  545. package/lib/rpc/methods/debug_bundler_dumpMempool.d.ts +0 -973
  546. package/lib/rpc/methods/debug_bundler_dumpMempool.js +0 -16
  547. package/lib/rpc/methods/debug_bundler_dumpMempool.js.map +0 -1
  548. package/lib/rpc/methods/debug_bundler_dumpReputation.d.ts +0 -57
  549. package/lib/rpc/methods/debug_bundler_dumpReputation.js +0 -16
  550. package/lib/rpc/methods/debug_bundler_dumpReputation.js.map +0 -1
  551. package/lib/rpc/methods/debug_bundler_getStakeStatus.d.ts +0 -79
  552. package/lib/rpc/methods/debug_bundler_getStakeStatus.js +0 -25
  553. package/lib/rpc/methods/debug_bundler_getStakeStatus.js.map +0 -1
  554. package/lib/rpc/methods/debug_bundler_sendBundleNow.d.ts +0 -22
  555. package/lib/rpc/methods/debug_bundler_sendBundleNow.js +0 -15
  556. package/lib/rpc/methods/debug_bundler_sendBundleNow.js.map +0 -1
  557. package/lib/rpc/methods/debug_bundler_setBundlingMode.d.ts +0 -22
  558. package/lib/rpc/methods/debug_bundler_setBundlingMode.js +0 -16
  559. package/lib/rpc/methods/debug_bundler_setBundlingMode.js.map +0 -1
  560. package/lib/rpc/methods/debug_bundler_setReputation.d.ts +0 -46
  561. package/lib/rpc/methods/debug_bundler_setReputation.js +0 -16
  562. package/lib/rpc/methods/debug_bundler_setReputation.js.map +0 -1
  563. package/lib/rpc/methods/eth_chainId.d.ts +0 -22
  564. package/lib/rpc/methods/eth_chainId.js +0 -13
  565. package/lib/rpc/methods/eth_chainId.js.map +0 -1
  566. package/lib/rpc/methods/eth_estimateUserOperationGas.js +0 -26
  567. package/lib/rpc/methods/eth_estimateUserOperationGas.js.map +0 -1
  568. package/lib/rpc/methods/eth_getUserOperationByHash.d.ts +0 -1775
  569. package/lib/rpc/methods/eth_getUserOperationByHash.js +0 -101
  570. package/lib/rpc/methods/eth_getUserOperationByHash.js.map +0 -1
  571. package/lib/rpc/methods/eth_getUserOperationReceipt.d.ts +0 -412
  572. package/lib/rpc/methods/eth_getUserOperationReceipt.js +0 -14
  573. package/lib/rpc/methods/eth_getUserOperationReceipt.js.map +0 -1
  574. package/lib/rpc/methods/eth_sendUserOperation.d.ts +0 -878
  575. package/lib/rpc/methods/eth_sendUserOperation.js +0 -44
  576. package/lib/rpc/methods/eth_sendUserOperation.js.map +0 -1
  577. package/lib/rpc/methods/eth_supportedEntryPoints.d.ts +0 -22
  578. package/lib/rpc/methods/eth_supportedEntryPoints.js +0 -13
  579. package/lib/rpc/methods/eth_supportedEntryPoints.js.map +0 -1
  580. package/lib/rpc/methods/index.d.ts +0 -3
  581. package/lib/rpc/methods/index.js +0 -44
  582. package/lib/rpc/methods/index.js.map +0 -1
  583. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.d.ts +0 -131
  584. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js +0 -33
  585. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js.map +0 -1
  586. package/lib/rpc/methods/pimlico_getUserOperationStatus.d.ts +0 -43
  587. package/lib/rpc/methods/pimlico_getUserOperationStatus.js +0 -14
  588. package/lib/rpc/methods/pimlico_getUserOperationStatus.js.map +0 -1
  589. package/lib/rpc/methods/pimlico_sendUserOperationNow.js +0 -53
  590. package/lib/rpc/methods/pimlico_sendUserOperationNow.js.map +0 -1
  591. package/lib/rpc/rpcHandler.d.ts +0 -75
  592. package/lib/rpc/rpcHandler.js +0 -408
  593. package/lib/rpc/rpcHandler.js.map +0 -1
  594. package/lib/rpc/server.d.ts +0 -26
  595. package/lib/rpc/server.js +0 -283
  596. package/lib/rpc/server.js.map +0 -1
  597. package/lib/rpc/validation/BundlerCollectorTracerV06.d.ts +0 -102
  598. package/lib/rpc/validation/BundlerCollectorTracerV06.js +0 -262
  599. package/lib/rpc/validation/BundlerCollectorTracerV06.js.map +0 -1
  600. package/lib/rpc/validation/BundlerCollectorTracerV07.d.ts +0 -102
  601. package/lib/rpc/validation/BundlerCollectorTracerV07.js +0 -261
  602. package/lib/rpc/validation/BundlerCollectorTracerV07.js.map +0 -1
  603. package/lib/rpc/validation/SafeValidator.d.ts +0 -52
  604. package/lib/rpc/validation/SafeValidator.js +0 -350
  605. package/lib/rpc/validation/SafeValidator.js.map +0 -1
  606. package/lib/rpc/validation/TracerResultParserV06.d.ts +0 -13
  607. package/lib/rpc/validation/TracerResultParserV06.js +0 -582
  608. package/lib/rpc/validation/TracerResultParserV06.js.map +0 -1
  609. package/lib/rpc/validation/TracerResultParserV07.d.ts +0 -33
  610. package/lib/rpc/validation/TracerResultParserV07.js +0 -599
  611. package/lib/rpc/validation/TracerResultParserV07.js.map +0 -1
  612. package/lib/rpc/validation/UnsafeValidator.d.ts +0 -98
  613. package/lib/rpc/validation/UnsafeValidator.js +0 -326
  614. package/lib/rpc/validation/UnsafeValidator.js.map +0 -1
  615. package/lib/rpc/validation/index.d.ts +0 -3
  616. package/lib/rpc/validation/index.js +0 -19
  617. package/lib/rpc/validation/index.js.map +0 -1
  618. package/lib/rpc/validation/tracer.d.ts +0 -125
  619. package/lib/rpc/validation/tracer.js +0 -112
  620. package/lib/rpc/validation/tracer.js.map +0 -1
  621. package/lib/store/createMemoryOutstandingStore.d.ts +0 -28
  622. package/lib/store/createMemoryOutstandingStore.js +0 -236
  623. package/lib/store/createMemoryOutstandingStore.js.map +0 -1
  624. package/lib/store/createMempoolStore.d.ts +0 -8
  625. package/lib/store/createMempoolStore.js +0 -199
  626. package/lib/store/createMempoolStore.js.map +0 -1
  627. package/lib/store/createRedisOutstandingStore.d.ts +0 -27
  628. package/lib/store/createRedisOutstandingStore.js +0 -349
  629. package/lib/store/createRedisOutstandingStore.js.map +0 -1
  630. package/lib/store/createRedisStore.d.ts +0 -9
  631. package/lib/store/createRedisStore.js +0 -138
  632. package/lib/store/createRedisStore.js.map +0 -1
  633. package/lib/store/createStore.d.ts +0 -6
  634. package/lib/store/createStore.js +0 -70
  635. package/lib/store/createStore.js.map +0 -1
  636. package/lib/store/index.d.ts +0 -81
  637. package/lib/store/index.js +0 -6
  638. package/lib/store/index.js.map +0 -1
  639. package/lib/types/contracts/ArbitrumL1FeeAbi.d.ts +0 -32
  640. package/lib/types/contracts/ArbitrumL1FeeAbi.js +0 -45
  641. package/lib/types/contracts/ArbitrumL1FeeAbi.js.map +0 -1
  642. package/lib/types/contracts/CallEngine.d.ts +0 -28
  643. package/lib/types/contracts/CallEngine.js +0 -40
  644. package/lib/types/contracts/CallEngine.js.map +0 -1
  645. package/lib/types/contracts/CodeHashGetter.d.ts +0 -37
  646. package/lib/types/contracts/CodeHashGetter.js +0 -48
  647. package/lib/types/contracts/CodeHashGetter.js.map +0 -1
  648. package/lib/types/contracts/EntryPoint.d.ts +0 -1789
  649. package/lib/types/contracts/EntryPoint.js +0 -2307
  650. package/lib/types/contracts/EntryPoint.js.map +0 -1
  651. package/lib/types/contracts/EntryPointSimulationsV6.d.ts +0 -34
  652. package/lib/types/contracts/EntryPointSimulationsV6.js +0 -51
  653. package/lib/types/contracts/EntryPointSimulationsV6.js.map +0 -1
  654. package/lib/types/contracts/EntryPointSimulationsV7.d.ts +0 -2193
  655. package/lib/types/contracts/EntryPointSimulationsV7.js +0 -2828
  656. package/lib/types/contracts/EntryPointSimulationsV7.js.map +0 -1
  657. package/lib/types/contracts/IAccountExecute.d.ts +0 -53
  658. package/lib/types/contracts/IAccountExecute.js +0 -71
  659. package/lib/types/contracts/IAccountExecute.js.map +0 -1
  660. package/lib/types/contracts/IPaymaster.d.ts +0 -3
  661. package/lib/types/contracts/IPaymaster.js +0 -120
  662. package/lib/types/contracts/IPaymaster.js.map +0 -1
  663. package/lib/types/contracts/MantleBvmGasPriceOracle.d.ts +0 -219
  664. package/lib/types/contracts/MantleBvmGasPriceOracle.js +0 -180
  665. package/lib/types/contracts/MantleBvmGasPriceOracle.js.map +0 -1
  666. package/lib/types/contracts/OpL1FeeAbi.d.ts +0 -114
  667. package/lib/types/contracts/OpL1FeeAbi.js +0 -77
  668. package/lib/types/contracts/OpL1FeeAbi.js.map +0 -1
  669. package/lib/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -26
  670. package/lib/types/contracts/PimlicoEntryPointSimulations.js +0 -41
  671. package/lib/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
  672. package/lib/types/contracts/SenderCreator.d.ts +0 -4
  673. package/lib/types/contracts/SenderCreator.js +0 -26
  674. package/lib/types/contracts/SenderCreator.js.map +0 -1
  675. package/lib/types/contracts/SimpleAccountFactory.d.ts +0 -57
  676. package/lib/types/contracts/SimpleAccountFactory.js +0 -79
  677. package/lib/types/contracts/SimpleAccountFactory.js.map +0 -1
  678. package/lib/types/contracts/TestOpcodesAccount.d.ts +0 -4
  679. package/lib/types/contracts/TestOpcodesAccount.js +0 -284
  680. package/lib/types/contracts/TestOpcodesAccount.js.map +0 -1
  681. package/lib/types/contracts/TestOpcodesAccountFactory.d.ts +0 -4
  682. package/lib/types/contracts/TestOpcodesAccountFactory.js +0 -26
  683. package/lib/types/contracts/TestOpcodesAccountFactory.js.map +0 -1
  684. package/lib/types/contracts/TestStorageAccount.d.ts +0 -4
  685. package/lib/types/contracts/TestStorageAccount.js +0 -316
  686. package/lib/types/contracts/TestStorageAccount.js.map +0 -1
  687. package/lib/types/contracts/index.d.ts +0 -17
  688. package/lib/types/contracts/index.js +0 -33
  689. package/lib/types/contracts/index.js.map +0 -1
  690. package/lib/types/gasPrice.d.ts +0 -110
  691. package/lib/types/gasPrice.js +0 -55
  692. package/lib/types/gasPrice.js.map +0 -1
  693. package/lib/types/index.d.ts +0 -11
  694. package/lib/types/index.js +0 -27
  695. package/lib/types/index.js.map +0 -1
  696. package/lib/types/interfaces.d.ts +0 -59
  697. package/lib/types/interfaces.js +0 -3
  698. package/lib/types/interfaces.js.map +0 -1
  699. package/lib/types/mempool.d.ts +0 -60
  700. package/lib/types/mempool.js +0 -11
  701. package/lib/types/mempool.js.map +0 -1
  702. package/lib/types/schemas.d.ts +0 -20779
  703. package/lib/types/schemas.js +0 -638
  704. package/lib/types/schemas.js.map +0 -1
  705. package/lib/types/utils.d.ts +0 -25
  706. package/lib/types/utils.js +0 -35
  707. package/lib/types/utils.js.map +0 -1
  708. package/lib/types/validation.d.ts +0 -14327
  709. package/lib/types/validation.js +0 -312
  710. package/lib/types/validation.js.map +0 -1
  711. package/lib/utils/bigInt.d.ts +0 -4
  712. package/lib/utils/bigInt.js +0 -19
  713. package/lib/utils/bigInt.js.map +0 -1
  714. package/lib/utils/eip7702.d.ts +0 -4
  715. package/lib/utils/eip7702.js +0 -21
  716. package/lib/utils/eip7702.js.map +0 -1
  717. package/lib/utils/fastify-rpc-decorators.d.ts +0 -19
  718. package/lib/utils/fastify-rpc-decorators.js +0 -23
  719. package/lib/utils/fastify-rpc-decorators.js.map +0 -1
  720. package/lib/utils/helpers.d.ts +0 -15
  721. package/lib/utils/helpers.js +0 -59
  722. package/lib/utils/helpers.js.map +0 -1
  723. package/lib/utils/index.d.ts +0 -8
  724. package/lib/utils/index.js +0 -23
  725. package/lib/utils/index.js.map +0 -1
  726. package/lib/utils/logger.d.ts +0 -6
  727. package/lib/utils/logger.js +0 -85
  728. package/lib/utils/logger.js.map +0 -1
  729. package/lib/utils/metrics.d.ts +0 -28
  730. package/lib/utils/metrics.js +0 -192
  731. package/lib/utils/metrics.js.map +0 -1
  732. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.d.ts +0 -6
  733. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js +0 -57
  734. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +0 -1
  735. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +0 -7
  736. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js +0 -105
  737. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js.map +0 -1
  738. package/lib/utils/minMaxQueue/index.d.ts +0 -12
  739. package/lib/utils/minMaxQueue/index.js +0 -16
  740. package/lib/utils/minMaxQueue/index.js.map +0 -1
  741. package/lib/utils/rpc-reply.d.ts +0 -16
  742. package/lib/utils/rpc-reply.js +0 -41
  743. package/lib/utils/rpc-reply.js.map +0 -1
  744. package/lib/utils/userop.d.ts +0 -138
  745. package/lib/utils/userop.js +0 -620
  746. package/lib/utils/userop.js.map +0 -1
  747. package/lib/utils/validation.d.ts +0 -76
  748. package/lib/utils/validation.js +0 -500
  749. package/lib/utils/validation.js.map +0 -1
@@ -1,21 +1,25 @@
1
- import { EntryPointV06Abi, EntryPointV07Abi, RpcError, ValidationErrors } from "../types/index.js";
2
- import { getAddressFromInitCodeOrPaymasterAndData, getUserOperationHash, isVersion06, isVersion07, scaleBigIntByPercent } from "../utils/index.js";
1
+ import { ERC7769Errors, EntryPointV06Abi, EntryPointV07Abi, RpcError } from "../types/index.js";
2
+ import { getAAError, getAddressFromInitCodeOrPaymasterAndData, getViemEntryPointVersion, isVersion06, isVersion07, jsonStringifyWithBigint, scaleBigIntByPercent } from "../utils/index.js";
3
3
  import { getAddress, getContract } from "viem";
4
+ import { calculateAA95GasFloor } from "../executor/utils.js";
5
+ import { getEip7702AuthAddress } from "../utils/eip7702.js";
4
6
  import { ReputationStatuses } from "./reputationManager.js";
5
7
  export class Mempool {
6
8
  config;
7
- monitor;
9
+ metrics;
10
+ statusManager;
8
11
  reputationManager;
9
- store;
10
12
  throttledEntityBundleCount;
11
13
  logger;
12
14
  validator;
13
15
  eventManager;
14
- constructor({ config, monitor, reputationManager, validator, store, eventManager }) {
16
+ store;
17
+ constructor({ config, metrics, statusManager, reputationManager, validator, store, eventManager }) {
18
+ this.metrics = metrics;
15
19
  this.store = store;
16
20
  this.config = config;
17
21
  this.reputationManager = reputationManager;
18
- this.monitor = monitor;
22
+ this.statusManager = statusManager;
19
23
  this.validator = validator;
20
24
  this.logger = config.getLogger({ module: "mempool" }, {
21
25
  level: config.logLevel
@@ -23,68 +27,105 @@ export class Mempool {
23
27
  this.throttledEntityBundleCount = 4; // we don't have any config for this as of now
24
28
  this.eventManager = eventManager;
25
29
  }
26
- async replaceSubmitted({ userOpInfo, transactionInfo }) {
27
- const entryPoint = transactionInfo.bundle.entryPoint;
28
- const { userOpHash } = userOpInfo;
29
- const sumbittedUserOps = await this.store.dumpSubmitted(entryPoint);
30
- const existingUserOpToReplace = sumbittedUserOps.find((userOpInfo) => userOpInfo.userOpHash === userOpHash);
31
- if (existingUserOpToReplace) {
32
- await this.store.removeSubmitted({ entryPoint, userOpHash });
33
- await this.store.addSubmitted({
34
- entryPoint,
35
- submittedUserOp: {
30
+ // === Methods for handling changing userOp state === //
31
+ async markUserOpsAsSubmitted({ userOps, transactionHash }) {
32
+ const userOpHashes = userOps.map((userOpInfo) => userOpInfo.userOpHash);
33
+ await this.statusManager.set(userOpHashes, {
34
+ status: "submitted",
35
+ transactionHash
36
+ });
37
+ this.metrics.userOpsSubmitted
38
+ .labels({ status: "success" })
39
+ .inc(userOps.length);
40
+ }
41
+ async resubmitUserOps({ userOps, entryPoint, reason }) {
42
+ await Promise.all(userOps.map(async (userOpInfo) => {
43
+ const { userOpHash, submissionAttempts } = userOpInfo;
44
+ const maxResubmits = this.config.maxResubmits;
45
+ // Check if max resubmits has been reached
46
+ if (maxResubmits !== undefined &&
47
+ submissionAttempts >= maxResubmits) {
48
+ this.logger.warn({
49
+ userOpHash,
50
+ submissionAttempts,
51
+ maxResubmits
52
+ }, "dropping userOp: max resubmits reached");
53
+ const rejectedUserOp = {
36
54
  ...userOpInfo,
37
- transactionInfo
38
- }
55
+ reason: "max resubmits reached"
56
+ };
57
+ await this.dropUserOps(entryPoint, [rejectedUserOp]);
58
+ return;
59
+ }
60
+ this.logger.warn({
61
+ userOpHash,
62
+ submissionAttempts,
63
+ reason
64
+ }, "resubmitting user operation");
65
+ // Complete processing before re-adding to outstanding pool.
66
+ await this.store.removeProcessing({
67
+ entryPoint,
68
+ userOpInfo
39
69
  });
40
- await this.monitor.setUserOperationStatus(userOpHash, {
41
- status: "submitted",
42
- transactionHash: transactionInfo.transactionHash
70
+ const [success, failureReason] = await this.add({
71
+ userOpInfo,
72
+ entryPoint
43
73
  });
44
- }
74
+ if (!success) {
75
+ this.logger.error({ userOpHash, failureReason }, "Failed to resubmit user operation");
76
+ const rejectedUserOp = {
77
+ ...userOpInfo,
78
+ reason: failureReason
79
+ };
80
+ this.dropUserOps(entryPoint, [rejectedUserOp]);
81
+ }
82
+ }));
83
+ this.metrics.userOpsResubmitted.inc(userOps.length);
45
84
  }
46
- async markSubmitted({ userOpHash, transactionInfo }) {
47
- const entryPoint = transactionInfo.bundle.entryPoint;
48
- const processingUserOps = await this.store.dumpProcessing(entryPoint);
49
- const processingUserOp = processingUserOps.find((userOpInfo) => userOpInfo.userOpHash === userOpHash);
50
- if (processingUserOp) {
51
- await this.store.removeProcessing({ entryPoint, userOpHash });
52
- await this.store.addSubmitted({
85
+ async dropUserOps(entryPoint, rejectedUserOps) {
86
+ await Promise.all(rejectedUserOps.map(async (rejectedUserOp) => {
87
+ const { userOp, reason, userOpHash } = rejectedUserOp;
88
+ // Complete processing since userOp is dropped.
89
+ await this.store.removeProcessing({
53
90
  entryPoint,
54
- submittedUserOp: {
55
- ...processingUserOp,
56
- transactionInfo
57
- }
91
+ userOpInfo: rejectedUserOp
58
92
  });
59
- await this.monitor.setUserOperationStatus(userOpHash, {
60
- status: "submitted",
61
- transactionHash: transactionInfo.transactionHash
93
+ this.eventManager.emitDropped(userOpHash, reason, getAAError(reason));
94
+ await this.statusManager.set([userOpHash], {
95
+ status: "rejected",
96
+ transactionHash: null
62
97
  });
63
- }
98
+ this.metrics.userOpsDropped.labels({ reason }).inc();
99
+ this.logger.warn({
100
+ userOperation: jsonStringifyWithBigint(userOp),
101
+ userOpHash,
102
+ reason
103
+ }, "user operation rejected");
104
+ }));
64
105
  }
106
+ // Remove userOps from processing store.
107
+ // should be called when userOps are included onchain.
108
+ async removeProcessing({ userOps, entryPoint }) {
109
+ await Promise.all(userOps.map(async (userOpInfo) => {
110
+ await this.store.removeProcessing({
111
+ entryPoint,
112
+ userOpInfo
113
+ });
114
+ }));
115
+ }
116
+ // === Methods for dropping mempool entries === //
65
117
  async dumpOutstanding(entryPoint) {
66
118
  return await this.store.dumpOutstanding(entryPoint);
67
119
  }
68
- async dumpProcessing(entryPoint) {
69
- return await this.store.dumpProcessing(entryPoint);
70
- }
71
- async dumpSubmittedOps(entryPoint) {
72
- return await this.store.dumpSubmitted(entryPoint);
73
- }
74
- async removeSubmitted({ entryPoint, userOpHash }) {
75
- await this.store.removeSubmitted({ entryPoint, userOpHash });
76
- }
77
- async removeProcessing({ entryPoint, userOpHash }) {
78
- await this.store.removeProcessing({ entryPoint, userOpHash });
79
- }
120
+ // === Methods for entity management === //
80
121
  async checkEntityMultipleRoleViolation(entryPoint, op) {
81
122
  if (!this.config.safeMode) {
82
- return Promise.resolve();
123
+ return;
83
124
  }
84
125
  const knownEntities = await this.getKnownEntities(entryPoint);
85
126
  if (knownEntities.paymasters.has(op.sender) ||
86
127
  knownEntities.factories.has(op.sender)) {
87
- throw new RpcError(`The sender address "${op.sender}" is used as a different entity in another UserOperation currently in mempool`, ValidationErrors.OpcodeValidation);
128
+ throw new RpcError(`The sender address "${op.sender}" is used as a different entity in another UserOperation currently in mempool`, ERC7769Errors.OpcodeValidation);
88
129
  }
89
130
  let paymaster = null;
90
131
  let factory = null;
@@ -97,12 +138,11 @@ export class Mempool {
97
138
  factory = op.factory;
98
139
  }
99
140
  if (paymaster && knownEntities.sender.has(paymaster)) {
100
- throw new RpcError(`A Paymaster at ${paymaster} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ValidationErrors.OpcodeValidation);
141
+ throw new RpcError(`A Paymaster at ${paymaster} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ERC7769Errors.OpcodeValidation);
101
142
  }
102
143
  if (factory && knownEntities.sender.has(factory)) {
103
- throw new RpcError(`A Factory at ${factory} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ValidationErrors.OpcodeValidation);
144
+ throw new RpcError(`A Factory at ${factory} in this UserOperation is used as a sender entity in another UserOperation currently in mempool.`, ERC7769Errors.OpcodeValidation);
104
145
  }
105
- return Promise.resolve();
106
146
  }
107
147
  async getKnownEntities(entryPoint) {
108
148
  // TODO: this won't work with redis
@@ -131,21 +171,14 @@ export class Mempool {
131
171
  }
132
172
  return entities;
133
173
  }
134
- async add(userOp, entryPoint, referencedContracts) {
135
- const userOpHash = await getUserOperationHash({
136
- userOperation: userOp,
137
- entryPointAddress: entryPoint,
138
- chainId: this.config.chainId,
139
- publicClient: this.config.publicClient
140
- });
141
- // Check if the exact same userOperation is already in the mempool.
142
- if (await this.store.isInMempool({ userOpHash, entryPoint })) {
143
- return [false, "Already known"];
144
- }
145
- // Check if there is a conflicting userOp already being processed
146
- const validation = await this.store.validateSubmittedOrProcessing({
174
+ // === Methods for adding userOps / creating bundles === //
175
+ async add({ userOpInfo, entryPoint }) {
176
+ const { userOp, userOpHash } = userOpInfo;
177
+ // Check if the userOp is already known or conflicts with existing operations
178
+ const validation = await this.store.checkDuplicatesAndConflicts({
147
179
  entryPoint,
148
- userOp
180
+ userOp,
181
+ userOpHash
149
182
  });
150
183
  if (!validation.valid) {
151
184
  return [false, validation.reason];
@@ -156,7 +189,7 @@ export class Mempool {
156
189
  userOp
157
190
  });
158
191
  if (conflicting) {
159
- const { userOpInfo, reason } = conflicting;
192
+ const { userOpInfo, conflictReason } = conflicting;
160
193
  const conflictingUserOp = userOpInfo.userOp;
161
194
  const hasHigherPriorityFee = userOp.maxPriorityFeePerGas >=
162
195
  scaleBigIntByPercent(conflictingUserOp.maxPriorityFeePerGas, 110n);
@@ -164,37 +197,68 @@ export class Mempool {
164
197
  scaleBigIntByPercent(conflictingUserOp.maxFeePerGas, 110n);
165
198
  const hasHigherFees = hasHigherPriorityFee && hasHigherMaxFee;
166
199
  if (!hasHigherFees) {
167
- const message = reason === "conflicting_deployment"
168
- ? "AA10 sender already constructed: A conflicting userOperation with initCode for this sender is already in the mempool"
169
- : "AA25 invalid account nonce: User operation already present in mempool";
200
+ let message;
201
+ if (conflictReason === "conflicting_deployment") {
202
+ message =
203
+ "AA10 sender already constructed: A conflicting userOperation with initCode for this sender is already in the mempool";
204
+ }
205
+ else if (conflictReason === "conflicting_7702_auth") {
206
+ message =
207
+ "AA10 sender already constructed: Sender already has an inflight EIP-7702 authorization";
208
+ }
209
+ else {
210
+ message =
211
+ "AA25 invalid account nonce: User operation already present in mempool";
212
+ }
170
213
  // Re-add to outstanding as it wasn't replaced
171
214
  await this.store.addOutstanding({
172
215
  entryPoint,
173
- userOpInfo: conflicting.userOpInfo
216
+ userOpInfos: [conflicting.userOpInfo]
174
217
  });
175
218
  return [false, `${message}, bump the gas price by minimum 10%`];
176
219
  }
177
- await this.reputationManager.replaceUserOperationSeenStatus(conflictingUserOp, entryPoint);
220
+ await this.reputationManager.replaceUserOpSeenStatus(conflictingUserOp, entryPoint);
178
221
  }
179
- await this.reputationManager.increaseUserOperationSeenStatus(userOp, entryPoint);
222
+ await this.reputationManager.increaseUserOpSeenStatus(userOp, entryPoint);
180
223
  await this.store.addOutstanding({
181
224
  entryPoint,
182
- userOpInfo: {
183
- userOp,
184
- userOpHash,
185
- referencedContracts,
186
- addedToMempool: Date.now()
187
- }
225
+ userOpInfos: [userOpInfo]
188
226
  });
189
- await this.monitor.setUserOperationStatus(userOpHash, {
227
+ await this.statusManager.set([userOpHash], {
190
228
  status: "not_submitted",
191
229
  transactionHash: null
192
230
  });
193
- await this.eventManager.emitAddedToMempool(userOpHash);
231
+ this.eventManager.emitAddedToMempool(userOpHash);
194
232
  return [true, ""];
195
233
  }
196
234
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
197
- async shouldSkip({ userOpInfo, paymasterDeposit, stakedEntityCount, knownEntities, senders, storageMap, entryPoint }) {
235
+ async shouldSkip({ userOpInfo, paymasterDeposit, touchedEip7702Auth, stakedEntityCount, knownEntities, senders, storageMap, entryPoint }) {
236
+ const { userOp, userOpHash, referencedContracts } = userOpInfo;
237
+ // Check conflicting EIP-7702 auths (same sender, different delegate address)
238
+ if (userOp.eip7702Auth) {
239
+ const auth = getEip7702AuthAddress(userOp.eip7702Auth);
240
+ const existingAuth = touchedEip7702Auth.get(userOp.sender);
241
+ if (existingAuth && existingAuth !== auth) {
242
+ this.logger.warn({
243
+ userOpHash,
244
+ conflictingAuth: auth,
245
+ existingAuth
246
+ }, "Conflicting EIP-7702 auths");
247
+ return {
248
+ skip: true,
249
+ removeOutstanding: false,
250
+ paymasterDeposit,
251
+ touchedEip7702Auth,
252
+ stakedEntityCount,
253
+ knownEntities,
254
+ senders,
255
+ storageMap
256
+ };
257
+ }
258
+ if (!existingAuth) {
259
+ touchedEip7702Auth.set(userOp.sender, auth);
260
+ }
261
+ }
198
262
  if (!this.config.safeMode) {
199
263
  return {
200
264
  skip: false,
@@ -202,10 +266,10 @@ export class Mempool {
202
266
  stakedEntityCount,
203
267
  knownEntities,
204
268
  senders,
205
- storageMap
269
+ storageMap,
270
+ touchedEip7702Auth
206
271
  };
207
272
  }
208
- const { userOp, userOpHash, referencedContracts } = userOpInfo;
209
273
  const isUserOpV06 = isVersion06(userOp);
210
274
  const paymaster = isUserOpV06
211
275
  ? getAddressFromInitCodeOrPaymasterAndData(userOp.paymasterAndData)
@@ -224,7 +288,8 @@ export class Mempool {
224
288
  stakedEntityCount,
225
289
  knownEntities,
226
290
  senders,
227
- storageMap
291
+ storageMap,
292
+ touchedEip7702Auth
228
293
  };
229
294
  }
230
295
  if (paymasterStatus === ReputationStatuses.throttled &&
@@ -240,7 +305,8 @@ export class Mempool {
240
305
  stakedEntityCount,
241
306
  knownEntities,
242
307
  senders,
243
- storageMap
308
+ storageMap,
309
+ touchedEip7702Auth
244
310
  };
245
311
  }
246
312
  if (factoryStatus === ReputationStatuses.throttled &&
@@ -256,7 +322,8 @@ export class Mempool {
256
322
  stakedEntityCount,
257
323
  knownEntities,
258
324
  senders,
259
- storageMap
325
+ storageMap,
326
+ touchedEip7702Auth
260
327
  };
261
328
  }
262
329
  if (senders.has(userOp.sender) &&
@@ -271,22 +338,22 @@ export class Mempool {
271
338
  stakedEntityCount,
272
339
  knownEntities,
273
340
  senders,
274
- storageMap
341
+ storageMap,
342
+ touchedEip7702Auth
275
343
  };
276
344
  }
277
345
  let validationResult;
278
346
  try {
279
- let queuedUserOperations = [];
347
+ let queuedUserOps = [];
280
348
  if (!isUserOpV06) {
281
- queuedUserOperations = await this.getQueuedOustandingUserOps({
349
+ queuedUserOps = await this.getQueuedOutstandingUserOps({
282
350
  userOp,
283
351
  entryPoint
284
352
  });
285
353
  }
286
- validationResult = await this.validator.validateUserOperation({
287
- shouldCheckPrefund: false,
288
- userOperation: userOp,
289
- queuedUserOperations,
354
+ validationResult = await this.validator.validateUserOp({
355
+ userOp,
356
+ queuedUserOps,
290
357
  entryPoint,
291
358
  referencedContracts
292
359
  });
@@ -296,15 +363,16 @@ export class Mempool {
296
363
  userOpHash,
297
364
  error: JSON.stringify(e)
298
365
  }, "2nd Validation error");
299
- this.store.removeOutstanding({ entryPoint, userOpHash });
300
- this.reputationManager.decreaseUserOperationSeenStatus(userOp, entryPoint, e instanceof RpcError ? e.message : JSON.stringify(e));
366
+ await this.store.removeOutstanding({ entryPoint, userOpHash });
367
+ this.reputationManager.decreaseUserOpSeenStatus(userOp, entryPoint, e instanceof RpcError ? e.message : JSON.stringify(e));
301
368
  return {
302
369
  skip: true,
303
370
  paymasterDeposit,
304
371
  stakedEntityCount,
305
372
  knownEntities,
306
373
  senders,
307
- storageMap
374
+ storageMap,
375
+ touchedEip7702Auth
308
376
  };
309
377
  }
310
378
  for (const storageAddress of Object.keys(validationResult.storageMap)) {
@@ -321,7 +389,8 @@ export class Mempool {
321
389
  stakedEntityCount,
322
390
  knownEntities,
323
391
  senders,
324
- storageMap
392
+ storageMap,
393
+ touchedEip7702Auth
325
394
  };
326
395
  }
327
396
  }
@@ -349,7 +418,8 @@ export class Mempool {
349
418
  stakedEntityCount,
350
419
  knownEntities,
351
420
  senders,
352
- storageMap
421
+ storageMap,
422
+ touchedEip7702Auth
353
423
  };
354
424
  }
355
425
  stakedEntityCount[paymaster] =
@@ -366,7 +436,8 @@ export class Mempool {
366
436
  stakedEntityCount,
367
437
  knownEntities,
368
438
  senders,
369
- storageMap
439
+ storageMap,
440
+ touchedEip7702Auth
370
441
  };
371
442
  }
372
443
  async getBundles(maxBundleCount) {
@@ -374,7 +445,6 @@ export class Mempool {
374
445
  return await this.process({
375
446
  entryPoint,
376
447
  maxGasLimit: this.config.maxGasPerBundle,
377
- minOpsPerBundle: 1,
378
448
  maxBundleCount
379
449
  });
380
450
  });
@@ -383,57 +453,56 @@ export class Mempool {
383
453
  return bundles;
384
454
  }
385
455
  // Returns a bundle of userOperations in array format.
386
- async process({ maxGasLimit, entryPoint, minOpsPerBundle, maxBundleCount }) {
387
- // Check if there are any operations in the store
388
- const firstOp = await this.store.peekOutstanding(entryPoint);
389
- if (!firstOp) {
456
+ async process({ maxGasLimit, entryPoint, maxBundleCount }) {
457
+ const bundles = [];
458
+ const batchSize = this.config.mempoolPopBatchSize;
459
+ // Pop batch of userOps.
460
+ const poppedUserOps = await this.store.popOutstanding(entryPoint, batchSize);
461
+ if (poppedUserOps.length === 0) {
390
462
  return [];
391
463
  }
392
- // Get EntryPoint version
393
- const isV6 = isVersion06(firstOp.userOp);
394
- const bundles = [];
395
- const seenOps = new Set();
396
- let breakLoop = false;
397
- // Process operations until no more are available or we hit maxBundleCount
398
- while (await this.store.peekOutstanding(entryPoint)) {
399
- // If maxBundles is set and we reached the limit, break
464
+ // Keep track of unused ops from the batch
465
+ const unusedUserOps = [...poppedUserOps];
466
+ while (unusedUserOps.length > 0) {
467
+ // If maxBundles is set and we reached the limit, put back all unused ops and break.
400
468
  if (maxBundleCount && bundles.length >= maxBundleCount) {
469
+ if (unusedUserOps.length > 0) {
470
+ await this.store.addOutstanding({
471
+ entryPoint,
472
+ userOpInfos: unusedUserOps
473
+ });
474
+ }
401
475
  break;
402
476
  }
403
- // Setup for next bundle
477
+ // Peek next userOp from unused batch.
478
+ const nextUserOp = unusedUserOps[0];
479
+ if (!nextUserOp)
480
+ break;
481
+ // Derive version.
482
+ const version = getViemEntryPointVersion(nextUserOp.userOp, entryPoint);
483
+ // Setup next bundle.
404
484
  const currentBundle = {
405
485
  entryPoint,
406
- version: isV6 ? "0.6" : "0.7",
407
- userOps: []
486
+ version,
487
+ userOps: [],
488
+ submissionAttempts: 0
408
489
  };
409
490
  let gasUsed = 0n;
491
+ let touchedEip7702Auth = new Map();
410
492
  let paymasterDeposit = {};
411
493
  let stakedEntityCount = {};
412
494
  let senders = new Set();
413
495
  let knownEntities = await this.getKnownEntities(entryPoint);
414
496
  let storageMap = {};
415
- if (breakLoop) {
416
- break;
417
- }
418
- // Keep adding ops to current bundle
419
- while (await this.store.peekOutstanding(entryPoint)) {
420
- const userOpInfo = await this.store.popOutstanding(entryPoint);
421
- if (!userOpInfo) {
497
+ while (unusedUserOps.length > 0) {
498
+ const currentUserOp = unusedUserOps.shift();
499
+ if (!currentUserOp)
422
500
  break;
423
- }
424
- if (seenOps.has(userOpInfo.userOpHash)) {
425
- breakLoop = true;
426
- await this.store.addOutstanding({
427
- entryPoint,
428
- userOpInfo
429
- });
430
- break;
431
- }
432
- seenOps.add(userOpInfo.userOpHash);
433
- const { userOp } = userOpInfo;
501
+ const { userOp } = currentUserOp;
434
502
  // Check if we should skip this operation
435
503
  const skipResult = await this.shouldSkip({
436
- userOpInfo,
504
+ userOpInfo: currentUserOp,
505
+ touchedEip7702Auth,
437
506
  paymasterDeposit,
438
507
  stakedEntityCount,
439
508
  knownEntities,
@@ -446,23 +515,20 @@ export class Mempool {
446
515
  if (!skipResult.removeOutstanding) {
447
516
  await this.store.addOutstanding({
448
517
  entryPoint,
449
- userOpInfo
518
+ userOpInfos: [currentUserOp]
450
519
  });
451
520
  }
521
+ // Continue with next op from batch
452
522
  continue;
453
523
  }
454
- gasUsed +=
455
- userOp.callGasLimit +
456
- userOp.verificationGasLimit +
457
- (isVersion07(userOp)
458
- ? (userOp.paymasterPostOpGasLimit || 0n) +
459
- (userOp.paymasterVerificationGasLimit || 0n)
460
- : 0n);
461
- // Only break on gas limit if we've hit minOpsPerBundle
462
- if (gasUsed > maxGasLimit &&
463
- currentBundle.userOps.length >= minOpsPerBundle) {
464
- // Put the operation back in the store
465
- await this.store.addOutstanding({ entryPoint, userOpInfo });
524
+ gasUsed += calculateAA95GasFloor({
525
+ userOps: [userOp],
526
+ beneficiary: this.config.utilityWalletAddress
527
+ });
528
+ // Check bundle gasLimit if bundle is not empty
529
+ if (currentBundle.userOps.length > 0 && gasUsed > maxGasLimit) {
530
+ // Put current op back to front of unused for next bundle
531
+ unusedUserOps.unshift(currentUserOp);
466
532
  break;
467
533
  }
468
534
  // Update state based on skip result
@@ -471,10 +537,20 @@ export class Mempool {
471
537
  knownEntities = skipResult.knownEntities;
472
538
  senders = skipResult.senders;
473
539
  storageMap = skipResult.storageMap;
474
- this.reputationManager.decreaseUserOperationCount(userOp);
475
- this.store.addProcessing({ entryPoint, userOpInfo });
476
- // Add op to current bundle
477
- currentBundle.userOps.push(userOpInfo);
540
+ touchedEip7702Auth = skipResult.touchedEip7702Auth;
541
+ this.reputationManager.decreaseUserOpCount(userOp);
542
+ // Track the operation as active (being bundled).
543
+ await this.store.addProcessing({
544
+ entryPoint,
545
+ userOpInfo: currentUserOp
546
+ });
547
+ // Add userOp to current bundle.
548
+ currentBundle.userOps.push(currentUserOp);
549
+ // Try to fetch more userOps if we've exhausted this batch.
550
+ if (unusedUserOps.length === 0) {
551
+ const morePoppedOps = await this.store.popOutstanding(entryPoint, batchSize);
552
+ unusedUserOps.push(...morePoppedOps);
553
+ }
478
554
  }
479
555
  if (currentBundle.userOps.length > 0) {
480
556
  bundles.push(currentBundle);
@@ -487,7 +563,7 @@ export class Mempool {
487
563
  this.store.clearOutstanding(entryPoint);
488
564
  }
489
565
  }
490
- async getQueuedOustandingUserOps(args) {
566
+ async getQueuedOutstandingUserOps(args) {
491
567
  return await this.store.getQueuedOutstandingUserOps(args);
492
568
  }
493
569
  }