@latticexyz/common 2.2.22-490159e880e2ac0e1ce8f5785873a25b99fb7668 → 2.2.22-4f57d5de39a17a180cd14e768cd2a56cfc8fd85f

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.
package/dist/internal.js CHANGED
@@ -5,8 +5,9 @@ import {
5
5
  debug
6
6
  } from "./chunk-73UWXFXB.js";
7
7
  import {
8
+ bigIntMax,
8
9
  uniqueBy
9
- } from "./chunk-CHXZROA7.js";
10
+ } from "./chunk-ETXWXV5T.js";
10
11
 
11
12
  // src/waitForTransactions.ts
12
13
  import { waitForTransactionReceipt } from "viem/actions";
@@ -59,6 +60,9 @@ async function ensureContract({
59
60
  return [];
60
61
  }
61
62
  if (deployedBytecodeSize != null) {
63
+ if (deployedBytecodeSize === 0) {
64
+ throw new Error(`Empty bytecode for ${debugLabel}`);
65
+ }
62
66
  if (deployedBytecodeSize > contractSizeLimit) {
63
67
  console.warn(
64
68
  `
@@ -198,12 +202,386 @@ function getContractAddress({
198
202
  }) {
199
203
  return getCreate2Address2({ from: deployerAddress, bytecode, salt });
200
204
  }
205
+
206
+ // src/transports/methods/estimateUserOperationGas.ts
207
+ import {
208
+ decodeFunctionResult,
209
+ encodeFunctionData,
210
+ zeroAddress
211
+ } from "viem";
212
+ import {
213
+ entryPoint07Address,
214
+ formatUserOperation,
215
+ formatUserOperationRequest,
216
+ toPackedUserOperation
217
+ } from "viem/account-abstraction";
218
+
219
+ // src/transports/entryPointGasSimulations.ts
220
+ var entryPointGasSimulationsAbi = [
221
+ {
222
+ inputs: [
223
+ {
224
+ components: [
225
+ {
226
+ internalType: "address",
227
+ name: "sender",
228
+ type: "address"
229
+ },
230
+ {
231
+ internalType: "uint256",
232
+ name: "nonce",
233
+ type: "uint256"
234
+ },
235
+ {
236
+ internalType: "bytes",
237
+ name: "initCode",
238
+ type: "bytes"
239
+ },
240
+ {
241
+ internalType: "bytes",
242
+ name: "callData",
243
+ type: "bytes"
244
+ },
245
+ {
246
+ internalType: "bytes32",
247
+ name: "accountGasLimits",
248
+ type: "bytes32"
249
+ },
250
+ {
251
+ internalType: "uint256",
252
+ name: "preVerificationGas",
253
+ type: "uint256"
254
+ },
255
+ {
256
+ internalType: "bytes32",
257
+ name: "gasFees",
258
+ type: "bytes32"
259
+ },
260
+ {
261
+ internalType: "bytes",
262
+ name: "paymasterAndData",
263
+ type: "bytes"
264
+ },
265
+ {
266
+ internalType: "bytes",
267
+ name: "signature",
268
+ type: "bytes"
269
+ }
270
+ ],
271
+ internalType: "struct PackedUserOperation",
272
+ name: "op",
273
+ type: "tuple"
274
+ }
275
+ ],
276
+ name: "estimateGas",
277
+ outputs: [
278
+ {
279
+ components: [
280
+ {
281
+ internalType: "uint256",
282
+ name: "verificationGas",
283
+ type: "uint256"
284
+ },
285
+ {
286
+ internalType: "uint256",
287
+ name: "callGas",
288
+ type: "uint256"
289
+ },
290
+ {
291
+ internalType: "uint256",
292
+ name: "paymasterVerificationGas",
293
+ type: "uint256"
294
+ },
295
+ {
296
+ internalType: "uint256",
297
+ name: "paymasterPostOpGas",
298
+ type: "uint256"
299
+ }
300
+ ],
301
+ internalType: "struct EntryPoint.GasInfo",
302
+ name: "",
303
+ type: "tuple"
304
+ }
305
+ ],
306
+ stateMutability: "nonpayable",
307
+ type: "function"
308
+ }
309
+ ];
310
+ var entryPointGasSimulationsBytecode = (
311
+ // eslint-disable-next-line max-len
312
+ "0x6080604052600436106101625760003560e01c806370a08231116100c0578063b760faf911610074578063c23a5cea11610059578063c23a5cea146105c2578063dbed18e0146105e2578063fc7e286d1461060257600080fd5b8063b760faf91461059a578063bb9fe6bf146105ad57600080fd5b8063850aaf62116100a5578063850aaf621461053a578063957122ab1461055a5780639b249f691461057a57600080fd5b806370a08231146104d7578063765e827f1461051a57600080fd5b8063205c28781161011757806335567e1a116100fc57806335567e1a146102a05780633b6a3539146103355780635287ce121461038857600080fd5b8063205c28781461026057806322cdde4c1461028057600080fd5b80630396cb60116101485780630396cb60146101e75780630bd28e3b146101fa5780631b2e01b81461021a57600080fd5b806242dc531461017757806301ffc9a7146101b757600080fd5b3661017257610170336106d4565b005b600080fd5b34801561018357600080fd5b50610197610192366004613ebe565b6106f5565b604080519384526020840192909252908201526060015b60405180910390f35b3480156101c357600080fd5b506101d76101d2366004613f84565b6108ca565b60405190151581526020016101ae565b6101706101f5366004613fc6565b610a47565b34801561020657600080fd5b50610170610215366004614014565b610ddd565b34801561022657600080fd5b5061025261023536600461402f565b600160209081526000928352604080842090915290825290205481565b6040519081526020016101ae565b34801561026c57600080fd5b5061017061027b366004614064565b610e25565b34801561028c57600080fd5b5061025261029b366004614090565b610fcf565b3480156102ac57600080fd5b506102526102bb36600461402f565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff8516845290915290819020549082901b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161792915050565b34801561034157600080fd5b50610355610350366004614090565b611011565b6040516101ae91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561039457600080fd5b506104756103a33660046140cc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff1660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046dffffffffffffffffffffffffffff16928101929092526f01000000000000000000000000000000810463ffffffff166060830152730100000000000000000000000000000000000000900465ffffffffffff16608082015290565b6040516101ae9190600060a082019050825182526020830151151560208301526dffffffffffffffffffffffffffff604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b3480156104e357600080fd5b506102526104f23660046140cc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561052657600080fd5b5061017061053536600461412e565b6110af565b34801561054657600080fd5b50610170610555366004614185565b61122c565b34801561056657600080fd5b506101706105753660046141da565b6112d1565b34801561058657600080fd5b5061017061059536600461425f565b611429565b6101706105a83660046140cc565b6106d4565b3480156105b957600080fd5b50610170611514565b3480156105ce57600080fd5b506101706105dd3660046140cc565b6116f4565b3480156105ee57600080fd5b506101706105fd36600461412e565b6119e1565b34801561060e57600080fd5b5061068a61061d3660046140cc565b6000602081905290815260409020805460019091015460ff81169061010081046dffffffffffffffffffffffffffff16906f01000000000000000000000000000000810463ffffffff1690730100000000000000000000000000000000000000900465ffffffffffff1685565b6040805195865293151560208601526dffffffffffffffffffffffffffff9092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a0016101ae565b60015b60058110156106e8576001016106d7565b6106f182611e8d565b5050565b6000806000805a905033301461076c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8651606081015160a082015181016127100160405a603f0281610791576107916142a1565b0410156107c2577fdeaddead0000000000000000000000000000000000000000000000000000000060005260206000fd5b8951600090156108635760006107df846000015160008e86611ee3565b9050806108615760006107f3610800611efb565b80519091501561085b57846000015173ffffffffffffffffffffffffffffffffffffffff168c602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20187602001518460405161085292919061433e565b60405180910390a35b60019250505b505b5a8403955060008a60800151870190506108b6828c8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250611f27915050565b909d979c509a509598505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f60fc6b6e00000000000000000000000000000000000000000000000000000000148061095d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f915074d800000000000000000000000000000000000000000000000000000000145b806109a957507fffffffff0000000000000000000000000000000000000000000000000000000082167fcf28ef9700000000000000000000000000000000000000000000000000000000145b806109f557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3e84f02100000000000000000000000000000000000000000000000000000000145b80610a4157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b33600090815260208190526040902063ffffffff8216610ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606401610763565b600181015463ffffffff6f0100000000000000000000000000000090910481169083161015610b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610763565b6001810154600090610b7690349061010090046dffffffffffffffffffffffffffff16614386565b905060008111610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152606401610763565b6dffffffffffffffffffffffffffff811115610c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152606401610763565b6040805160a08101825283548152600160208083018281526dffffffffffffffffffffffffffff86811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16730100000000000000000000000000000000000000027fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff979094166f0100000000000000000000000000000002969096167fffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff91909516610100027fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff991515999099167fffffffffffffffffffffffffffffffffff00000000000000000000000000000090941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b33600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff851684529091528120805491610e1d83614399565b919050555050565b3360009081526020819052604090208054821115610e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610763565b8054610eac9083906143d1565b81556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610f59576040519150601f19603f3d011682016040523d82523d6000602084013e610f5e565b606091505b5050905080610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152606401610763565b50505050565b6000610fda82612118565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b61103c6040518060800160405280600081526020016000815260200160008152602001600081525090565b611044612131565b61104c613ba4565b6110776040518060800160405280600081526020016000815260200160008152602001600081525090565b61108084612172565b61108d6000858484612360565b505061109c60008584846125d3565b509150506110aa6001600255565b919050565b6110b7612131565b8160008167ffffffffffffffff8111156110d3576110d3613c56565b60405190808252806020026020018201604052801561110c57816020015b6110f9613ba4565b8152602001906001900390816110f15790505b50905060005b8281101561118557600082828151811061112e5761112e6143e4565b60200260200101519050600080611169848a8a87818110611151576111516143e4565b90506020028101906111639190614413565b85612a3c565b9150915061117a8483836000612a83565b505050600101611112565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b8381101561120f57611203818888848181106111d2576111d26143e4565b90506020028101906111e49190614413565b8584815181106111f6576111f66143e4565b6020026020010151612cd8565b909101906001016111b4565b5061121a8482612d1a565b5050506112276001600255565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff168484604051611256929190614451565b600060405180830381855af49150503d8060008114611291576040519150601f19603f3d011682016040523d82523d6000602084013e611296565b606091505b509150915081816040517f99410554000000000000000000000000000000000000000000000000000000008152600401610763929190614461565b831580156112f4575073ffffffffffffffffffffffffffffffffffffffff83163b155b1561135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610763565b601481106113ed576000611372601482848661447c565b61137b916144a6565b60601c9050803b6000036113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610763565b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610763565b600061144a60065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3684846040518363ffffffff1660e01b8152600401611484929190614537565b6020604051808303816000875af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c7919061454b565b6040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150602401610763565b336000908152602081905260408120600181015490916f0100000000000000000000000000000090910463ffffffff1690036115ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610763565b600181015460ff1661161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152606401610763565b6001810154600090611645906f01000000000000000000000000000000900463ffffffff1642614568565b6001830180547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001673010000000000000000000000000000000000000065ffffffffffff84169081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046dffffffffffffffffffffffffffff1680611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152606401610763565b6001820154730100000000000000000000000000000000000000900465ffffffffffff1661180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610763565b60018201544273010000000000000000000000000000000000000090910465ffffffffffff16111561189c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610763565b6001820180547fffffffffffffff000000000000000000000000000000000000000000000000ff1690556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611971576040519150601f19603f3d011682016040523d82523d6000602084013e611976565b606091505b5050905080610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610763565b6119e9612131565b816000805b82811015611bdb5736868683818110611a0957611a096143e4565b9050602002810190611a1b919061458e565b9050366000611a2a83806145c2565b90925090506000611a4160408501602086016140cc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821601611ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610763565b73ffffffffffffffffffffffffffffffffffffffff811615611bbf5773ffffffffffffffffffffffffffffffffffffffff8116632dd811338484611b29604089018961462a565b6040518563ffffffff1660e01b8152600401611b4894939291906147df565b60006040518083038186803b158015611b6057600080fd5b505afa925050508015611b71575060015b611bbf576040517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610763565b611bc98287614386565b955050600190930192506119ee915050565b5060008167ffffffffffffffff811115611bf757611bf7613c56565b604051908082528060200260200182016040528015611c3057816020015b611c1d613ba4565b815260200190600190039081611c155790505b5090506000805b84811015611d0d5736888883818110611c5257611c526143e4565b9050602002810190611c64919061458e565b9050366000611c7383806145c2565b90925090506000611c8a60408501602086016140cc565b90508160005b81811015611cfb576000898981518110611cac57611cac6143e4565b60200260200101519050600080611ccf8b898987818110611151576111516143e4565b91509150611cdf84838389612a83565b8a611ce981614399565b9b505060019093019250611c90915050565b505060019094019350611c3792505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b85811015611e485736898983818110611d5857611d586143e4565b9050602002810190611d6a919061458e565b9050611d7c60408201602083016140cc565b73ffffffffffffffffffffffffffffffffffffffff167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a2366000611dcb83806145c2565b90925090508060005b81811015611e3757611e1688858584818110611df257611df26143e4565b9050602002810190611e049190614413565b8b8b815181106111f6576111f66143e4565b611e209088614386565b965087611e2c81614399565b985050600101611dd4565b505060019093019250611d3d915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a2611e7e8682612d1a565b50505050506112276001600255565b6000611e998234612e61565b90508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040516116e891815260200190565b6000806000845160208601878987f195945050505050565b60603d82811115611f095750815b604051602082018101604052818152816000602083013e9392505050565b60008060005a865190915060009081611f3f82612ea1565b60e083015190915073ffffffffffffffffffffffffffffffffffffffff8116611f6b5782519350612058565b8093506000895111156120585760005a8984029850905060028c6002811115611f9657611f96614896565b14612052578173ffffffffffffffffffffffffffffffffffffffff16637c627b218560a001518e8d8c886040518663ffffffff1660e01b8152600401611fdf94939291906148c5565b600060405180830381600088803b158015611ff957600080fd5b5087f19350505050801561200b575060015b61205257600061201c610800611efb565b9050806040517fad7954bc0000000000000000000000000000000000000000000000000000000081526004016107639190614928565b5a900395505b5a60408b015190860398909801978289029750878110156120d45760028c600281111561208757612087614896565b036120aa578097506120988b612ed3565b6120a58b60008a8c612f2f565b612109565b7fdeadaa510000000000000000000000000000000000000000000000000000000060005260206000fd5b8781036120e18682612e61565b506000808e60028111156120f7576120f7614896565b1490506121068d828c8e612f2f565b50505b50505050505094509492505050565b600061212382612fb7565b805190602001209050919050565b600280540361216c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b6122726040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f01000000000000000000000000000000000000000000000000000000000000006036820152600090603701604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190528051602090910120600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550565b3063957122ab612285604084018461462a565b61229260208601866140cc565b61229f60e087018761462a565b6040518663ffffffff1660e01b81526004016122bf95949392919061493b565b60006040518083038186803b1580156122d757600080fd5b505afa9250505080156122e8575060015b61235d576122f461498a565b806308c379a00361235157506123086149a6565b806123135750612353565b8051156106f1576000816040517f220266b600000000000000000000000000000000000000000000000000000000815260040161076392919061433e565b505b3d6000803e3d6000fd5b50565b60008060005a8551909150612375878261307c565b61237e87610fcf565b6020870152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610763565b60006124578460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b90506124668b8b8b84876131c7565b965061247a84600001518560200151613408565b6124e9578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a8603111561255e578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60e084015160609073ffffffffffffffffffffffffffffffffffffffff161561259f5760005a90506125928d8d8d86613463565b985091505a900360408a01525b60408a018290528060608b015260a08b01355a90960395909501608090990189905250505094909352909590945092505050565b6000805a905060006125e6856060015190565b60405190915060009036826125fe60608b018b61462a565b915091506060600082600381111561261557843591505b507f72288ed1000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008216016127395760008c8c60200151604051602401612678929190614a4e565b604051602081830303815290604052638dd7712f60e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090503073ffffffffffffffffffffffffffffffffffffffff166242dc53828e8b6040516024016126ef93929190614b34565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509250506127b0565b3073ffffffffffffffffffffffffffffffffffffffff166242dc5385858e8b60405160240161276b9493929190614b74565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505091505b60603073ffffffffffffffffffffffffffffffffffffffff16836040516127d79190614bab565b6000604051808303816000865af19150503d8060008114612814576040519150601f19603f3d011682016040523d82523d6000602084013e612819565b606091505b509097509050861561285f576000808280602001905181019061283c9190614bbd565b809350819450829e50505050818d6020018181525050808d606001818152505050505b50505050505080612a315760003d806020036128815760206000803e60005191505b507fdeaddead00000000000000000000000000000000000000000000000000000000810361291457886040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052600f908201527f41413935206f7574206f66206761730000000000000000000000000000000000606082015260800190565b7fdeadaa51000000000000000000000000000000000000000000000000000000008103612986575a61294690856143d1565b60208701819052608088015160009161295f9190614386565b604089015190915061297089612ed3565b61297d8960008385612f2f565b9550612a2f9050565b865180516020808a015192015173ffffffffffffffffffffffffffffffffffffffff90911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f4792906129da610800611efb565b6040516129e892919061433e565b60405180910390a35a6129fb90856143d1565b602087018190526080880151600091612a149190614386565b90506000612a2560028a8785611f27565b60608a0152965050505b505b505050949350505050565b600080612a6a6040518060800160405280600081526020016000815260200160008152602001600081525090565b612a7686868684612360565b9250925050935093915050565b600080612a8f856136ab565b915091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612b3157856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526014908201527f41413234207369676e6174757265206572726f72000000000000000000000000606082015260800190565b8015612ba257856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b6000612bad856136ab565b9250905073ffffffffffffffffffffffffffffffffffffffff811615612c3857866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526014908201527f41413334207369676e6174757265206572726f72000000000000000000000000606082015260800190565b8115612ccf57866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b50505050505050565b6000612d056040518060800160405280600081526020016000815260200160008152602001600081525090565b612d11858585846125d3565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610763565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612df1576040519150601f19603f3d011682016040523d82523d6000602084013e612df6565b606091505b5050905080611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610763565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548290612e95908590614386565b91829055509392505050565b61010081015161012082015160009190808203612ebf575092915050565b612ecb824883016136fe565b949350505050565b805180516020808401519281015160405190815273ffffffffffffffffffffffffffffffffffffffff90921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e0810151815160208088015193015160405173ffffffffffffffffffffffffffffffffffffffff9384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f91612fa99189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b6060813560208301356000612fd7612fd2604087018761462a565b613716565b90506000612feb612fd2606088018861462a565b9050608086013560a087013560c0880135600061300e612fd260e08c018c61462a565b6040805173ffffffffffffffffffffffffffffffffffffffff9a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b61308960208301836140cc565b73ffffffffffffffffffffffffffffffffffffffff168152602082810135908201526fffffffffffffffffffffffffffffffff6080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c61012082015236600061310260e085018561462a565b909250905080156131ac576034811015613178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610763565b6131828282613729565b60a0860152608085015273ffffffffffffffffffffffffffffffffffffffff1660e0840152610fc9565b600060e084018190526080840181905260a084015250505050565b82518051600091906131e688876131e160408b018b61462a565b61379a565b60e0820151600073ffffffffffffffffffffffffffffffffffffffff82166132445773ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205487811161323d57808803613240565b60005b9150505b60208801516040517f19822f7c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916319822f7c9189916132a0918e91908790600401614beb565b60206040518083038160008887f1935050505080156132fa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526132f791810190614c10565b60015b61333e578961330a610800611efb565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610763929190614c29565b945073ffffffffffffffffffffffffffffffffffffffff82166133fb5773ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090208054808911156133f5578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832084821c808552925282208054849167ffffffffffffffff831691908561345583614399565b909155501495945050505050565b60606000805a855160e081015173ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090208054939450919290919087811015613512578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b87810382600001819055506000846080015190508373ffffffffffffffffffffffffffffffffffffffff166352b7512c828d8d602001518d6040518563ffffffff1660e01b815260040161356893929190614beb565b60006040518083038160008887f1935050505080156135c757506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135c49190810190614c76565b60015b61360b578b6135d7610800611efb565b6040517f65c8fd4d000000000000000000000000000000000000000000000000000000008152600401610763929190614d02565b9098509650805a87031115612109578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107639181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760608201527f61734c696d697400000000000000000000000000000000000000000000000000608082015260a00190565b600080826000036136c157506000928392509050565b60006136cc84613b26565b9050806040015165ffffffffffff164211806136f35750806020015165ffffffffffff1642105b905194909350915050565b600081831061370d578161370f565b825b9392505050565b6000604051828085833790209392505050565b6000808061373a601482868861447c565b613743916144a6565b60601c61375460246014878961447c565b61375d91614d4f565b60801c61376e60346024888a61447c565b61377791614d4f565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b8015610fc95782515173ffffffffffffffffffffffffffffffffffffffff81163b1561382b57846040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b600061384c60065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3686600001516040015186866040518463ffffffff1660e01b815260040161388f929190614537565b60206040518083038160008887f11580156138ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138d3919061454b565b905073ffffffffffffffffffffffffffffffffffffffff811661395b57856040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610763918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146139f857856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161076391815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b8073ffffffffffffffffffffffffffffffffffffffff163b600003613a8157856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161076391815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000613a90601482868861447c565b613a99916144a6565b60601c90508273ffffffffffffffffffffffffffffffffffffffff1686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051613b1592919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613b62575065ffffffffffff5b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a00160405280613c31604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810181811067ffffffffffffffff82111715613ca557613ca5613c56565b60405250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715613cef57613cef613c56565b6040525050565b604051610140810167ffffffffffffffff81118282101715613d1a57613d1a613c56565b60405290565b600067ffffffffffffffff821115613d3a57613d3a613c56565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461235d57600080fd5b80356110aa81613d66565b60008183036101c0811215613da757600080fd5b604051613db381613c85565b80925061014080831215613dc657600080fd5b613dce613cf6565b9250613dd985613d88565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c0840152613e2360e08601613d88565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f840112613e8757600080fd5b50813567ffffffffffffffff811115613e9f57600080fd5b602083019150836020828501011115613eb757600080fd5b9250929050565b6000806000806102008587031215613ed557600080fd5b843567ffffffffffffffff80821115613eed57600080fd5b818701915087601f830112613f0157600080fd5b8135613f0c81613d20565b604051613f198282613cab565b8281528a6020848701011115613f2e57600080fd5b82602086016020830137600060208483010152809850505050613f548860208901613d93565b94506101e0870135915080821115613f6b57600080fd5b50613f7887828801613e75565b95989497509550505050565b600060208284031215613f9657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461370f57600080fd5b600060208284031215613fd857600080fd5b813563ffffffff8116811461370f57600080fd5b803577ffffffffffffffffffffffffffffffffffffffffffffffff811681146110aa57600080fd5b60006020828403121561402657600080fd5b61370f82613fec565b6000806040838503121561404257600080fd5b823561404d81613d66565b915061405b60208401613fec565b90509250929050565b6000806040838503121561407757600080fd5b823561408281613d66565b946020939093013593505050565b6000602082840312156140a257600080fd5b813567ffffffffffffffff8111156140b957600080fd5b8201610120818503121561370f57600080fd5b6000602082840312156140de57600080fd5b813561370f81613d66565b60008083601f8401126140fb57600080fd5b50813567ffffffffffffffff81111561411357600080fd5b6020830191508360208260051b8501011115613eb757600080fd5b60008060006040848603121561414357600080fd5b833567ffffffffffffffff81111561415a57600080fd5b614166868287016140e9565b909450925050602084013561417a81613d66565b809150509250925092565b60008060006040848603121561419a57600080fd5b83356141a581613d66565b9250602084013567ffffffffffffffff8111156141c157600080fd5b6141cd86828701613e75565b9497909650939450505050565b6000806000806000606086880312156141f257600080fd5b853567ffffffffffffffff8082111561420a57600080fd5b61421689838a01613e75565b90975095506020880135915061422b82613d66565b9093506040870135908082111561424157600080fd5b5061424e88828901613e75565b969995985093965092949392505050565b6000806020838503121561427257600080fd5b823567ffffffffffffffff81111561428957600080fd5b61429585828601613e75565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60005b838110156142eb5781810151838201526020016142d3565b50506000910152565b6000815180845261430c8160208601602086016142d0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b828152604060208201526000612ecb60408301846142f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a4157610a41614357565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143ca576143ca614357565b5060010190565b81810381811115610a4157610a41614357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261444757600080fd5b9190910192915050565b8183823760009101908152919050565b8215158152604060208201526000612ecb60408301846142f4565b6000808585111561448c57600080fd5b8386111561449957600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156144e65780818660140360031b1b83161692505b505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000612ecb6020830184866144ee565b60006020828403121561455d57600080fd5b815161370f81613d66565b65ffffffffffff81811683821601908082111561458757614587614357565b5092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261444757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126145f757600080fd5b83018035915067ffffffffffffffff82111561461257600080fd5b6020019150600581901b3603821315613eb757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261465f57600080fd5b83018035915067ffffffffffffffff82111561467a57600080fd5b602001915036819003821315613eb757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126146c457600080fd5b830160208101925035905067ffffffffffffffff8111156146e457600080fd5b803603821315613eb757600080fd5b600061012061471f8461470585613d88565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208301356020850152614736604084018461468f565b82604087015261474983870182846144ee565b9250505061475a606084018461468f565b858303606087015261476d8382846144ee565b925050506080830135608085015260a083013560a085015260c083013560c085015261479c60e084018461468f565b85830360e08701526147af8382846144ee565b925050506101006147c28185018561468f565b868403838801526147d48482846144ee565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b8981101561487f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18c360301811261485d578283fd5b614869868d83016146f3565b95505060209384019392909201916001016147fd565b5050505082810360208401526147d48185876144ee565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000600386106148fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8582526080602083015261491560808301866142f4565b6040830194909452506060015292915050565b60208152600061370f60208301846142f4565b60608152600061494f6060830187896144ee565b73ffffffffffffffffffffffffffffffffffffffff86166020840152828103604084015261497e8185876144ee565b98975050505050505050565b600060033d11156149a35760046000803e5060005160e01c5b90565b600060443d10156149b45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715614a0257505050505090565b8285019150815181811115614a1a5750505050505090565b843d8701016020828501011115614a345750505050505090565b614a4360208286010187613cab565b509095945050505050565b604081526000614a6160408301856146f3565b90508260208301529392505050565b8051805173ffffffffffffffffffffffffffffffffffffffff1683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151614aef60e085018273ffffffffffffffffffffffffffffffffffffffff169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352614b48818401876142f4565b9050614b576020840186614a70565b8281036101e0840152614b6a81856142f4565b9695505050505050565b6000610200808352614b8981840187896144ee565b9050614b986020840186614a70565b8281036101e08401526147d481856142f4565b600082516144478184602087016142d0565b600080600060608486031215614bd257600080fd5b8351925060208401519150604084015190509250925092565b606081526000614bfe60608301866146f3565b60208301949094525060400152919050565b600060208284031215614c2257600080fd5b5051919050565b82815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015260a060408201526000612ecb60a08301846142f4565b60008060408385031215614c8957600080fd5b825167ffffffffffffffff811115614ca057600080fd5b8301601f81018513614cb157600080fd5b8051614cbc81613d20565b604051614cc98282613cab565b828152876020848601011115614cde57600080fd5b614cef8360208301602087016142d0565b6020969096015195979596505050505050565b82815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015260a060408201526000612ecb60a08301846142f4565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156144e65760109490940360031b84901b169092169291505056fea2646970667358221220cd7965683afa94170eaa51ceebadcfd731e9b31f39f75621861d25875bde7f2a64736f6c63430008170033"
313
+ );
314
+
315
+ // src/transports/methods/estimateUserOperationGas.ts
316
+ async function estimateUserOperationGas({
317
+ request,
318
+ params
319
+ }) {
320
+ const userOp = formatUserOperation(params[0]);
321
+ const gasSimulation = await simulateGas({ userOp, request });
322
+ const gasLimits = {
323
+ verificationGasLimit: gasSimulation.verificationGas * 2n,
324
+ callGasLimit: bigIntMax(gasSimulation.callGas * 2n, 9000n),
325
+ paymasterVerificationGasLimit: gasSimulation.paymasterVerificationGas * 2n,
326
+ paymasterPostOpGasLimit: gasSimulation.paymasterPostOpGas * 2n,
327
+ preVerificationGas: 20000n
328
+ };
329
+ return formatUserOperationRequest({
330
+ ...gasLimits
331
+ });
332
+ }
333
+ async function simulateGas({ request, userOp }) {
334
+ const simulationUserOp = {
335
+ ...userOp,
336
+ preVerificationGas: 0n,
337
+ callGasLimit: 10000000n,
338
+ verificationGasLimit: 10000000n,
339
+ // https://github.com/pimlicolabs/alto/blob/471998695e5ec75ef88dda3f8a534f47c24bcd1a/src/rpc/methods/eth_estimateUserOperationGas.ts#L117
340
+ maxPriorityFeePerGas: userOp.maxFeePerGas,
341
+ paymasterPostOpGasLimit: 2000000n,
342
+ paymasterVerificationGasLimit: 5000000n
343
+ };
344
+ const packedUserOp = toPackedUserOperation(simulationUserOp);
345
+ const simulationData = encodeFunctionData({
346
+ abi: entryPointGasSimulationsAbi,
347
+ functionName: "estimateGas",
348
+ args: [packedUserOp]
349
+ });
350
+ const hasPaymaster = userOp.paymaster != null && userOp.paymaster !== zeroAddress;
351
+ const senderBalanceOverride = hasPaymaster ? {} : { [userOp.sender]: { balance: "0xFFFFFFFFFFFFFFFFFFFF" } };
352
+ const simulationParams = [
353
+ {
354
+ to: entryPoint07Address,
355
+ data: simulationData
356
+ },
357
+ "pending",
358
+ {
359
+ ...senderBalanceOverride,
360
+ [entryPoint07Address]: {
361
+ code: entryPointGasSimulationsBytecode
362
+ }
363
+ }
364
+ ];
365
+ const encodedSimulationResult = await request({
366
+ // TODO: go back to wiresaw_callEntryPointSimulations once bytecode is updated
367
+ method: "wiresaw_call",
368
+ // "wiresaw_callEntryPointSimulations",
369
+ params: simulationParams
370
+ });
371
+ return decodeFunctionResult({
372
+ abi: entryPointGasSimulationsAbi,
373
+ functionName: "estimateGas",
374
+ data: encodedSimulationResult
375
+ });
376
+ }
377
+
378
+ // src/transports/methods/getUserOperationReceipt.ts
379
+ import {
380
+ decodeEventLog,
381
+ encodeEventTopics,
382
+ numberToHex,
383
+ parseEventLogs,
384
+ zeroAddress as zeroAddress2
385
+ } from "viem";
386
+ import { entryPoint07Abi } from "viem/account-abstraction";
387
+ var userOperationRevertReasonAbi = [
388
+ entryPoint07Abi.find(
389
+ (item) => item.type === "event" && item.name === "UserOperationRevertReason"
390
+ )
391
+ ];
392
+ var userOperationEventTopic = encodeEventTopics({
393
+ abi: entryPoint07Abi,
394
+ eventName: "UserOperationEvent"
395
+ });
396
+ function getUserOperationReceipt(userOpHash, receipt) {
397
+ const userOperationRevertReasonTopicEvent = encodeEventTopics({
398
+ abi: userOperationRevertReasonAbi
399
+ })[0];
400
+ let entryPoint = zeroAddress2;
401
+ let revertReason = void 0;
402
+ let startIndex = -1;
403
+ let endIndex = -1;
404
+ receipt.logs.forEach((log, index) => {
405
+ if (log?.topics[0] === userOperationEventTopic[0]) {
406
+ if (log.topics[1] === userOpHash) {
407
+ endIndex = index;
408
+ entryPoint = log.address;
409
+ } else if (endIndex === -1) {
410
+ startIndex = index;
411
+ }
412
+ }
413
+ if (log?.topics[0] === userOperationRevertReasonTopicEvent) {
414
+ if (log.topics[1] === userOpHash) {
415
+ const decodedLog = decodeEventLog({
416
+ abi: userOperationRevertReasonAbi,
417
+ data: log.data,
418
+ topics: log.topics
419
+ });
420
+ revertReason = decodedLog.args.revertReason;
421
+ }
422
+ }
423
+ });
424
+ if (endIndex === -1) {
425
+ throw new Error("fatal: no UserOperationEvent in logs");
426
+ }
427
+ const logs = receipt.logs.slice(startIndex + 1, endIndex);
428
+ const userOperationEvent = parseEventLogs({
429
+ abi: entryPoint07Abi,
430
+ eventName: "UserOperationEvent",
431
+ args: {
432
+ userOpHash
433
+ },
434
+ logs: receipt.logs
435
+ })[0];
436
+ let paymaster = userOperationEvent.args.paymaster;
437
+ paymaster = paymaster === zeroAddress2 ? void 0 : paymaster;
438
+ return {
439
+ userOpHash,
440
+ entryPoint,
441
+ sender: userOperationEvent.args.sender,
442
+ nonce: numberToHex(userOperationEvent.args.nonce),
443
+ paymaster,
444
+ actualGasUsed: numberToHex(userOperationEvent.args.actualGasUsed),
445
+ actualGasCost: numberToHex(userOperationEvent.args.actualGasCost),
446
+ success: userOperationEvent.args.success,
447
+ reason: revertReason,
448
+ logs,
449
+ receipt
450
+ };
451
+ }
452
+
453
+ // src/transports/wiresaw.ts
454
+ function wiresaw(transport) {
455
+ return (opts) => {
456
+ const { request: originalRequest, ...rest } = transport.wiresaw(opts);
457
+ let chainId = null;
458
+ const transactionHashes = {};
459
+ const transactionReceipts = {};
460
+ return {
461
+ ...rest,
462
+ // TODO: type `request` so we don't have to cast
463
+ async request(req) {
464
+ try {
465
+ if (req.method === "eth_chainId") {
466
+ if (chainId != null) return chainId;
467
+ if (transport.fallbackEth) {
468
+ const { request: fallbackRequest } = transport.fallbackEth(opts);
469
+ return chainId = await fallbackRequest(req);
470
+ }
471
+ return chainId = await originalRequest(req);
472
+ }
473
+ if (req.method === "eth_estimateGas") {
474
+ return await originalRequest({ ...req, method: "wiresaw_estimateGas" });
475
+ }
476
+ if (req.method === "eth_call") {
477
+ return await originalRequest({ ...req, method: "wiresaw_call" });
478
+ }
479
+ if (req.method === "eth_getTransactionCount") {
480
+ return await originalRequest({ ...req, method: "wiresaw_getTransactionCount" });
481
+ }
482
+ if (req.method === "eth_getTransactionReceipt") {
483
+ return await getTransactionReceipt(req.params[0]);
484
+ }
485
+ if (req.method === "eth_sendUserOperation") {
486
+ const { userOpHash, txHash } = await originalRequest({
487
+ ...req,
488
+ method: "wiresaw_sendUserOperation"
489
+ });
490
+ transactionHashes[userOpHash] = txHash;
491
+ return userOpHash;
492
+ }
493
+ if (req.method === "eth_getUserOperationReceipt") {
494
+ const userOpHash = req.params[0];
495
+ const knownTransactionHash = transactionHashes[userOpHash];
496
+ if (knownTransactionHash) {
497
+ const transactionReceipt = await getTransactionReceipt(knownTransactionHash);
498
+ if (transactionReceipt) {
499
+ return getUserOperationReceipt(userOpHash, transactionReceipt);
500
+ }
501
+ }
502
+ if (transport.fallbackBundler) {
503
+ const { request: fallbackRequest } = transport.fallbackBundler(opts);
504
+ return await fallbackRequest(req);
505
+ }
506
+ }
507
+ if (req.method === "eth_estimateUserOperationGas") {
508
+ try {
509
+ return await estimateUserOperationGas({
510
+ request: originalRequest,
511
+ params: req.params
512
+ });
513
+ } catch (e) {
514
+ console.warn("[wiresaw] estimating user operation gas failed, falling back to bundler", e);
515
+ }
516
+ if (transport.fallbackBundler) {
517
+ const { request: fallbackRequest } = transport.fallbackBundler(opts);
518
+ return await fallbackRequest(req);
519
+ }
520
+ }
521
+ if (req.method === "eth_blockNumber" || req.method === "eth_getBlockByNumber" || req.method === "eth_maxPriorityFeePerGas") {
522
+ if (transport.fallbackEth) {
523
+ const { request: fallbackRequest } = transport.fallbackEth(opts);
524
+ return await fallbackRequest(req);
525
+ }
526
+ return await originalRequest(req);
527
+ }
528
+ return await originalRequest(req);
529
+ } catch (e) {
530
+ console.warn("[wiresaw] request error", e);
531
+ const bundlerMethods = [
532
+ "eth_estimateUserOperationGas",
533
+ "eth_sendUserOperation",
534
+ "eth_getUserOperationReceipt"
535
+ ];
536
+ if (bundlerMethods.includes(req.method)) {
537
+ if (transport.fallbackBundler) {
538
+ const { request: fallbackRequest } = transport.fallbackBundler(opts);
539
+ console.warn("[wiresaw] falling back to bundler rpc", req);
540
+ return fallbackRequest(req);
541
+ }
542
+ }
543
+ if (transport.fallbackEth) {
544
+ const { request: fallbackRequest } = transport.fallbackEth(opts);
545
+ console.warn("[wiresaw] falling back to eth rpc", req);
546
+ return fallbackRequest(req);
547
+ }
548
+ throw e;
549
+ }
550
+ async function getTransactionReceipt(hash) {
551
+ if (transactionReceipts[hash]) return transactionReceipts[hash];
552
+ const pendingReceipt = await originalRequest({
553
+ ...req,
554
+ method: "wiresaw_getTransactionReceipt",
555
+ params: [hash]
556
+ });
557
+ if (pendingReceipt) {
558
+ transactionReceipts[hash] = pendingReceipt;
559
+ return pendingReceipt;
560
+ }
561
+ if (transport.fallbackEth) {
562
+ const { request: fallbackRequest } = transport.fallbackEth(opts);
563
+ const receipt = await fallbackRequest({
564
+ ...req,
565
+ method: "eth_getTransactionReceipt",
566
+ params: [hash]
567
+ });
568
+ if (receipt) {
569
+ transactionReceipts[hash] = receipt;
570
+ return receipt;
571
+ }
572
+ }
573
+ }
574
+ }
575
+ };
576
+ };
577
+ }
201
578
  export {
202
579
  ensureContract,
203
580
  ensureContractsDeployed,
204
581
  ensureDeployer,
205
582
  getContractAddress,
206
583
  getDeployer,
207
- waitForTransactions
584
+ waitForTransactions,
585
+ wiresaw
208
586
  };
209
587
  //# sourceMappingURL=internal.js.map