@pimlico/alto 0.0.4 → 0.0.5

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 (227) hide show
  1. package/esm/cli/alto.js +0 -4
  2. package/esm/cli/alto.js.map +1 -1
  3. package/esm/cli/config/bundler.d.ts +2296 -22
  4. package/esm/cli/config/bundler.js +31 -4
  5. package/esm/cli/config/bundler.js.map +1 -1
  6. package/esm/cli/config/options.js +53 -4
  7. package/esm/cli/config/options.js.map +1 -1
  8. package/esm/cli/customTransport.js +5 -1
  9. package/esm/cli/customTransport.js.map +1 -1
  10. package/esm/cli/handler.js +14 -3
  11. package/esm/cli/handler.js.map +1 -1
  12. package/esm/cli/instrumentation.js +2 -2
  13. package/esm/cli/instrumentation.js.map +1 -1
  14. package/esm/cli/setupServer.d.ts +2 -1
  15. package/esm/cli/setupServer.js +51 -27
  16. package/esm/cli/setupServer.js.map +1 -1
  17. package/esm/executor/executor.d.ts +7 -14
  18. package/esm/executor/executor.js +139 -128
  19. package/esm/executor/executor.js.map +1 -1
  20. package/esm/executor/executorManager.d.ts +58 -4
  21. package/esm/executor/executorManager.js +206 -52
  22. package/esm/executor/executorManager.js.map +1 -1
  23. package/esm/executor/senderManager.d.ts +2 -1
  24. package/esm/executor/senderManager.js +3 -0
  25. package/esm/executor/senderManager.js.map +1 -1
  26. package/esm/executor/utilityWalletMonitor.d.ts +15 -0
  27. package/esm/executor/utilityWalletMonitor.js +38 -0
  28. package/esm/executor/utilityWalletMonitor.js.map +1 -0
  29. package/esm/executor/utils.d.ts +1 -2
  30. package/esm/executor/utils.js +49 -38
  31. package/esm/executor/utils.js.map +1 -1
  32. package/esm/handlers/compressionHandler.js.map +1 -0
  33. package/esm/handlers/eventManager.d.ts +21 -0
  34. package/esm/handlers/eventManager.js +166 -0
  35. package/esm/handlers/eventManager.js.map +1 -0
  36. package/{lib/utils → esm/handlers}/gasPriceManager.d.ts +19 -5
  37. package/esm/{utils → handlers}/gasPriceManager.js +58 -13
  38. package/esm/handlers/gasPriceManager.js.map +1 -0
  39. package/esm/handlers/index.d.ts +4 -0
  40. package/esm/handlers/index.js +4 -0
  41. package/esm/handlers/index.js.map +1 -0
  42. package/esm/mempool/index.d.ts +0 -1
  43. package/esm/mempool/index.js +0 -1
  44. package/esm/mempool/index.js.map +1 -1
  45. package/esm/mempool/mempool.d.ts +4 -2
  46. package/esm/mempool/mempool.js +65 -19
  47. package/esm/mempool/mempool.js.map +1 -1
  48. package/esm/rpc/EntryPointSimulationsV07.d.ts +2 -2
  49. package/esm/rpc/EntryPointSimulationsV07.js +10 -7
  50. package/esm/rpc/EntryPointSimulationsV07.js.map +1 -1
  51. package/esm/rpc/gasEstimation.d.ts +3 -3
  52. package/esm/rpc/gasEstimation.js +22 -17
  53. package/esm/rpc/gasEstimation.js.map +1 -1
  54. package/esm/rpc/nonceQueuer.d.ts +4 -1
  55. package/esm/rpc/nonceQueuer.js +9 -3
  56. package/esm/rpc/nonceQueuer.js.map +1 -1
  57. package/esm/rpc/rpcHandler.d.ts +53 -3
  58. package/esm/rpc/rpcHandler.js +132 -231
  59. package/esm/rpc/rpcHandler.js.map +1 -1
  60. package/esm/rpc/server.d.ts +2 -1
  61. package/esm/rpc/server.js +6 -1
  62. package/esm/rpc/server.js.map +1 -1
  63. package/esm/rpc/validation/SafeValidator.d.ts +3 -2
  64. package/esm/rpc/validation/SafeValidator.js +2 -2
  65. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  66. package/esm/rpc/validation/UnsafeValidator.d.ts +5 -2
  67. package/esm/rpc/validation/UnsafeValidator.js +10 -6
  68. package/esm/rpc/validation/UnsafeValidator.js.map +1 -1
  69. package/esm/rpc/validation/tracer.js +1 -0
  70. package/esm/rpc/validation/tracer.js.map +1 -1
  71. package/esm/types/schemas.d.ts +1029 -333
  72. package/esm/types/schemas.js +94 -20
  73. package/esm/types/schemas.js.map +1 -1
  74. package/esm/types/utils.d.ts +1 -1
  75. package/esm/types/validation.js +7 -2
  76. package/esm/types/validation.js.map +1 -1
  77. package/esm/utils/bigInt.d.ts +1 -0
  78. package/esm/utils/bigInt.js +4 -0
  79. package/esm/utils/bigInt.js.map +1 -1
  80. package/esm/utils/helpers.d.ts +1 -0
  81. package/esm/utils/helpers.js +6 -0
  82. package/esm/utils/helpers.js.map +1 -1
  83. package/esm/utils/index.d.ts +0 -3
  84. package/esm/utils/index.js +0 -3
  85. package/esm/utils/index.js.map +1 -1
  86. package/esm/utils/metrics.d.ts +4 -0
  87. package/esm/utils/metrics.js +29 -1
  88. package/esm/utils/metrics.js.map +1 -1
  89. package/esm/utils/rpc-reply.d.ts +1 -1
  90. package/esm/utils/rpc-reply.js +2 -1
  91. package/esm/utils/rpc-reply.js.map +1 -1
  92. package/esm/utils/userop.d.ts +66 -6
  93. package/esm/utils/userop.js +183 -96
  94. package/esm/utils/userop.js.map +1 -1
  95. package/esm/utils/validation.d.ts +1 -1
  96. package/esm/utils/validation.js +9 -13
  97. package/esm/utils/validation.js.map +1 -1
  98. package/lib/cli/alto.js +0 -4
  99. package/lib/cli/alto.js.map +1 -1
  100. package/lib/cli/config/bundler.d.ts +2296 -22
  101. package/lib/cli/config/bundler.js +30 -3
  102. package/lib/cli/config/bundler.js.map +1 -1
  103. package/lib/cli/config/options.js +53 -4
  104. package/lib/cli/config/options.js.map +1 -1
  105. package/lib/cli/customTransport.js +5 -1
  106. package/lib/cli/customTransport.js.map +1 -1
  107. package/lib/cli/handler.js +13 -2
  108. package/lib/cli/handler.js.map +1 -1
  109. package/lib/cli/instrumentation.js +2 -2
  110. package/lib/cli/instrumentation.js.map +1 -1
  111. package/lib/cli/setupServer.d.ts +2 -1
  112. package/lib/cli/setupServer.js +52 -28
  113. package/lib/cli/setupServer.js.map +1 -1
  114. package/lib/executor/executor.d.ts +7 -14
  115. package/lib/executor/executor.js +138 -128
  116. package/lib/executor/executor.js.map +1 -1
  117. package/lib/executor/executorManager.d.ts +58 -4
  118. package/lib/executor/executorManager.js +204 -50
  119. package/lib/executor/executorManager.js.map +1 -1
  120. package/lib/executor/senderManager.d.ts +2 -1
  121. package/lib/executor/senderManager.js +3 -0
  122. package/lib/executor/senderManager.js.map +1 -1
  123. package/lib/executor/utilityWalletMonitor.d.ts +15 -0
  124. package/lib/executor/utilityWalletMonitor.js +42 -0
  125. package/lib/executor/utilityWalletMonitor.js.map +1 -0
  126. package/lib/executor/utils.d.ts +1 -2
  127. package/lib/executor/utils.js +48 -37
  128. package/lib/executor/utils.js.map +1 -1
  129. package/lib/handlers/compressionHandler.js.map +1 -0
  130. package/lib/handlers/eventManager.d.ts +21 -0
  131. package/lib/handlers/eventManager.js +196 -0
  132. package/lib/handlers/eventManager.js.map +1 -0
  133. package/{esm/utils → lib/handlers}/gasPriceManager.d.ts +19 -5
  134. package/lib/{utils → handlers}/gasPriceManager.js +58 -13
  135. package/lib/handlers/gasPriceManager.js.map +1 -0
  136. package/lib/handlers/index.d.ts +4 -0
  137. package/lib/handlers/index.js +20 -0
  138. package/lib/handlers/index.js.map +1 -0
  139. package/lib/mempool/index.d.ts +0 -1
  140. package/lib/mempool/index.js +0 -1
  141. package/lib/mempool/index.js.map +1 -1
  142. package/lib/mempool/mempool.d.ts +4 -2
  143. package/lib/mempool/mempool.js +65 -19
  144. package/lib/mempool/mempool.js.map +1 -1
  145. package/lib/rpc/EntryPointSimulationsV07.d.ts +2 -2
  146. package/lib/rpc/EntryPointSimulationsV07.js +10 -7
  147. package/lib/rpc/EntryPointSimulationsV07.js.map +1 -1
  148. package/lib/rpc/gasEstimation.d.ts +3 -3
  149. package/lib/rpc/gasEstimation.js +22 -17
  150. package/lib/rpc/gasEstimation.js.map +1 -1
  151. package/lib/rpc/nonceQueuer.d.ts +4 -1
  152. package/lib/rpc/nonceQueuer.js +9 -3
  153. package/lib/rpc/nonceQueuer.js.map +1 -1
  154. package/lib/rpc/rpcHandler.d.ts +53 -3
  155. package/lib/rpc/rpcHandler.js +129 -251
  156. package/lib/rpc/rpcHandler.js.map +1 -1
  157. package/lib/rpc/server.d.ts +2 -1
  158. package/lib/rpc/server.js +6 -1
  159. package/lib/rpc/server.js.map +1 -1
  160. package/lib/rpc/validation/SafeValidator.d.ts +3 -2
  161. package/lib/rpc/validation/SafeValidator.js +2 -2
  162. package/lib/rpc/validation/SafeValidator.js.map +1 -1
  163. package/lib/rpc/validation/UnsafeValidator.d.ts +5 -2
  164. package/lib/rpc/validation/UnsafeValidator.js +33 -6
  165. package/lib/rpc/validation/UnsafeValidator.js.map +1 -1
  166. package/lib/rpc/validation/tracer.js +1 -0
  167. package/lib/rpc/validation/tracer.js.map +1 -1
  168. package/lib/types/schemas.d.ts +1029 -333
  169. package/lib/types/schemas.js +93 -19
  170. package/lib/types/schemas.js.map +1 -1
  171. package/lib/types/utils.d.ts +1 -1
  172. package/lib/types/validation.js +7 -2
  173. package/lib/types/validation.js.map +1 -1
  174. package/lib/utils/bigInt.d.ts +1 -0
  175. package/lib/utils/bigInt.js +6 -1
  176. package/lib/utils/bigInt.js.map +1 -1
  177. package/lib/utils/helpers.d.ts +1 -0
  178. package/lib/utils/helpers.js +8 -1
  179. package/lib/utils/helpers.js.map +1 -1
  180. package/lib/utils/index.d.ts +0 -3
  181. package/lib/utils/index.js +0 -3
  182. package/lib/utils/index.js.map +1 -1
  183. package/lib/utils/metrics.d.ts +4 -0
  184. package/lib/utils/metrics.js +29 -1
  185. package/lib/utils/metrics.js.map +1 -1
  186. package/lib/utils/rpc-reply.d.ts +1 -1
  187. package/lib/utils/rpc-reply.js +2 -1
  188. package/lib/utils/rpc-reply.js.map +1 -1
  189. package/lib/utils/userop.d.ts +66 -6
  190. package/lib/utils/userop.js +208 -96
  191. package/lib/utils/userop.js.map +1 -1
  192. package/lib/utils/validation.d.ts +1 -1
  193. package/lib/utils/validation.js +9 -36
  194. package/lib/utils/validation.js.map +1 -1
  195. package/package.json +15 -14
  196. package/esm/executor/test/utils.d.ts +0 -13
  197. package/esm/executor/test/utils.js +0 -75
  198. package/esm/executor/test/utils.js.map +0 -1
  199. package/esm/mempool/nullMempool.d.ts +0 -15
  200. package/esm/mempool/nullMempool.js +0 -36
  201. package/esm/mempool/nullMempool.js.map +0 -1
  202. package/esm/types/test/validationTestErrors.d.ts +0 -3
  203. package/esm/types/test/validationTestErrors.js +0 -229
  204. package/esm/types/test/validationTestErrors.js.map +0 -1
  205. package/esm/utils/compressionHandler.js.map +0 -1
  206. package/esm/utils/gasPriceManager.js.map +0 -1
  207. package/esm/utils/test.d.ts +0 -17
  208. package/esm/utils/test.js +0 -130
  209. package/esm/utils/test.js.map +0 -1
  210. package/lib/executor/test/utils.d.ts +0 -13
  211. package/lib/executor/test/utils.js +0 -81
  212. package/lib/executor/test/utils.js.map +0 -1
  213. package/lib/mempool/nullMempool.d.ts +0 -15
  214. package/lib/mempool/nullMempool.js +0 -40
  215. package/lib/mempool/nullMempool.js.map +0 -1
  216. package/lib/types/test/validationTestErrors.d.ts +0 -3
  217. package/lib/types/test/validationTestErrors.js +0 -232
  218. package/lib/types/test/validationTestErrors.js.map +0 -1
  219. package/lib/utils/compressionHandler.js.map +0 -1
  220. package/lib/utils/gasPriceManager.js.map +0 -1
  221. package/lib/utils/test.d.ts +0 -17
  222. package/lib/utils/test.js +0 -161
  223. package/lib/utils/test.js.map +0 -1
  224. /package/esm/{utils → handlers}/compressionHandler.d.ts +0 -0
  225. /package/esm/{utils → handlers}/compressionHandler.js +0 -0
  226. /package/lib/{utils → handlers}/compressionHandler.d.ts +0 -0
  227. /package/lib/{utils → handlers}/compressionHandler.js +0 -0
