@pimlico/alto 0.0.0-main.20250428T212302 → 0.0.0-main.20250429T151930

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 (386) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -0
  2. package/contracts/ERC165.sol/ERC165.json +1 -0
  3. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -0
  4. package/contracts/EntryPoint.sol/EntryPoint.json +1 -0
  5. package/contracts/EntryPointCodeOverride.sol/EntryPointCodeOverride.json +1 -0
  6. package/contracts/EntryPointSimulations.sol/EntryPointSimulations.json +1 -0
  7. package/contracts/Exec.sol/Exec.json +1 -0
  8. package/contracts/IAccount.sol/IAccount.json +1 -0
  9. package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -0
  10. package/contracts/IAggregator.sol/IAggregator.json +1 -0
  11. package/contracts/IERC165.sol/IERC165.json +1 -0
  12. package/contracts/IERC5267.sol/IERC5267.json +1 -0
  13. package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -0
  14. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -0
  15. package/contracts/INonceManager.sol/INonceManager.json +1 -0
  16. package/contracts/IPaymaster.sol/IPaymaster.json +1 -0
  17. package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -0
  18. package/contracts/IStakeManager.sol/IStakeManager.json +1 -0
  19. package/contracts/Math.sol/Math.json +1 -0
  20. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -0
  21. package/contracts/NonceManager.sol/NonceManager.json +1 -0
  22. package/contracts/Panic.sol/Panic.json +1 -0
  23. package/contracts/PimlicoEntryPointSimulationsV7.sol/PimlicoEntryPointSimulationsV7.json +1 -0
  24. package/contracts/PimlicoEntryPointSimulationsV8.sol/PimlicoEntryPointSimulationsV8.json +1 -0
  25. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -0
  26. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -0
  27. package/contracts/SafeCast.sol/SafeCast.json +1 -0
  28. package/contracts/SenderCreator.sol/SenderCreator.json +1 -0
  29. package/contracts/ShortStrings.sol/ShortStrings.json +1 -0
  30. package/contracts/SignedMath.sol/SignedMath.json +1 -0
  31. package/contracts/StakeManager.sol/StakeManager.json +1 -0
  32. package/contracts/StorageSlot.sol/StorageSlot.json +1 -0
  33. package/contracts/Strings.sol/Strings.json +1 -0
  34. package/contracts/TransientSlot.sol/TransientSlot.json +1 -0
  35. package/contracts/UserOperation.sol/UserOperationLib.json +1 -0
  36. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -0
  37. package/contracts/build-info/0c52dc19c74a9a932ddddcca463ce398.json +1 -0
  38. package/contracts/build-info/a1d9af887789a0ade8ffbc8b045f0780.json +1 -0
  39. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  40. package/esm/cli/deploySimulationsContract.js +14 -5
  41. package/esm/cli/deploySimulationsContract.js.map +1 -1
  42. package/esm/cli/handler.js +4 -0
  43. package/esm/cli/handler.js.map +1 -1
  44. package/package.json +2 -1
  45. package/lib/cli/alto.d.ts +0 -7
  46. package/lib/cli/alto.js +0 -141
  47. package/lib/cli/alto.js.map +0 -1
  48. package/lib/cli/config/bundler.d.ts +0 -2872
  49. package/lib/cli/config/bundler.js +0 -242
  50. package/lib/cli/config/bundler.js.map +0 -1
  51. package/lib/cli/config/index.d.ts +0 -3
  52. package/lib/cli/config/index.js +0 -19
  53. package/lib/cli/config/index.js.map +0 -1
  54. package/lib/cli/config/options.d.ts +0 -13
  55. package/lib/cli/config/options.js +0 -587
  56. package/lib/cli/config/options.js.map +0 -1
  57. package/lib/cli/customTransport.d.ts +0 -14
  58. package/lib/cli/customTransport.js +0 -94
  59. package/lib/cli/customTransport.js.map +0 -1
  60. package/lib/cli/deploySimulationsContract.d.ts +0 -13
  61. package/lib/cli/deploySimulationsContract.js +0 -100
  62. package/lib/cli/deploySimulationsContract.js.map +0 -1
  63. package/lib/cli/handler.d.ts +0 -3
  64. package/lib/cli/handler.js +0 -157
  65. package/lib/cli/handler.js.map +0 -1
  66. package/lib/cli/index.d.ts +0 -4
  67. package/lib/cli/index.js +0 -20
  68. package/lib/cli/index.js.map +0 -1
  69. package/lib/cli/instrumentation.d.ts +0 -2
  70. package/lib/cli/instrumentation.js +0 -47
  71. package/lib/cli/instrumentation.js.map +0 -1
  72. package/lib/cli/parseArgs.d.ts +0 -8
  73. package/lib/cli/parseArgs.js +0 -25
  74. package/lib/cli/parseArgs.js.map +0 -1
  75. package/lib/cli/setupServer.d.ts +0 -13
  76. package/lib/cli/setupServer.js +0 -266
  77. package/lib/cli/setupServer.js.map +0 -1
  78. package/lib/cli/util.d.ts +0 -22
  79. package/lib/cli/util.js +0 -34
  80. package/lib/cli/util.js.map +0 -1
  81. package/lib/createConfig.d.ts +0 -16
  82. package/lib/createConfig.js +0 -13
  83. package/lib/createConfig.js.map +0 -1
  84. package/lib/executor/executor.d.ts +0 -65
  85. package/lib/executor/executor.js +0 -301
  86. package/lib/executor/executor.js.map +0 -1
  87. package/lib/executor/executorManager.d.ts +0 -108
  88. package/lib/executor/executorManager.js +0 -702
  89. package/lib/executor/executorManager.js.map +0 -1
  90. package/lib/executor/fastlane.d.ts +0 -9
  91. package/lib/executor/fastlane.js +0 -41
  92. package/lib/executor/fastlane.js.map +0 -1
  93. package/lib/executor/filterOpsAndEStimateGas.d.ts +0 -29
  94. package/lib/executor/filterOpsAndEStimateGas.js +0 -225
  95. package/lib/executor/filterOpsAndEStimateGas.js.map +0 -1
  96. package/lib/executor/index.d.ts +0 -5
  97. package/lib/executor/index.js +0 -21
  98. package/lib/executor/index.js.map +0 -1
  99. package/lib/executor/senderManager/createMemorySenderManager.d.ts +0 -8
  100. package/lib/executor/senderManager/createMemorySenderManager.js +0 -45
  101. package/lib/executor/senderManager/createMemorySenderManager.js.map +0 -1
  102. package/lib/executor/senderManager/createRedisSenderManager.d.ts +0 -8
  103. package/lib/executor/senderManager/createRedisSenderManager.js +0 -85
  104. package/lib/executor/senderManager/createRedisSenderManager.js.map +0 -1
  105. package/lib/executor/senderManager/flushOnStartUp.d.ts +0 -9
  106. package/lib/executor/senderManager/flushOnStartUp.js +0 -37
  107. package/lib/executor/senderManager/flushOnStartUp.js.map +0 -1
  108. package/lib/executor/senderManager/index.d.ts +0 -15
  109. package/lib/executor/senderManager/index.js +0 -25
  110. package/lib/executor/senderManager/index.js.map +0 -1
  111. package/lib/executor/senderManager/validateAndRefill.d.ts +0 -11
  112. package/lib/executor/senderManager/validateAndRefill.js +0 -115
  113. package/lib/executor/senderManager/validateAndRefill.js.map +0 -1
  114. package/lib/executor/utilityWalletMonitor.d.ts +0 -19
  115. package/lib/executor/utilityWalletMonitor.js +0 -42
  116. package/lib/executor/utilityWalletMonitor.js.map +0 -1
  117. package/lib/executor/utils.d.ts +0 -34
  118. package/lib/executor/utils.js +0 -167
  119. package/lib/executor/utils.js.map +0 -1
  120. package/lib/handlers/arbitrumGasPriceManager.d.ts +0 -14
  121. package/lib/handlers/arbitrumGasPriceManager.js +0 -39
  122. package/lib/handlers/arbitrumGasPriceManager.js.map +0 -1
  123. package/lib/handlers/eventManager.d.ts +0 -29
  124. package/lib/handlers/eventManager.js +0 -225
  125. package/lib/handlers/eventManager.js.map +0 -1
  126. package/lib/handlers/gasPriceManager.d.ts +0 -36
  127. package/lib/handlers/gasPriceManager.js +0 -391
  128. package/lib/handlers/gasPriceManager.js.map +0 -1
  129. package/lib/handlers/index.d.ts +0 -3
  130. package/lib/handlers/index.js +0 -19
  131. package/lib/handlers/index.js.map +0 -1
  132. package/lib/handlers/mantleGasPriceManager.d.ts +0 -23
  133. package/lib/handlers/mantleGasPriceManager.js +0 -44
  134. package/lib/handlers/mantleGasPriceManager.js.map +0 -1
  135. package/lib/handlers/optimismManager.d.ts +0 -10
  136. package/lib/handlers/optimismManager.js +0 -21
  137. package/lib/handlers/optimismManager.js.map +0 -1
  138. package/lib/index.d.ts +0 -2
  139. package/lib/index.js +0 -4
  140. package/lib/index.js.map +0 -1
  141. package/lib/mempool/index.d.ts +0 -4
  142. package/lib/mempool/index.js +0 -20
  143. package/lib/mempool/index.js.map +0 -1
  144. package/lib/mempool/mempool.d.ts +0 -191
  145. package/lib/mempool/mempool.js +0 -499
  146. package/lib/mempool/mempool.js.map +0 -1
  147. package/lib/mempool/monitoring.d.ts +0 -14
  148. package/lib/mempool/monitoring.js +0 -101
  149. package/lib/mempool/monitoring.js.map +0 -1
  150. package/lib/mempool/reputationManager.d.ts +0 -121
  151. package/lib/mempool/reputationManager.js +0 -472
  152. package/lib/mempool/reputationManager.js.map +0 -1
  153. package/lib/rpc/createMethodHandler.d.ts +0 -31
  154. package/lib/rpc/createMethodHandler.js +0 -34
  155. package/lib/rpc/createMethodHandler.js.map +0 -1
  156. package/lib/rpc/estimation/gasEstimationHandler.d.ts +0 -30
  157. package/lib/rpc/estimation/gasEstimationHandler.js +0 -50
  158. package/lib/rpc/estimation/gasEstimationHandler.js.map +0 -1
  159. package/lib/rpc/estimation/gasEstimationsV06.d.ts +0 -19
  160. package/lib/rpc/estimation/gasEstimationsV06.js +0 -148
  161. package/lib/rpc/estimation/gasEstimationsV06.js.map +0 -1
  162. package/lib/rpc/estimation/gasEstimationsV07.d.ts +0 -101
  163. package/lib/rpc/estimation/gasEstimationsV07.js +0 -727
  164. package/lib/rpc/estimation/gasEstimationsV07.js.map +0 -1
  165. package/lib/rpc/estimation/types.d.ts +0 -120
  166. package/lib/rpc/estimation/types.js +0 -125
  167. package/lib/rpc/estimation/types.js.map +0 -1
  168. package/lib/rpc/index.d.ts +0 -4
  169. package/lib/rpc/index.js +0 -20
  170. package/lib/rpc/index.js.map +0 -1
  171. package/lib/rpc/methods/debug_bundler_clearReputation.d.ts +0 -22
  172. package/lib/rpc/methods/debug_bundler_clearReputation.js +0 -15
  173. package/lib/rpc/methods/debug_bundler_clearReputation.js.map +0 -1
  174. package/lib/rpc/methods/debug_bundler_clearState.d.ts +0 -22
  175. package/lib/rpc/methods/debug_bundler_clearState.js +0 -16
  176. package/lib/rpc/methods/debug_bundler_clearState.js.map +0 -1
  177. package/lib/rpc/methods/debug_bundler_dumpMempool.d.ts +0 -973
  178. package/lib/rpc/methods/debug_bundler_dumpMempool.js +0 -16
  179. package/lib/rpc/methods/debug_bundler_dumpMempool.js.map +0 -1
  180. package/lib/rpc/methods/debug_bundler_dumpReputation.d.ts +0 -57
  181. package/lib/rpc/methods/debug_bundler_dumpReputation.js +0 -16
  182. package/lib/rpc/methods/debug_bundler_dumpReputation.js.map +0 -1
  183. package/lib/rpc/methods/debug_bundler_getStakeStatus.d.ts +0 -79
  184. package/lib/rpc/methods/debug_bundler_getStakeStatus.js +0 -25
  185. package/lib/rpc/methods/debug_bundler_getStakeStatus.js.map +0 -1
  186. package/lib/rpc/methods/debug_bundler_sendBundleNow.d.ts +0 -22
  187. package/lib/rpc/methods/debug_bundler_sendBundleNow.js +0 -15
  188. package/lib/rpc/methods/debug_bundler_sendBundleNow.js.map +0 -1
  189. package/lib/rpc/methods/debug_bundler_setBundlingMode.d.ts +0 -22
  190. package/lib/rpc/methods/debug_bundler_setBundlingMode.js +0 -16
  191. package/lib/rpc/methods/debug_bundler_setBundlingMode.js.map +0 -1
  192. package/lib/rpc/methods/debug_bundler_setReputation.d.ts +0 -46
  193. package/lib/rpc/methods/debug_bundler_setReputation.js +0 -16
  194. package/lib/rpc/methods/debug_bundler_setReputation.js.map +0 -1
  195. package/lib/rpc/methods/eth_chainId.d.ts +0 -22
  196. package/lib/rpc/methods/eth_chainId.js +0 -13
  197. package/lib/rpc/methods/eth_chainId.js.map +0 -1
  198. package/lib/rpc/methods/eth_estimateUserOperationGas.d.ts +0 -1891
  199. package/lib/rpc/methods/eth_estimateUserOperationGas.js +0 -26
  200. package/lib/rpc/methods/eth_estimateUserOperationGas.js.map +0 -1
  201. package/lib/rpc/methods/eth_getUserOperationByHash.d.ts +0 -1775
  202. package/lib/rpc/methods/eth_getUserOperationByHash.js +0 -101
  203. package/lib/rpc/methods/eth_getUserOperationByHash.js.map +0 -1
  204. package/lib/rpc/methods/eth_getUserOperationReceipt.d.ts +0 -412
  205. package/lib/rpc/methods/eth_getUserOperationReceipt.js +0 -14
  206. package/lib/rpc/methods/eth_getUserOperationReceipt.js.map +0 -1
  207. package/lib/rpc/methods/eth_sendUserOperation.d.ts +0 -878
  208. package/lib/rpc/methods/eth_sendUserOperation.js +0 -44
  209. package/lib/rpc/methods/eth_sendUserOperation.js.map +0 -1
  210. package/lib/rpc/methods/eth_supportedEntryPoints.d.ts +0 -22
  211. package/lib/rpc/methods/eth_supportedEntryPoints.js +0 -13
  212. package/lib/rpc/methods/eth_supportedEntryPoints.js.map +0 -1
  213. package/lib/rpc/methods/index.d.ts +0 -3
  214. package/lib/rpc/methods/index.js +0 -44
  215. package/lib/rpc/methods/index.js.map +0 -1
  216. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.d.ts +0 -131
  217. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js +0 -33
  218. package/lib/rpc/methods/pimlico_getUserOperationGasPrice.js.map +0 -1
  219. package/lib/rpc/methods/pimlico_getUserOperationStatus.d.ts +0 -43
  220. package/lib/rpc/methods/pimlico_getUserOperationStatus.js +0 -14
  221. package/lib/rpc/methods/pimlico_getUserOperationStatus.js.map +0 -1
  222. package/lib/rpc/methods/pimlico_sendUserOperationNow.d.ts +0 -1268
  223. package/lib/rpc/methods/pimlico_sendUserOperationNow.js +0 -55
  224. package/lib/rpc/methods/pimlico_sendUserOperationNow.js.map +0 -1
  225. package/lib/rpc/rpcHandler.d.ts +0 -75
  226. package/lib/rpc/rpcHandler.js +0 -391
  227. package/lib/rpc/rpcHandler.js.map +0 -1
  228. package/lib/rpc/server.d.ts +0 -26
  229. package/lib/rpc/server.js +0 -283
  230. package/lib/rpc/server.js.map +0 -1
  231. package/lib/rpc/validation/BundlerCollectorTracerV06.d.ts +0 -102
  232. package/lib/rpc/validation/BundlerCollectorTracerV06.js +0 -262
  233. package/lib/rpc/validation/BundlerCollectorTracerV06.js.map +0 -1
  234. package/lib/rpc/validation/BundlerCollectorTracerV07.d.ts +0 -102
  235. package/lib/rpc/validation/BundlerCollectorTracerV07.js +0 -261
  236. package/lib/rpc/validation/BundlerCollectorTracerV07.js.map +0 -1
  237. package/lib/rpc/validation/SafeValidator.d.ts +0 -51
  238. package/lib/rpc/validation/SafeValidator.js +0 -327
  239. package/lib/rpc/validation/SafeValidator.js.map +0 -1
  240. package/lib/rpc/validation/TracerResultParserV06.d.ts +0 -13
  241. package/lib/rpc/validation/TracerResultParserV06.js +0 -582
  242. package/lib/rpc/validation/TracerResultParserV06.js.map +0 -1
  243. package/lib/rpc/validation/TracerResultParserV07.d.ts +0 -33
  244. package/lib/rpc/validation/TracerResultParserV07.js +0 -599
  245. package/lib/rpc/validation/TracerResultParserV07.js.map +0 -1
  246. package/lib/rpc/validation/UnsafeValidator.d.ts +0 -97
  247. package/lib/rpc/validation/UnsafeValidator.js +0 -303
  248. package/lib/rpc/validation/UnsafeValidator.js.map +0 -1
  249. package/lib/rpc/validation/index.d.ts +0 -3
  250. package/lib/rpc/validation/index.js +0 -19
  251. package/lib/rpc/validation/index.js.map +0 -1
  252. package/lib/rpc/validation/tracer.d.ts +0 -125
  253. package/lib/rpc/validation/tracer.js +0 -112
  254. package/lib/rpc/validation/tracer.js.map +0 -1
  255. package/lib/store/createMemoryOutstandingStore.d.ts +0 -28
  256. package/lib/store/createMemoryOutstandingStore.js +0 -236
  257. package/lib/store/createMemoryOutstandingStore.js.map +0 -1
  258. package/lib/store/createMempoolStore.d.ts +0 -8
  259. package/lib/store/createMempoolStore.js +0 -199
  260. package/lib/store/createMempoolStore.js.map +0 -1
  261. package/lib/store/createRedisOutstandingStore.d.ts +0 -27
  262. package/lib/store/createRedisOutstandingStore.js +0 -349
  263. package/lib/store/createRedisOutstandingStore.js.map +0 -1
  264. package/lib/store/createRedisStore.d.ts +0 -9
  265. package/lib/store/createRedisStore.js +0 -138
  266. package/lib/store/createRedisStore.js.map +0 -1
  267. package/lib/store/createStore.d.ts +0 -6
  268. package/lib/store/createStore.js +0 -70
  269. package/lib/store/createStore.js.map +0 -1
  270. package/lib/store/index.d.ts +0 -81
  271. package/lib/store/index.js +0 -6
  272. package/lib/store/index.js.map +0 -1
  273. package/lib/types/contracts/ArbitrumL1FeeAbi.d.ts +0 -32
  274. package/lib/types/contracts/ArbitrumL1FeeAbi.js +0 -45
  275. package/lib/types/contracts/ArbitrumL1FeeAbi.js.map +0 -1
  276. package/lib/types/contracts/CallEngine.d.ts +0 -28
  277. package/lib/types/contracts/CallEngine.js +0 -40
  278. package/lib/types/contracts/CallEngine.js.map +0 -1
  279. package/lib/types/contracts/CodeHashGetter.d.ts +0 -37
  280. package/lib/types/contracts/CodeHashGetter.js +0 -48
  281. package/lib/types/contracts/CodeHashGetter.js.map +0 -1
  282. package/lib/types/contracts/EntryPoint.d.ts +0 -1789
  283. package/lib/types/contracts/EntryPoint.js +0 -2307
  284. package/lib/types/contracts/EntryPoint.js.map +0 -1
  285. package/lib/types/contracts/EntryPointSimulationsV6.d.ts +0 -34
  286. package/lib/types/contracts/EntryPointSimulationsV6.js +0 -51
  287. package/lib/types/contracts/EntryPointSimulationsV6.js.map +0 -1
  288. package/lib/types/contracts/EntryPointSimulationsV7.d.ts +0 -2076
  289. package/lib/types/contracts/EntryPointSimulationsV7.js +0 -2678
  290. package/lib/types/contracts/EntryPointSimulationsV7.js.map +0 -1
  291. package/lib/types/contracts/IAccountExecute.d.ts +0 -53
  292. package/lib/types/contracts/IAccountExecute.js +0 -71
  293. package/lib/types/contracts/IAccountExecute.js.map +0 -1
  294. package/lib/types/contracts/IPaymaster.d.ts +0 -3
  295. package/lib/types/contracts/IPaymaster.js +0 -120
  296. package/lib/types/contracts/IPaymaster.js.map +0 -1
  297. package/lib/types/contracts/MantleBvmGasPriceOracle.d.ts +0 -219
  298. package/lib/types/contracts/MantleBvmGasPriceOracle.js +0 -180
  299. package/lib/types/contracts/MantleBvmGasPriceOracle.js.map +0 -1
  300. package/lib/types/contracts/OpL1FeeAbi.d.ts +0 -114
  301. package/lib/types/contracts/OpL1FeeAbi.js +0 -77
  302. package/lib/types/contracts/OpL1FeeAbi.js.map +0 -1
  303. package/lib/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -25
  304. package/lib/types/contracts/PimlicoEntryPointSimulations.js +0 -42
  305. package/lib/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
  306. package/lib/types/contracts/SenderCreator.d.ts +0 -4
  307. package/lib/types/contracts/SenderCreator.js +0 -26
  308. package/lib/types/contracts/SenderCreator.js.map +0 -1
  309. package/lib/types/contracts/SimpleAccountFactory.d.ts +0 -57
  310. package/lib/types/contracts/SimpleAccountFactory.js +0 -79
  311. package/lib/types/contracts/SimpleAccountFactory.js.map +0 -1
  312. package/lib/types/contracts/TestOpcodesAccount.d.ts +0 -4
  313. package/lib/types/contracts/TestOpcodesAccount.js +0 -284
  314. package/lib/types/contracts/TestOpcodesAccount.js.map +0 -1
  315. package/lib/types/contracts/TestOpcodesAccountFactory.d.ts +0 -4
  316. package/lib/types/contracts/TestOpcodesAccountFactory.js +0 -26
  317. package/lib/types/contracts/TestOpcodesAccountFactory.js.map +0 -1
  318. package/lib/types/contracts/TestStorageAccount.d.ts +0 -4
  319. package/lib/types/contracts/TestStorageAccount.js +0 -316
  320. package/lib/types/contracts/TestStorageAccount.js.map +0 -1
  321. package/lib/types/contracts/index.d.ts +0 -17
  322. package/lib/types/contracts/index.js +0 -33
  323. package/lib/types/contracts/index.js.map +0 -1
  324. package/lib/types/gasPrice.d.ts +0 -110
  325. package/lib/types/gasPrice.js +0 -55
  326. package/lib/types/gasPrice.js.map +0 -1
  327. package/lib/types/index.d.ts +0 -11
  328. package/lib/types/index.js +0 -27
  329. package/lib/types/index.js.map +0 -1
  330. package/lib/types/interfaces.d.ts +0 -58
  331. package/lib/types/interfaces.js +0 -3
  332. package/lib/types/interfaces.js.map +0 -1
  333. package/lib/types/mempool.d.ts +0 -60
  334. package/lib/types/mempool.js +0 -11
  335. package/lib/types/mempool.js.map +0 -1
  336. package/lib/types/schemas.d.ts +0 -20785
  337. package/lib/types/schemas.js +0 -679
  338. package/lib/types/schemas.js.map +0 -1
  339. package/lib/types/utils.d.ts +0 -25
  340. package/lib/types/utils.js +0 -35
  341. package/lib/types/utils.js.map +0 -1
  342. package/lib/types/validation.d.ts +0 -14327
  343. package/lib/types/validation.js +0 -312
  344. package/lib/types/validation.js.map +0 -1
  345. package/lib/utils/asyncTimeout.d.ts +0 -5
  346. package/lib/utils/asyncTimeout.js +0 -51
  347. package/lib/utils/asyncTimeout.js.map +0 -1
  348. package/lib/utils/bigInt.d.ts +0 -8
  349. package/lib/utils/bigInt.js +0 -24
  350. package/lib/utils/bigInt.js.map +0 -1
  351. package/lib/utils/eip7702.d.ts +0 -4
  352. package/lib/utils/eip7702.js +0 -21
  353. package/lib/utils/eip7702.js.map +0 -1
  354. package/lib/utils/fastify-rpc-decorators.d.ts +0 -19
  355. package/lib/utils/fastify-rpc-decorators.js +0 -23
  356. package/lib/utils/fastify-rpc-decorators.js.map +0 -1
  357. package/lib/utils/helpers.d.ts +0 -15
  358. package/lib/utils/helpers.js +0 -59
  359. package/lib/utils/helpers.js.map +0 -1
  360. package/lib/utils/index.d.ts +0 -9
  361. package/lib/utils/index.js +0 -24
  362. package/lib/utils/index.js.map +0 -1
  363. package/lib/utils/logger.d.ts +0 -6
  364. package/lib/utils/logger.js +0 -85
  365. package/lib/utils/logger.js.map +0 -1
  366. package/lib/utils/metrics.d.ts +0 -29
  367. package/lib/utils/metrics.js +0 -199
  368. package/lib/utils/metrics.js.map +0 -1
  369. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.d.ts +0 -6
  370. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js +0 -57
  371. package/lib/utils/minMaxQueue/createMemoryMinMaxQueue.js.map +0 -1
  372. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +0 -7
  373. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js +0 -105
  374. package/lib/utils/minMaxQueue/createRedisMinMaxQueue.js.map +0 -1
  375. package/lib/utils/minMaxQueue/index.d.ts +0 -12
  376. package/lib/utils/minMaxQueue/index.js +0 -16
  377. package/lib/utils/minMaxQueue/index.js.map +0 -1
  378. package/lib/utils/rpc-reply.d.ts +0 -16
  379. package/lib/utils/rpc-reply.js +0 -41
  380. package/lib/utils/rpc-reply.js.map +0 -1
  381. package/lib/utils/userop.d.ts +0 -138
  382. package/lib/utils/userop.js +0 -620
  383. package/lib/utils/userop.js.map +0 -1
  384. package/lib/utils/validation.d.ts +0 -76
  385. package/lib/utils/validation.js +0 -491
  386. package/lib/utils/validation.js.map +0 -1