@@ -1,17 +1,18 @@
1
- import { EntryPointV06Abi, EntryPointV07Abi, deriveUserOperation, failedOpErrorSchema, failedOpWithRevertErrorSchema } from "../types/index.js";
2
- import { getRevertErrorData, isVersion06, parseViemError, toPackedUserOperation, transactionIncluded } from "../utils/index.js";
1
+ // biome-ignore lint/style/noNamespaceImport: explicitly make it clear when sentry is used
3
2
  import * as sentry from "@sentry/node";
3
+ import { EntryPointV06Abi, EntryPointV07Abi, deriveUserOperation, failedOpErrorSchema, failedOpWithRevertErrorSchema } from "../types/index.js";
4
+ import { getRevertErrorData, scaleBigIntByPercent, isVersion06, parseViemError, toPackedUserOperation } from "../utils/index.js";
4
5
  import { ContractFunctionRevertedError, EstimateGasExecutionError, FeeCapTooLowError, concat, decodeErrorResult, hexToBytes, numberToHex } from "viem";
5
6
  export function simulatedOpsToResults(simulatedOps, transactionInfo) {
6
- return simulatedOps.map((sop) => {
7
- if (sop.reason === undefined) {
7
+ return simulatedOps.map(({ reason, owh }) => {
8
+ if (reason === undefined) {
8
9
  return {
9
10
  status: "success",
10
11
  value: {
11
12
  userOperation: {
12
13
  entryPoint: transactionInfo.entryPoint,
13
- mempoolUserOperation: sop.owh.mempoolUserOperation,
14
- userOperationHash: sop.owh.userOperationHash,
14
+ mempoolUserOperation: owh.mempoolUserOperation,
15
+ userOperationHash: owh.userOperationHash,
15
16
  lastReplaced: Date.now(),
16
17
  firstSubmitted: Date.now()
17
18
  },
@@ -23,9 +24,9 @@ export function simulatedOpsToResults(simulatedOps, transactionInfo) {
23
24
  status: "failure",
24
25
  error: {
25
26
  entryPoint: transactionInfo.entryPoint,
26
- userOperation: sop.owh.mempoolUserOperation,
27
- userOpHash: sop.owh.userOperationHash,
28
- reason: sop.reason
27
+ userOperation: owh.mempoolUserOperation,
28
+ userOpHash: owh.userOperationHash,
29
+ reason: reason
29
30
  }
30
31
  };
31
32
  });
@@ -50,16 +51,17 @@ export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, o
50
51
  });
51
52
  let gasLimit;
52
53
  // TODO compressed ops are not supported in V07
53
- const isUserOpV06 = callContext.type === "default"
54
- ? isVersion06(simulatedOps[0].owh.mempoolUserOperation)
55
- : true;
54
+ const isUserOpV06 = callContext.type !== "default" || // All compressed ops are v6 by default
55
+ isVersion06(simulatedOps[0].owh.mempoolUserOperation);
56
+ const gasOptions = onlyPre1559
57
+ ? { gasPrice: maxFeePerGas }
58
+ : { maxFeePerGas, maxPriorityFeePerGas };
59
+ let fixedEstimationGasLimit = fixedGasLimitForEstimation;
60
+ let retriesLeft = 5;
56
61
  while (simulatedOps.filter((op) => op.reason === undefined).length > 0) {
57
62
  try {
58
- const gasOptions = onlyPre1559
59
- ? { gasPrice: maxFeePerGas }
60
- : { maxFeePerGas, maxPriorityFeePerGas };
61
63
  if (callContext.type === "default") {
62
- const ep = callContext.ep;
64
+ const { ep } = callContext;
63
65
  const opsToSend = simulatedOps
64
66
  .filter((op) => op.reason === undefined)
65
67
  .map((op) => {
@@ -74,8 +76,8 @@ export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, o
74
76
  account: wallet,
75
77
  nonce: nonce,
76
78
  blockTag: blockTag,
77
- ...(fixedGasLimitForEstimation !== undefined && {
78
- gas: fixedGasLimitForEstimation
79
+ ...(fixedEstimationGasLimit !== undefined && {
80
+ gas: fixedEstimationGasLimit
79
81
  }),
80
82
  ...gasOptions
81
83
  });
@@ -90,13 +92,15 @@ export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, o
90
92
  to: bundleBulker,
91
93
  account: wallet,
92
94
  data: createCompressedCalldata(opsToSend, perOpInflatorId),
93
- gas: fixedGasLimitForEstimation,
95
+ ...(fixedEstimationGasLimit !== undefined && {
96
+ gas: fixedEstimationGasLimit
97
+ }),
94
98
  nonce: nonce,
95
99
  blockTag: blockTag,
96
100
  ...gasOptions
97
101
  });
98
102
  }
99
- return { simulatedOps, gasLimit, resubmitAllOps: false };
103
+ return { simulatedOps, gasLimit };
100
104
  }
101
105
  catch (err) {
102
106
  logger.error({ err, blockTag }, "error estimating gas");
@@ -112,6 +116,12 @@ export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, o
112
116
  errorData = failedOpWithRevertError.data.args;
113
117
  }
114
118
  if (errorData) {
119
+ if (errorData.reason.indexOf("AA95 out of gas") !== -1 &&
120
+ retriesLeft > 0) {
121
+ retriesLeft--;
122
+ fixedEstimationGasLimit = scaleBigIntByPercent(fixedEstimationGasLimit || BigInt(30_000_000), 110);
123
+ continue;
124
+ }
115
125
  logger.debug({
116
126
  errorData,
117
127
  userOpHashes: simulatedOps
@@ -131,20 +141,26 @@ export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, o
131
141
  }, "failed to parse failedOpError");
132
142
  return {
133
143
  simulatedOps: [],
134
- gasLimit: 0n,
135
- resubmitAllOps: false
144
+ gasLimit: 0n
136
145
  };
137
146
  }
138
147
  }
139
148
  else if (e instanceof EstimateGasExecutionError ||
140
149
  err instanceof EstimateGasExecutionError) {
141
- if (e?.cause instanceof FeeCapTooLowError) {
150
+ if (e?.cause instanceof FeeCapTooLowError && retriesLeft > 0) {
151
+ retriesLeft--;
142
152
  logger.info({ error: e.shortMessage }, "error estimating gas due to max fee < basefee");
143
- return {
144
- simulatedOps: simulatedOps,
145
- gasLimit: 0n,
146
- resubmitAllOps: true
147
- };
153
+ if ("gasPrice" in gasOptions) {
154
+ gasOptions.gasPrice = scaleBigIntByPercent(gasOptions.gasPrice || maxFeePerGas, 125);
155
+ }
156
+ if ("maxFeePerGas" in gasOptions) {
157
+ gasOptions.maxFeePerGas = scaleBigIntByPercent(gasOptions.maxFeePerGas || maxFeePerGas, 125);
158
+ }
159
+ if ("maxPriorityFeePerGas" in gasOptions) {
160
+ gasOptions.maxPriorityFeePerGas = scaleBigIntByPercent(gasOptions.maxPriorityFeePerGas ||
161
+ maxPriorityFeePerGas, 125);
162
+ }
163
+ continue;
148
164
  }
149
165
  try {
150
166
  let errorHexData = "0x";
@@ -173,8 +189,7 @@ export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, o
173
189
  }, "unexpected error result");
174
190
  return {
175
191
  simulatedOps: [],
176
- gasLimit: 0n,
177
- resubmitAllOps: false
192
+ gasLimit: 0n
178
193
  };
179
194
  }
180
195
  const failingOp = simulatedOps.filter((op) => op.reason === undefined)[Number(errorResult.args[0])];
@@ -184,21 +199,20 @@ export async function filterOpsAndEstimateGas(entryPoint, callContext, wallet, o
184
199
  logger.error({ error: JSON.stringify(err) }, "failed to parse error result");
185
200
  return {
186
201
  simulatedOps: [],
187
- gasLimit: 0n,
188
- resubmitAllOps: false
202
+ gasLimit: 0n
189
203
  };
190
204
  }
191
205
  }
192
206
  else {
193
207
  sentry.captureException(err);
194
208
  logger.error({ error: JSON.stringify(err), blockTag }, "error estimating gas");
195
- return { simulatedOps: [], gasLimit: 0n, resubmitAllOps: false };
209
+ return { simulatedOps: [], gasLimit: 0n };
196
210
  }
197
211
  }
198
212
  }
199
- return { simulatedOps, gasLimit: 0n, resubmitAllOps: false };
213
+ return { simulatedOps, gasLimit: 0n };
200
214
  }
201
- export async function flushStuckTransaction(publicClient, walletClient, wallet, gasPrice, logger, entryPoint) {
215
+ export async function flushStuckTransaction(publicClient, walletClient, wallet, gasPrice, logger) {
202
216
  const latestNonce = await publicClient.getTransactionCount({
203
217
  address: wallet.address,
204
218
  blockTag: "latest"
@@ -228,9 +242,6 @@ export async function flushStuckTransaction(publicClient, walletClient, wallet,
228
242
  maxPriorityFeePerGas: gasPrice
229
243
  });
230
244
  logger.debug({ txHash, nonce: nonceToFlush, wallet: wallet.address }, "flushed stuck transaction");
231
- // TODO: We don't know if the entrypoint is the V06 or V07. So we try and catch both.
232
- await transactionIncluded(true, txHash, publicClient, entryPoint);
233
- await transactionIncluded(false, txHash, publicClient, entryPoint);
234
245
  }
235
246
  catch (e) {
236
247
  sentry.captureException(e);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../executor/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../executor/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compressionHandler.js","sourceRoot":"","sources":["../../handlers/compressionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAAkC,WAAW,EAAE,MAAM,MAAM,CAAA;AAElE,MAAM,OAAO,kBAAkB;IAC3B,mBAAmB,CAAS;IAC5B,oBAAoB,CAAS;IAC7B,eAAe,CAAQ;IAEvB,YACI,mBAA4B,EAC5B,oBAA6B,EAC7B,eAAuB;QAEvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;QAC9C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;QAChD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IAC1C,CAAC;IAEM,MAAM,CAAC,WAAW,GAAG,KAAK,EAC7B,mBAA4B,EAC5B,oBAA6B,EAC7B,YAA0B,EAC5B,EAAE;QACA,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAC7C,mBAAmB,EACnB,oBAAoB,EACpB,CAAC,CACJ,CAAA;QAED,MAAM,YAAY,GAAG,WAAW,CAAC;YAC7B,OAAO,EAAE,mBAAmB;YAC5B,GAAG,EAAE,eAAe;YACpB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;aACvB;SACJ,CAAC,CAAA;QAEF,kBAAkB,CAAC,eAAe;YAC9B,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAEhE,IAAI,kBAAkB,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACX,kBAAkB,oBAAoB,0CAA0C,mBAAmB,GAAG,CACzG,CAAA;QACL,CAAC;QAED,OAAO,kBAAkB,CAAA;IAC7B,CAAC,CAAA;IAEM,KAAK,CAAC,uBAAuB,CAChC,QAAiB,EACjB,YAAoB;QAEpB,MAAM,aAAa,GAAG,WAAW,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,oBAAoB;YAClC,GAAG,EAAE,gBAAgB;YACrB,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;aACvB;SACJ,CAAC,CAAA;QAEF,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC5D,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Hex } from "viem";
2
+ import type { Logger, Metrics } from "../utils/index.js";
3
+ export declare class EventManager {
4
+ private redis;
5
+ private chainId;
6
+ private logger;
7
+ private metrics;
8
+ constructor(endpoint: string | undefined, chainId: number, logger: Logger, metrics: Metrics);
9
+ emitExecutionRevertedOnChain(userOperationHash: Hex, transactionHash: Hex, reason: Hex, blockNumber: bigint): Promise<void>;
10
+ emitFailedOnChain(userOperationHash: Hex, transactionHash: Hex, blockNumber: bigint): Promise<void>;
11
+ emitFrontranOnChain(userOperationHash: Hex, transactionHash: Hex, blockNumber: bigint): Promise<void>;
12
+ emitIncludedOnChain(userOperationHash: Hex, transactionHash: Hex, blockNumber: bigint): Promise<void>;
13
+ emitQueued(userOperationHash: Hex): Promise<void>;
14
+ emitReceived(userOperationHash: Hex, timestamp?: number): Promise<void>;
15
+ emitFailedValidation(userOperationHash: Hex, reason?: string, aaError?: string): Promise<void>;
16
+ emitSubmitted(userOperationHash: Hex, transactionHash: Hex): Promise<void>;
17
+ emitDropped(userOperationHash: Hex, reason?: string, aaError?: string): Promise<void>;
18
+ emitAddedToMempool(userOperationHash: Hex): Promise<void>;
19
+ private emitEvent;
20
+ }
21
+ //# sourceMappingURL=eventManager.d.ts.map
@@ -0,0 +1,166 @@
1
+ // biome-ignore lint/style/noNamespaceImport: explicitly make it clear when sentry is used
2
+ import * as sentry from "@sentry/node";
3
+ import Redis from "ioredis";
4
+ export class EventManager {
5
+ redis;
6
+ chainId;
7
+ logger;
8
+ metrics;
9
+ constructor(endpoint, chainId, logger, metrics) {
10
+ this.chainId = chainId;
11
+ this.logger = logger;
12
+ this.metrics = metrics;
13
+ if (endpoint) {
14
+ this.redis = new Redis(endpoint);
15
+ return;
16
+ }
17
+ this.redis = undefined;
18
+ }
19
+ // emits when the userOperation was mined onchain but reverted during the callphase
20
+ async emitExecutionRevertedOnChain(userOperationHash, transactionHash, reason, blockNumber) {
21
+ await this.emitEvent({
22
+ userOperationHash,
23
+ event: {
24
+ eventType: "execution_reverted_onchain",
25
+ transactionHash,
26
+ data: {
27
+ blockNumber: Number(blockNumber),
28
+ reason
29
+ }
30
+ }
31
+ });
32
+ }
33
+ // emits when the userOperation was mined onchain but failed EntryPoint validation
34
+ async emitFailedOnChain(userOperationHash, transactionHash, blockNumber) {
35
+ await this.emitEvent({
36
+ userOperationHash,
37
+ event: {
38
+ eventType: "failed_onchain",
39
+ transactionHash,
40
+ data: {
41
+ blockNumber: Number(blockNumber)
42
+ }
43
+ }
44
+ });
45
+ }
46
+ // emits when the userOperation has been included onchain but bundled by a frontrunner
47
+ async emitFrontranOnChain(userOperationHash, transactionHash, blockNumber) {
48
+ await this.emitEvent({
49
+ userOperationHash,
50
+ event: {
51
+ eventType: "frontran_onchain",
52
+ transactionHash,
53
+ data: {
54
+ blockNumber: Number(blockNumber)
55
+ }
56
+ }
57
+ });
58
+ }
59
+ // emits when the userOperation is included onchain
60
+ async emitIncludedOnChain(userOperationHash, transactionHash, blockNumber) {
61
+ await this.emitEvent({
62
+ userOperationHash,
63
+ event: {
64
+ eventType: "included_onchain",
65
+ transactionHash,
66
+ data: {
67
+ blockNumber: Number(blockNumber)
68
+ }
69
+ }
70
+ });
71
+ }
72
+ // emits when the userOperation is placed in the nonce queue
73
+ async emitQueued(userOperationHash) {
74
+ await this.emitEvent({
75
+ userOperationHash,
76
+ event: {
77
+ eventType: "queued"
78
+ }
79
+ });
80
+ }
81
+ // emits when the userOperation is first seen
82
+ async emitReceived(userOperationHash, timestamp) {
83
+ await this.emitEvent({
84
+ userOperationHash,
85
+ event: {
86
+ eventType: "received"
87
+ },
88
+ timestamp
89
+ });
90
+ }
91
+ // emits when the userOperation failed to get added to the mempool
92
+ async emitFailedValidation(userOperationHash, reason, aaError) {
93
+ await this.emitEvent({
94
+ userOperationHash,
95
+ event: {
96
+ eventType: "failed_validation",
97
+ data: {
98
+ reason,
99
+ aaError
100
+ }
101
+ }
102
+ });
103
+ }
104
+ // emits when the userOperation has been submitted to the network
105
+ async emitSubmitted(userOperationHash, transactionHash) {
106
+ await this.emitEvent({
107
+ userOperationHash,
108
+ event: {
109
+ eventType: "submitted",
110
+ transactionHash
111
+ }
112
+ });
113
+ }
114
+ // emits when the userOperation was dropped from the internal mempool
115
+ async emitDropped(userOperationHash, reason, aaError) {
116
+ await this.emitEvent({
117
+ userOperationHash,
118
+ event: {
119
+ eventType: "dropped",
120
+ data: {
121
+ reason,
122
+ aaError
123
+ }
124
+ }
125
+ });
126
+ }
127
+ // emits when the userOperation was added to the internal mempool
128
+ async emitAddedToMempool(userOperationHash) {
129
+ await this.emitEvent({
130
+ userOperationHash,
131
+ event: {
132
+ eventType: "added_to_mempool"
133
+ }
134
+ });
135
+ }
136
+ async emitEvent({ userOperationHash, event, timestamp }) {
137
+ if (!this.redis) {
138
+ return;
139
+ }
140
+ const entry = {
141
+ userOperationHash,
142
+ eventTimestamp: timestamp ?? Date.now(),
143
+ chainId: this.chainId,
144
+ ...event
145
+ };
146
+ // log to redis here
147
+ let lpushStatus;
148
+ try {
149
+ await this.redis.lpush("UserOperationStatusEventsQueue", JSON.stringify(entry));
150
+ lpushStatus = "success";
151
+ }
152
+ catch (e) {
153
+ this.logger.error("Failed to send userOperation status event due to ", JSON.stringify(e));
154
+ sentry.captureException(e);
155
+ lpushStatus = "failed";
156
+ }
157
+ this.metrics.emittedOpEvents
158
+ .labels({
159
+ // biome-ignore lint/style/useNamingConvention: event_type
160
+ event_type: event.eventType,
161
+ status: lpushStatus
162
+ })
163
+ .inc();
164
+ }
165
+ }
166
+ //# sourceMappingURL=eventManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../handlers/eventManager.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,MAAM,SAAS,CAAA;AAK3B,MAAM,OAAO,YAAY;IACb,KAAK,CAAmB;IACxB,OAAO,CAAQ;IACf,MAAM,CAAQ;IACd,OAAO,CAAS;IAExB,YACI,QAA4B,EAC5B,OAAe,EACf,MAAc,EACd,OAAgB;QAEhB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;YAChC,OAAM;QACV,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;IAC1B,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,4BAA4B,CAC9B,iBAAsB,EACtB,eAAoB,EACpB,MAAW,EACX,WAAmB;QAEnB,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,4BAA4B;gBACvC,eAAe;gBACf,IAAI,EAAE;oBACF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;oBAChC,MAAM;iBACT;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,iBAAiB,CACnB,iBAAsB,EACtB,eAAoB,EACpB,WAAmB;QAEnB,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,gBAAgB;gBAC3B,eAAe;gBACf,IAAI,EAAE;oBACF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;iBACnC;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,mBAAmB,CACrB,iBAAsB,EACtB,eAAoB,EACpB,WAAmB;QAEnB,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,kBAAkB;gBAC7B,eAAe;gBACf,IAAI,EAAE;oBACF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;iBACnC;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,mBAAmB,CACrB,iBAAsB,EACtB,eAAoB,EACpB,WAAmB;QAEnB,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,kBAAkB;gBAC7B,eAAe;gBACf,IAAI,EAAE;oBACF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;iBACnC;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,UAAU,CAAC,iBAAsB;QACnC,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,QAAQ;aACtB;SACJ,CAAC,CAAA;IACN,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,YAAY,CAAC,iBAAsB,EAAE,SAAkB;QACzD,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,UAAU;aACxB;YACD,SAAS;SACZ,CAAC,CAAA;IACN,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,oBAAoB,CACtB,iBAAsB,EACtB,MAAe,EACf,OAAgB;QAEhB,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,mBAAmB;gBAC9B,IAAI,EAAE;oBACF,MAAM;oBACN,OAAO;iBACV;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,aAAa,CAAC,iBAAsB,EAAE,eAAoB;QAC5D,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,WAAW;gBACtB,eAAe;aAClB;SACJ,CAAC,CAAA;IACN,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,WAAW,CACb,iBAAsB,EACtB,MAAe,EACf,OAAgB;QAEhB,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,SAAS;gBACpB,IAAI,EAAE;oBACF,MAAM;oBACN,OAAO;iBACV;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,kBAAkB,CAAC,iBAAsB;QAC3C,MAAM,IAAI,CAAC,SAAS,CAAC;YACjB,iBAAiB;YACjB,KAAK,EAAE;gBACH,SAAS,EAAE,kBAAkB;aAChC;SACJ,CAAC,CAAA;IACN,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,EACpB,iBAAiB,EACjB,KAAK,EACL,SAAS,EAKZ;QACG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,OAAM;QACV,CAAC;QAED,MAAM,KAAK,GAAG;YACV,iBAAiB;YACjB,cAAc,EAAE,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,KAAK;SACX,CAAA;QAED,oBAAoB;QACpB,IAAI,WAAmB,CAAA;QACvB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAClB,gCAAgC,EAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACxB,CAAA;YACD,WAAW,GAAG,SAAS,CAAA;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,mDAAmD,EACnD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB,CAAA;YACD,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YAC1B,WAAW,GAAG,QAAQ,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,eAAe;aACvB,MAAM,CAAC;YACJ,0DAA0D;YAC1D,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,MAAM,EAAE,WAAW;SACtB,CAAC;aACD,GAAG,EAAE,CAAA;IACd,CAAC;CACJ"}
@@ -1,5 +1,5 @@
1
- import { type GasPriceParameters } from "../types/index.js";
2
- import { type Logger } from "./index.js";
1
+ import { type GasPriceParameters, type ChainType } from "../types/index.js";
2
+ import { type Logger } from "../utils/index.js";
3
3
  import { type Chain, type PublicClient } from "viem";
4
4
  export declare class GasPriceManager {
5
5
  private chain;
@@ -11,7 +11,13 @@ export declare class GasPriceManager {
11
11
  private queueMaxPriorityFeePerGas;
12
12
  private maxQueueSize;
13
13
  private gasBumpMultiplier;
14
- constructor(chain: Chain, publicClient: PublicClient, legacyTransactions: boolean, logger: Logger, gasBumpMultiplier: bigint, gasPriceTimeValidityInSeconds?: number);
14
+ private gasPriceRefreshIntervalInSeconds;
15
+ private chainType;
16
+ constructor(chain: Chain, publicClient: PublicClient, legacyTransactions: boolean, logger: Logger, gasBumpMultiplier: bigint, gasPriceTimeValidityInSeconds: number, gasPriceRefreshIntervalInSeconds: number, chainType: ChainType);
17
+ init(): Promise<[{
18
+ maxFeePerGas: bigint;
19
+ maxPriorityFeePerGas: bigint;
20
+ }, bigint | void]>;
15
21
  private getDefaultGasFee;
16
22
  private getPolygonGasPriceParameters;
17
23
  private bumpTheGasPrice;
@@ -24,8 +30,16 @@ export declare class GasPriceManager {
24
30
  private saveMaxPriorityFeePerGas;
25
31
  private saveGasPrice;
26
32
  private innerGetGasPrice;
27
- getBaseFee(): Promise<bigint>;
28
- getGasPrice(): Promise<GasPriceParameters>;
33
+ private updateBaseFee;
34
+ getBaseFee(): bigint | Promise<bigint>;
35
+ private updateGasPrice;
36
+ getGasPrice(): Promise<{
37
+ maxFeePerGas: bigint;
38
+ maxPriorityFeePerGas: bigint;
39
+ }> | {
40
+ maxFeePerGas: bigint;
41
+ maxPriorityFeePerGas: bigint;
42
+ };
29
43
  getMaxBaseFeePerGas(): Promise<bigint>;
30
44
  private getMinMaxFeePerGas;
31
45
  private getMinMaxPriorityFeePerGas;
@@ -1,8 +1,8 @@
1
1
  import { RpcError, gasStationResult } from "../types/index.js";
2
- import { maxBigInt, minBigInt } from "./index.js";
2
+ import { maxBigInt, minBigInt } from "../utils/index.js";
3
3
  import * as sentry from "@sentry/node";
4
4
  import { parseGwei } from "viem";
5
- import * as chains from "viem/chains";
5
+ import { celo, celoAlfajores, dfk, avalanche, polygon, polygonMumbai } from "viem/chains";
6
6
  var ChainId;
7
7
  (function (ChainId) {
8
8
  ChainId[ChainId["Goerli"] = 5] = "Goerli";
@@ -31,13 +31,34 @@ export class GasPriceManager {
31
31
  queueMaxPriorityFeePerGas = []; // Store pairs of [price, timestamp]
32
32
  maxQueueSize;
33
33
  gasBumpMultiplier;
34
- constructor(chain, publicClient, legacyTransactions, logger, gasBumpMultiplier, gasPriceTimeValidityInSeconds = 10) {
34
+ gasPriceRefreshIntervalInSeconds;
35
+ chainType;
36
+ constructor(chain, publicClient, legacyTransactions, logger, gasBumpMultiplier, gasPriceTimeValidityInSeconds, gasPriceRefreshIntervalInSeconds, chainType) {
35
37
  this.maxQueueSize = gasPriceTimeValidityInSeconds;
36
38
  this.chain = chain;
37
39
  this.publicClient = publicClient;
38
40
  this.legacyTransactions = legacyTransactions;
39
41
  this.logger = logger;
40
42
  this.gasBumpMultiplier = gasBumpMultiplier;
43
+ this.gasPriceRefreshIntervalInSeconds = gasPriceRefreshIntervalInSeconds;
44
+ this.chainType = chainType;
45
+ // Periodically update gas prices if specified
46
+ if (this.gasPriceRefreshIntervalInSeconds > 0) {
47
+ setInterval(() => {
48
+ if (this.legacyTransactions === false) {
49
+ this.updateBaseFee();
50
+ }
51
+ this.updateGasPrice();
52
+ }, this.gasPriceRefreshIntervalInSeconds * 1000);
53
+ }
54
+ }
55
+ init() {
56
+ return Promise.all([
57
+ this.updateGasPrice(),
58
+ this.legacyTransactions === false
59
+ ? this.updateBaseFee()
60
+ : Promise.resolve()
61
+ ]);
41
62
  }
42
63
  getDefaultGasFee(chainId) {
43
64
  switch (chainId) {
@@ -70,15 +91,14 @@ export class GasPriceManager {
70
91
  maxFeePerGas: (maxFeePerGas * bumpAmount) / 100n,
71
92
  maxPriorityFeePerGas: (maxPriorityFeePerGas * bumpAmount) / 100n
72
93
  };
73
- if (this.chain.id === chains.celo.id ||
74
- this.chain.id === chains.celoAlfajores.id) {
94
+ if (this.chain.id === celo.id || this.chain.id === celoAlfajores.id) {
75
95
  const maxFee = maxBigInt(result.maxFeePerGas, result.maxPriorityFeePerGas);
76
96
  return {
77
97
  maxFeePerGas: maxFee,
78
98
  maxPriorityFeePerGas: maxFee
79
99
  };
80
100
  }
81
- if (this.chain.id === chains.dfk.id) {
101
+ if (this.chain.id === dfk.id) {
82
102
  const maxFeePerGas = maxBigInt(5000000000n, result.maxFeePerGas);
83
103
  const maxPriorityFeePerGas = maxBigInt(5000000000n, result.maxPriorityFeePerGas);
84
104
  return {
@@ -87,7 +107,7 @@ export class GasPriceManager {
87
107
  };
88
108
  }
89
109
  // set a minimum maxPriorityFee & maxFee to 1.5gwei on avalanche (because eth_maxPriorityFeePerGas returns 0)
90
- if (this.chain.id === chains.avalanche.id) {
110
+ if (this.chain.id === avalanche.id) {
91
111
  const maxFeePerGas = maxBigInt(parseGwei("1.5"), result.maxFeePerGas);
92
112
  const maxPriorityFeePerGas = maxBigInt(parseGwei("1.5"), result.maxPriorityFeePerGas);
93
113
  return {
@@ -256,8 +276,8 @@ export class GasPriceManager {
256
276
  async innerGetGasPrice() {
257
277
  let maxFeePerGas = 0n;
258
278
  let maxPriorityFeePerGas = 0n;
259
- if (this.chain.id === chains.polygon.id ||
260
- this.chain.id === chains.polygonMumbai.id) {
279
+ if (this.chain.id === polygon.id ||
280
+ this.chain.id === polygonMumbai.id) {
261
281
  const polygonEstimate = await this.getPolygonGasPriceParameters();
262
282
  if (polygonEstimate) {
263
283
  const gasPrice = this.bumpTheGasPrice({
@@ -289,7 +309,7 @@ export class GasPriceManager {
289
309
  maxPriorityFeePerGas: maxBigInt(gasPrice.maxPriorityFeePerGas, maxPriorityFeePerGas)
290
310
  };
291
311
  }
292
- async getBaseFee() {
312
+ async updateBaseFee() {
293
313
  const latestBlock = await this.publicClient.getBlock();
294
314
  if (latestBlock.baseFeePerGas === null) {
295
315
  throw new RpcError("block does not have baseFeePerGas");
@@ -298,7 +318,17 @@ export class GasPriceManager {
298
318
  this.saveBaseFeePerGas(baseFee, Date.now());
299
319
  return baseFee;
300
320
  }
301
- async getGasPrice() {
321
+ getBaseFee() {
322
+ if (this.legacyTransactions) {
323
+ throw new RpcError("baseFee is not available for legacy transactions");
324
+ }
325
+ if (this.gasPriceRefreshIntervalInSeconds === 0) {
326
+ return this.updateBaseFee();
327
+ }
328
+ const { baseFeePerGas } = this.queueBaseFeePerGas[this.queueBaseFeePerGas.length - 1];
329
+ return baseFeePerGas;
330
+ }
331
+ async updateGasPrice() {
302
332
  const gasPrice = await this.innerGetGasPrice();
303
333
  this.saveGasPrice({
304
334
  maxFeePerGas: gasPrice.maxFeePerGas,
@@ -306,6 +336,17 @@ export class GasPriceManager {
306
336
  }, Date.now());
307
337
  return gasPrice;
308
338
  }
339
+ getGasPrice() {
340
+ if (this.gasPriceRefreshIntervalInSeconds === 0) {
341
+ return this.updateGasPrice();
342
+ }
343
+ const { maxPriorityFeePerGas } = this.queueMaxPriorityFeePerGas[this.queueMaxPriorityFeePerGas.length - 1];
344
+ const { maxFeePerGas } = this.queueMaxFeePerGas[this.queueMaxFeePerGas.length - 1];
345
+ return {
346
+ maxFeePerGas,
347
+ maxPriorityFeePerGas
348
+ };
349
+ }
309
350
  async getMaxBaseFeePerGas() {
310
351
  if (this.queueBaseFeePerGas.length === 0) {
311
352
  await this.getBaseFee();
@@ -325,8 +366,12 @@ export class GasPriceManager {
325
366
  return this.queueMaxPriorityFeePerGas.reduce((acc, cur) => minBigInt(cur.maxPriorityFeePerGas, acc), this.queueMaxPriorityFeePerGas[0].maxPriorityFeePerGas);
326
367
  }
327
368
  async validateGasPrice(gasPrice) {
328
- const lowestMaxFeePerGas = await this.getMinMaxFeePerGas();
329
- const lowestMaxPriorityFeePerGas = await this.getMinMaxPriorityFeePerGas();
369
+ let lowestMaxFeePerGas = await this.getMinMaxFeePerGas();
370
+ let lowestMaxPriorityFeePerGas = await this.getMinMaxPriorityFeePerGas();
371
+ if (this.chainType === "hedera") {
372
+ lowestMaxFeePerGas /= 10n ** 9n;
373
+ lowestMaxPriorityFeePerGas /= 10n ** 9n;
374
+ }
330
375
  if (gasPrice.maxFeePerGas < lowestMaxFeePerGas) {
331
376
  throw new RpcError(`maxFeePerGas must be at least ${lowestMaxFeePerGas} (current maxFeePerGas: ${gasPrice.maxFeePerGas}) - use pimlico_getUserOperationGasPrice to get the current gas price`);
332
377
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasPriceManager.js","sourceRoot":"","sources":["../../handlers/gasPriceManager.ts"],"names":[],"mappings":"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"}