@@ -1,727 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSimulateValidationResult = exports.parseFailedOpWithRevert = exports.GasEstimatorV07 = void 0;
4
- const types_1 = require("../../types/index.js");
5
- const utils_1 = require("../../utils/index.js");
6
- const viem_1 = require("viem");
7
- const IAccountExecute_1 = require("../../types/contracts/IAccountExecute.js");
8
- const types_2 = require("./types.js");
9
- class GasEstimatorV07 {
10
- config;
11
- logger;
12
- constructor(config) {
13
- this.config = config;
14
- this.logger = config.getLogger({
15
- module: "gas-estimator-v07"
16
- }, {
17
- level: config.logLevel
18
- });
19
- }
20
- async simulateValidation({ entryPoint, userOperation, queuedUserOperations }) {
21
- const userOperations = [...queuedUserOperations, userOperation];
22
- const packedUserOperations = userOperations.map((uo) => (0, utils_1.toPackedUserOperation)(uo));
23
- const simulateValidationLast = (0, viem_1.encodeFunctionData)({
24
- abi: types_1.EntryPointV07SimulationsAbi,
25
- functionName: "simulateValidationLast",
26
- args: [packedUserOperations]
27
- });
28
- const stateOverrides = (0, utils_1.getAuthorizationStateOverrides)({
29
- userOperations: [...queuedUserOperations, userOperation]
30
- });
31
- const isV8 = (0, utils_1.isVersion08)(userOperation, entryPoint);
32
- const entryPointSimulationsAddress = isV8
33
- ? this.config.entrypointSimulationContractV8
34
- : this.config.entrypointSimulationContractV7;
35
- if (!entryPointSimulationsAddress) {
36
- throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
37
- }
38
- const errorResult = await this.callPimlicoEntryPointSimulations({
39
- entryPoint,
40
- entryPointSimulationsCallData: [simulateValidationLast],
41
- stateOverrides,
42
- entryPointSimulationsAddress
43
- });
44
- return {
45
- simulateValidationResult: getSimulateValidationResult(errorResult[0])
46
- };
47
- }
48
- async encodeUserOperationCalldata({ op, entryPoint }) {
49
- const packedOp = (0, utils_1.toPackedUserOperation)(op);
50
- const executeUserOpMethodSig = (0, viem_1.toFunctionSelector)(IAccountExecute_1.AccountExecuteAbi[0]);
51
- const callDataMethodSig = (0, viem_1.slice)(packedOp.callData, 0, 4);
52
- if (executeUserOpMethodSig === callDataMethodSig) {
53
- return (0, viem_1.encodeFunctionData)({
54
- abi: IAccountExecute_1.AccountExecuteAbi,
55
- functionName: "executeUserOp",
56
- args: [
57
- packedOp,
58
- await (0, utils_1.getUserOperationHash)({
59
- userOperation: op,
60
- entryPointAddress: entryPoint,
61
- chainId: this.config.chainId,
62
- publicClient: this.config.publicClient
63
- })
64
- ]
65
- });
66
- }
67
- return packedOp.callData;
68
- }
69
- async encodeSimulateHandleOpLast({ userOperation, queuedUserOperations, entryPoint }) {
70
- const userOperations = [...queuedUserOperations, userOperation];
71
- const packedUserOperations = await Promise.all(userOperations.map(async (uop) => ({
72
- packedUserOperation: (0, utils_1.toPackedUserOperation)(uop),
73
- userOperation: uop,
74
- userOperationHash: await (0, utils_1.getUserOperationHash)({
75
- userOperation: uop,
76
- entryPointAddress: entryPoint,
77
- chainId: this.config.chainId,
78
- publicClient: this.config.publicClient
79
- })
80
- })));
81
- const simulateHandleOpCallData = (0, viem_1.encodeFunctionData)({
82
- abi: types_1.EntryPointV07SimulationsAbi,
83
- functionName: "simulateHandleOpLast",
84
- args: [packedUserOperations.map((uop) => uop.packedUserOperation)]
85
- });
86
- return simulateHandleOpCallData;
87
- }
88
- async encodeBinarySearchGasLimit({ entryPoint, userOperation, queuedUserOperations, target, targetCallData, gasAllowance = this.config.binarySearchGasAllowance, initialMinGas = 0n, functionName }) {
89
- const queuedOps = await Promise.all(queuedUserOperations.map(async (op) => ({
90
- op: (0, utils_1.toPackedUserOperation)(op),
91
- target: op.sender,
92
- targetCallData: await this.encodeUserOperationCalldata({
93
- op,
94
- entryPoint
95
- })
96
- })));
97
- const targetOp = {
98
- op: (0, utils_1.toPackedUserOperation)(userOperation),
99
- target,
100
- targetCallData
101
- };
102
- const binarySearchVerificationGasLimit = (0, viem_1.encodeFunctionData)({
103
- abi: types_1.EntryPointV07SimulationsAbi,
104
- functionName,
105
- args: [
106
- queuedOps,
107
- targetOp,
108
- entryPoint,
109
- initialMinGas,
110
- this.config.binarySearchToleranceDelta,
111
- gasAllowance
112
- ]
113
- });
114
- return binarySearchVerificationGasLimit;
115
- }
116
- // Try to get the calldata gas again if the initial simulation reverted due to hitting the eth_call gasLimit.
117
- async retryBinarySearch({ entryPoint, optimalGas, minGas, targetOp, target, targetCallData, functionName, queuedOps, stateOverrides = {} }) {
118
- const maxRetries = 3;
119
- let retryCount = 0;
120
- let currentOptimalGas = optimalGas;
121
- let currentMinGas = minGas;
122
- while (retryCount < maxRetries) {
123
- // OptimalGas represents the current lowest gasLimit, so we set the gasAllowance to search range minGas <-> optimalGas
124
- const gasAllowance = currentOptimalGas - currentMinGas;
125
- const binarySearchCallGasLimit = await this.encodeBinarySearchGasLimit({
126
- entryPoint,
127
- userOperation: targetOp,
128
- target,
129
- targetCallData,
130
- queuedUserOperations: queuedOps,
131
- initialMinGas: currentMinGas,
132
- gasAllowance,
133
- functionName
134
- });
135
- stateOverrides = (0, utils_1.getAuthorizationStateOverrides)({
136
- userOperations: [...queuedOps, targetOp],
137
- stateOverrides
138
- });
139
- const isV8 = (0, utils_1.isVersion08)(targetOp, entryPoint);
140
- const entryPointSimulationsAddress = isV8
141
- ? this.config.entrypointSimulationContractV8
142
- : this.config.entrypointSimulationContractV7;
143
- if (!entryPointSimulationsAddress) {
144
- throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
145
- }
146
- let cause = await this.callPimlicoEntryPointSimulations({
147
- entryPoint,
148
- entryPointSimulationsCallData: [binarySearchCallGasLimit],
149
- stateOverrides,
150
- entryPointSimulationsAddress
151
- });
152
- cause = cause.map((data) => {
153
- const decodedDelegateAndError = (0, viem_1.decodeErrorResult)({
154
- abi: types_1.EntryPointV07Abi,
155
- data: data
156
- });
157
- if (!decodedDelegateAndError?.args?.[1]) {
158
- throw new Error("Unexpected error");
159
- }
160
- return decodedDelegateAndError.args[1];
161
- });
162
- const callGasLimitResult = validateBinarySearchDataResult(cause[0], functionName);
163
- if (callGasLimitResult.result === "failed") {
164
- return callGasLimitResult;
165
- }
166
- if (callGasLimitResult.result === "retry") {
167
- currentOptimalGas = callGasLimitResult.optimalGas;
168
- currentMinGas = callGasLimitResult.minGas;
169
- retryCount++;
170
- continue;
171
- }
172
- // If we reach here, it means we have a successful result
173
- return {
174
- result: "success",
175
- data: callGasLimitResult.data
176
- };
177
- }
178
- // If we've exhausted all retries, return a failure result
179
- return {
180
- result: "failed",
181
- data: "Max retries reached for getting call data gas",
182
- code: types_1.ValidationErrors.SimulateValidation
183
- };
184
- }
185
- async validateHandleOpV07({ entryPoint, userOperation, queuedUserOperations, stateOverrides = {} }) {
186
- const simulateHandleOpLast = await this.encodeSimulateHandleOpLast({
187
- entryPoint,
188
- userOperation,
189
- queuedUserOperations
190
- });
191
- stateOverrides = (0, utils_1.getAuthorizationStateOverrides)({
192
- userOperations: [...queuedUserOperations, userOperation],
193
- stateOverrides
194
- });
195
- const isV8 = (0, utils_1.isVersion08)(userOperation, entryPoint);
196
- const entryPointSimulationsAddress = isV8
197
- ? this.config.entrypointSimulationContractV8
198
- : this.config.entrypointSimulationContractV7;
199
- if (!entryPointSimulationsAddress) {
200
- throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
201
- }
202
- let cause = [
203
- (await this.callPimlicoEntryPointSimulations({
204
- entryPoint,
205
- entryPointSimulationsCallData: [simulateHandleOpLast],
206
- stateOverrides,
207
- entryPointSimulationsAddress
208
- }))[0]
209
- ];
210
- cause = cause.map((data) => {
211
- const decodedDelegateAndError = (0, viem_1.decodeErrorResult)({
212
- abi: types_1.EntryPointV07Abi,
213
- data: data
214
- });
215
- const delegateAndRevertResponseBytes = decodedDelegateAndError?.args?.[1];
216
- if (!delegateAndRevertResponseBytes) {
217
- throw new Error("Unexpected error");
218
- }
219
- return delegateAndRevertResponseBytes;
220
- });
221
- const [simulateHandleOpLastCause] = cause;
222
- try {
223
- const simulateHandleOpLastResult = getSimulateHandleOpResult(simulateHandleOpLastCause);
224
- if (simulateHandleOpLastResult.result === "failed") {
225
- return simulateHandleOpLastResult;
226
- }
227
- return {
228
- result: "execution",
229
- data: {
230
- callGasLimit: 0n,
231
- verificationGasLimit: 0n,
232
- paymasterVerificationGasLimit: 0n,
233
- executionResult: simulateHandleOpLastResult.data.executionResult
234
- }
235
- };
236
- }
237
- catch (_e) {
238
- return {
239
- result: "failed",
240
- data: "Unknown error, could not parse simulate handle op result.",
241
- code: types_1.ValidationErrors.SimulateValidation
242
- };
243
- }
244
- }
245
- async simulateHandleOpV07({ entryPoint, userOperation, queuedUserOperations, stateOverrides = {} }) {
246
- const simulateHandleOpLast = await this.encodeSimulateHandleOpLast({
247
- entryPoint,
248
- userOperation,
249
- queuedUserOperations
250
- });
251
- const binarySearchVerificationGasLimit = await this.encodeBinarySearchGasLimit({
252
- initialMinGas: 9000n,
253
- entryPoint,
254
- userOperation,
255
- queuedUserOperations,
256
- target: viem_1.zeroAddress,
257
- targetCallData: "0x",
258
- functionName: "binarySearchVerificationGasLimit"
259
- });
260
- const binarySearchPaymasterVerificationGasLimit = userOperation.paymaster
261
- ? await this.encodeBinarySearchGasLimit({
262
- initialMinGas: 9000n,
263
- entryPoint,
264
- userOperation,
265
- queuedUserOperations,
266
- target: viem_1.zeroAddress,
267
- targetCallData: "0x",
268
- functionName: "binarySearchPaymasterVerificationGasLimit"
269
- })
270
- : null;
271
- const binarySearchCallGasLimit = await this.encodeBinarySearchGasLimit({
272
- initialMinGas: 9000n,
273
- entryPoint,
274
- userOperation,
275
- queuedUserOperations,
276
- target: userOperation.sender,
277
- targetCallData: await this.encodeUserOperationCalldata({
278
- op: userOperation,
279
- entryPoint
280
- }),
281
- functionName: "binarySearchCallGasLimit"
282
- });
283
- stateOverrides = (0, utils_1.getAuthorizationStateOverrides)({
284
- userOperations: [...queuedUserOperations, userOperation],
285
- stateOverrides
286
- });
287
- let cause;
288
- const isV8 = (0, utils_1.isVersion08)(userOperation, entryPoint);
289
- const entryPointSimulationsAddress = isV8
290
- ? this.config.entrypointSimulationContractV8
291
- : this.config.entrypointSimulationContractV7;
292
- if (!entryPointSimulationsAddress) {
293
- throw new Error(`Cannot find entryPointSimulationsAddress for version ${isV8 ? "08" : "07"}`);
294
- }
295
- if (this.config.splitSimulationCalls) {
296
- // due to Hedera specific restrictions, we can't combine these two calls.
297
- const [simulateHandleOpLastCause, binarySearchVerificationGasLimitCause, binarySearchPaymasterVerificationGasLimitCause, binarySearchCallGasLimitCause] = await Promise.all([
298
- this.callPimlicoEntryPointSimulations({
299
- entryPoint,
300
- entryPointSimulationsCallData: [simulateHandleOpLast],
301
- stateOverrides,
302
- entryPointSimulationsAddress
303
- }),
304
- this.callPimlicoEntryPointSimulations({
305
- entryPoint,
306
- entryPointSimulationsCallData: [
307
- binarySearchVerificationGasLimit
308
- ],
309
- stateOverrides,
310
- entryPointSimulationsAddress
311
- }),
312
- binarySearchPaymasterVerificationGasLimit
313
- ? this.callPimlicoEntryPointSimulations({
314
- entryPoint,
315
- entryPointSimulationsCallData: [
316
- binarySearchPaymasterVerificationGasLimit
317
- ],
318
- stateOverrides,
319
- entryPointSimulationsAddress
320
- })
321
- : null,
322
- this.callPimlicoEntryPointSimulations({
323
- entryPoint,
324
- entryPointSimulationsCallData: [binarySearchCallGasLimit],
325
- stateOverrides,
326
- entryPointSimulationsAddress
327
- })
328
- ]);
329
- cause = [
330
- simulateHandleOpLastCause[0],
331
- binarySearchVerificationGasLimitCause[0],
332
- binarySearchPaymasterVerificationGasLimitCause?.[0] ?? null,
333
- binarySearchCallGasLimitCause[0]
334
- ];
335
- }
336
- else {
337
- const [handleOpAndBinarySearchVerificationGasLimits, binarySearchCallDataGasLimits] = await Promise.all([
338
- binarySearchPaymasterVerificationGasLimit
339
- ? await this.callPimlicoEntryPointSimulations({
340
- entryPoint,
341
- entryPointSimulationsCallData: [
342
- simulateHandleOpLast,
343
- binarySearchVerificationGasLimit,
344
- binarySearchPaymasterVerificationGasLimit
345
- ],
346
- stateOverrides,
347
- entryPointSimulationsAddress
348
- })
349
- : await this.callPimlicoEntryPointSimulations({
350
- entryPoint,
351
- entryPointSimulationsCallData: [
352
- simulateHandleOpLast,
353
- binarySearchVerificationGasLimit
354
- ],
355
- stateOverrides,
356
- entryPointSimulationsAddress
357
- }),
358
- await this.callPimlicoEntryPointSimulations({
359
- entryPoint,
360
- entryPointSimulationsCallData: [binarySearchCallGasLimit],
361
- stateOverrides,
362
- entryPointSimulationsAddress
363
- })
364
- ]);
365
- cause = [
366
- handleOpAndBinarySearchVerificationGasLimits[0],
367
- handleOpAndBinarySearchVerificationGasLimits[1],
368
- binarySearchPaymasterVerificationGasLimit
369
- ? handleOpAndBinarySearchVerificationGasLimits[2]
370
- : null,
371
- binarySearchCallDataGasLimits[0]
372
- ];
373
- }
374
- cause = cause.map((data) => {
375
- if (!data) {
376
- return null;
377
- }
378
- const decodedDelegateAndError = (0, viem_1.decodeErrorResult)({
379
- abi: types_1.EntryPointV07Abi,
380
- data: data
381
- });
382
- const delegateAndRevertResponseBytes = decodedDelegateAndError?.args?.[1];
383
- if (!delegateAndRevertResponseBytes) {
384
- throw new Error("Unexpected error");
385
- }
386
- return delegateAndRevertResponseBytes;
387
- });
388
- const [simulateHandleOpLastCause, binarySearchVerificationGasLimitCause, binarySearchPaymasterVerificationGasLimitCause, binarySearchCallGasLimitCause] = cause;
389
- try {
390
- const simulateHandleOpLastResult = getSimulateHandleOpResult(simulateHandleOpLastCause);
391
- if (simulateHandleOpLastResult.result === "failed") {
392
- return simulateHandleOpLastResult;
393
- }
394
- const verificationGasLimitResult = validateBinarySearchDataResult(binarySearchVerificationGasLimitCause, "binarySearchVerificationGasLimit");
395
- let verificationGasLimit = 0n;
396
- if (verificationGasLimitResult.result === "success") {
397
- verificationGasLimit = verificationGasLimitResult.data.gasUsed;
398
- }
399
- if (verificationGasLimitResult.result === "failed") {
400
- return verificationGasLimitResult;
401
- }
402
- if (verificationGasLimitResult.result === "retry") {
403
- const { optimalGas, minGas } = verificationGasLimitResult;
404
- const binarySearchResult = await this.retryBinarySearch({
405
- entryPoint,
406
- optimalGas,
407
- minGas,
408
- targetOp: userOperation,
409
- target: viem_1.zeroAddress,
410
- targetCallData: "0x",
411
- functionName: "binarySearchVerificationGasLimit",
412
- queuedOps: queuedUserOperations,
413
- stateOverrides
414
- });
415
- if (binarySearchResult.result === "failed") {
416
- return binarySearchResult;
417
- }
418
- verificationGasLimit = binarySearchResult.data.gasUsed;
419
- }
420
- const paymasterVerificationGasLimitResult = binarySearchPaymasterVerificationGasLimitCause
421
- ? validateBinarySearchDataResult(binarySearchPaymasterVerificationGasLimitCause, "binarySearchPaymasterVerificationGasLimit")
422
- : {
423
- result: "success",
424
- data: {
425
- gasUsed: 0n,
426
- success: true,
427
- returnData: "0x"
428
- }
429
- };
430
- let paymasterVerificationGasLimit = 0n;
431
- if (paymasterVerificationGasLimitResult.result === "success") {
432
- paymasterVerificationGasLimit =
433
- paymasterVerificationGasLimitResult.data.gasUsed;
434
- }
435
- if (paymasterVerificationGasLimitResult.result === "failed") {
436
- return paymasterVerificationGasLimitResult;
437
- }
438
- if (paymasterVerificationGasLimitResult.result === "retry") {
439
- const { optimalGas, minGas } = paymasterVerificationGasLimitResult;
440
- const binarySearchResult = await this.retryBinarySearch({
441
- entryPoint,
442
- optimalGas,
443
- minGas,
444
- targetOp: userOperation,
445
- target: viem_1.zeroAddress,
446
- targetCallData: "0x",
447
- functionName: "binarySearchPaymasterVerificationGasLimit",
448
- queuedOps: queuedUserOperations,
449
- stateOverrides
450
- });
451
- if (binarySearchResult.result === "failed") {
452
- return binarySearchResult;
453
- }
454
- paymasterVerificationGasLimit = binarySearchResult.data.gasUsed;
455
- }
456
- const callGasLimitResult = validateBinarySearchDataResult(binarySearchCallGasLimitCause, "binarySearchCallGasLimit");
457
- let callGasLimit = 0n;
458
- if (callGasLimitResult.result === "success") {
459
- callGasLimit = callGasLimitResult.data.gasUsed;
460
- }
461
- if (callGasLimitResult.result === "failed") {
462
- return callGasLimitResult;
463
- }
464
- if (callGasLimitResult.result === "retry") {
465
- const { optimalGas, minGas } = callGasLimitResult;
466
- const binarySearchResult = await this.retryBinarySearch({
467
- entryPoint,
468
- optimalGas,
469
- minGas,
470
- targetOp: userOperation,
471
- target: userOperation.sender,
472
- targetCallData: await this.encodeUserOperationCalldata({
473
- op: userOperation,
474
- entryPoint
475
- }),
476
- functionName: "binarySearchCallGasLimit",
477
- queuedOps: queuedUserOperations,
478
- stateOverrides
479
- });
480
- if (binarySearchResult.result === "failed") {
481
- return binarySearchResult;
482
- }
483
- callGasLimit = binarySearchResult.data.gasUsed;
484
- }
485
- return {
486
- result: "execution",
487
- data: {
488
- callGasLimit,
489
- verificationGasLimit,
490
- paymasterVerificationGasLimit,
491
- executionResult: simulateHandleOpLastResult.data.executionResult
492
- }
493
- };
494
- }
495
- catch (_e) {
496
- return {
497
- result: "failed",
498
- data: "Unknown error, could not parse simulate handle op result.",
499
- code: types_1.ValidationErrors.SimulateValidation
500
- };
501
- }
502
- }
503
- async callPimlicoEntryPointSimulations({ entryPoint, entryPointSimulationsCallData, stateOverrides, entryPointSimulationsAddress }) {
504
- const publicClient = this.config.publicClient;
505
- const blockTagSupport = this.config.blockTagSupport;
506
- const utilityWalletAddress = this.config.utilityPrivateKey?.address ??
507
- "0x4337000c2828F5260d8921fD25829F606b9E8680";
508
- const fixedGasLimitForEstimation = this.config.fixedGasLimitForEstimation;
509
- if (!entryPointSimulationsAddress) {
510
- throw new types_1.RpcError("entryPointSimulationsAddress must be provided for V07 UserOperation", types_1.ValidationErrors.InvalidFields);
511
- }
512
- const callData = (0, viem_1.encodeFunctionData)({
513
- abi: types_1.PimlicoEntryPointSimulationsAbi,
514
- functionName: "simulateEntryPoint",
515
- args: [entryPoint, entryPointSimulationsCallData]
516
- });
517
- // Remove state override if not supported by network.
518
- if (!this.config.balanceOverride && !this.config.codeOverrideSupport) {
519
- stateOverrides = undefined;
520
- }
521
- const result = (await publicClient.request({
522
- method: "eth_call",
523
- params: [
524
- {
525
- to: entryPointSimulationsAddress,
526
- from: utilityWalletAddress,
527
- data: callData,
528
- ...(fixedGasLimitForEstimation !== undefined && {
529
- gas: `0x${fixedGasLimitForEstimation.toString(16)}`
530
- })
531
- },
532
- blockTagSupport
533
- ? "latest"
534
- : (0, viem_1.toHex)(await publicClient.getBlockNumber()),
535
- // @ts-ignore
536
- ...(stateOverrides ? [stateOverrides] : [])
537
- ]
538
- }));
539
- try {
540
- const returnBytes = (0, viem_1.decodeAbiParameters)([{ name: "ret", type: "bytes[]" }], result);
541
- return returnBytes[0];
542
- }
543
- catch (err) {
544
- this.logger.error({ err, result }, "Failed to decode simulation result");
545
- throw new types_1.RpcError("Failed to decode simulation result", types_1.ValidationErrors.SimulateValidation);
546
- }
547
- }
548
- }
549
- exports.GasEstimatorV07 = GasEstimatorV07;
550
- const panicCodes = {
551
- // from https://docs.soliditylang.org/en/v0.8.0/control-structures.html
552
- 1: "assert(false)",
553
- 17: "arithmetic overflow/underflow",
554
- 18: "divide by zero",
555
- 33: "invalid enum value",
556
- 34: "storage byte array that is incorrectly encoded",
557
- 49: ".pop() on an empty array.",
558
- 50: "array sout-of-bounds or negative index",
559
- 65: "memory overflow",
560
- 81: "zero-initialized variable of internal function type"
561
- };
562
- function parseFailedOpWithRevert(data) {
563
- const methodSig = data.slice(0, 10);
564
- const dataParams = `0x${data.slice(10)}`;
565
- if (methodSig === "0x08c379a0") {
566
- const [err] = (0, viem_1.decodeAbiParameters)([
567
- {
568
- name: "err",
569
- type: "string"
570
- }
571
- ], dataParams);
572
- return err;
573
- }
574
- if (methodSig === "0x4e487b71") {
575
- const [code] = (0, viem_1.decodeAbiParameters)([
576
- {
577
- name: "err",
578
- type: "uint256"
579
- }
580
- ], dataParams);
581
- return panicCodes[Number(code)] ?? `${code}`;
582
- }
583
- return data;
584
- }
585
- exports.parseFailedOpWithRevert = parseFailedOpWithRevert;
586
- function getSimulateValidationResult(errorData) {
587
- const decodedDelegateAndError = (0, viem_1.decodeErrorResult)({
588
- abi: types_1.EntryPointV07Abi,
589
- data: errorData
590
- });
591
- if (!decodedDelegateAndError?.args?.[1]) {
592
- throw new Error("Unexpected error");
593
- }
594
- try {
595
- const decodedError = (0, viem_1.decodeErrorResult)({
596
- abi: types_1.EntryPointV07SimulationsAbi,
597
- data: decodedDelegateAndError.args[1]
598
- });
599
- if (decodedError &&
600
- decodedError.errorName === "FailedOp" &&
601
- decodedError.args) {
602
- return {
603
- status: "failed",
604
- data: decodedError.args[1]
605
- };
606
- }
607
- if (decodedError &&
608
- decodedError.errorName === "FailedOpWithRevert" &&
609
- decodedError.args) {
610
- return {
611
- status: "failed",
612
- data: `${decodedError.args?.[1]} - ${parseFailedOpWithRevert(decodedError.args?.[2])}`
613
- };
614
- }
615
- }
616
- catch {
617
- const decodedResult = (0, viem_1.decodeAbiParameters)(types_2.simulationValidationResultStruct, decodedDelegateAndError.args[1])[0];
618
- return {
619
- status: "validation",
620
- data: decodedResult
621
- };
622
- }
623
- throw new Error("Unexpected error - errorName is not ValidationResult or ValidationResultWithAggregation");
624
- }
625
- exports.getSimulateValidationResult = getSimulateValidationResult;
626
- function validateBinarySearchDataResult(data, fnName) {
627
- try {
628
- const targetCallResult = (0, viem_1.decodeFunctionResult)({
629
- abi: types_1.EntryPointV07SimulationsAbi,
630
- functionName: fnName,
631
- data: data
632
- });
633
- const parsedTargetCallResult = types_1.binarySearchCallResultSchema.parse(targetCallResult);
634
- if (parsedTargetCallResult.success) {
635
- return {
636
- result: "success",
637
- data: parsedTargetCallResult
638
- };
639
- }
640
- return {
641
- result: "failed",
642
- data: parsedTargetCallResult.returnData,
643
- code: types_1.ExecutionErrors.UserOperationReverted
644
- };
645
- }
646
- catch (_e) {
647
- try {
648
- const res = (0, viem_1.decodeErrorResult)({
649
- abi: types_1.EntryPointV07SimulationsAbi,
650
- data: data
651
- });
652
- if (res.errorName === "SimulationOutOfGas") {
653
- const [optimalGas, minGas, maxGas] = res.args;
654
- return {
655
- result: "retry",
656
- optimalGas,
657
- minGas,
658
- maxGas
659
- };
660
- }
661
- return {
662
- result: "failed",
663
- data,
664
- code: types_1.ExecutionErrors.UserOperationReverted
665
- };
666
- }
667
- catch {
668
- // no error we go the result
669
- return {
670
- result: "failed",
671
- data: "Unknown error, could not parse target call data result.",
672
- code: types_1.ExecutionErrors.UserOperationReverted
673
- };
674
- }
675
- }
676
- }
677
- function getSimulateHandleOpResult(data) {
678
- try {
679
- const decodedError = (0, viem_1.decodeErrorResult)({
680
- abi: types_1.EntryPointV07SimulationsAbi,
681
- data: data
682
- });
683
- if (decodedError &&
684
- decodedError.errorName === "FailedOp" &&
685
- decodedError.args) {
686
- return {
687
- result: "failed",
688
- data: decodedError.args[1],
689
- code: types_1.ValidationErrors.SimulateValidation
690
- };
691
- }
692
- if (decodedError &&
693
- decodedError.errorName === "FailedOpWithRevert" &&
694
- decodedError.args) {
695
- return {
696
- result: "failed",
697
- data: `${decodedError.args[1]} ${parseFailedOpWithRevert(decodedError.args?.[2])}`,
698
- code: types_1.ValidationErrors.SimulateValidation
699
- };
700
- }
701
- if (decodedError &&
702
- decodedError.errorName === "CallPhaseReverted" &&
703
- decodedError.args) {
704
- return {
705
- result: "failed",
706
- data: decodedError.args[0],
707
- code: types_1.ValidationErrors.SimulateValidation
708
- };
709
- }
710
- }
711
- catch {
712
- // no error we go the result
713
- const decodedResult = (0, viem_1.decodeFunctionResult)({
714
- abi: types_1.EntryPointV07SimulationsAbi,
715
- functionName: "simulateHandleOp",
716
- data
717
- });
718
- return {
719
- result: "execution",
720
- data: {
721
- executionResult: decodedResult
722
- }
723
- };
724
- }
725
- throw new Error("Unexpected error");
726
- }
727
- //# sourceMappingURL=gasEstimationsV07.js.map