@latticexyz/common 2.2.22-bc1e7cb9cfb39fc8c81201b15f8f5528df778192 → 2.2.22-bc95ea094386f235971f1c5b98a34f41c161999d

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,9 +5,8 @@ import {
5
5
  debug
6
6
  } from "./chunk-73UWXFXB.js";
7
7
  import {
8
- bigIntMax,
9
8
  uniqueBy
10
- } from "./chunk-ETXWXV5T.js";
9
+ } from "./chunk-CHXZROA7.js";
11
10
 
12
11
  // src/waitForTransactions.ts
13
12
  import { waitForTransactionReceipt } from "viem/actions";
@@ -202,418 +201,12 @@ function getContractAddress({
202
201
  }) {
203
202
  return getCreate2Address2({ from: deployerAddress, bytecode, salt });
204
203
  }
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/entryPointSimulations.ts
220
- var entryPointSimulationsAbi = [
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
- internalType: "address",
277
- name: "target",
278
- type: "address"
279
- },
280
- {
281
- internalType: "bytes",
282
- name: "targetCallData",
283
- type: "bytes"
284
- }
285
- ],
286
- name: "simulateHandleOp",
287
- outputs: [
288
- {
289
- components: [
290
- {
291
- internalType: "uint256",
292
- name: "preOpGas",
293
- type: "uint256"
294
- },
295
- {
296
- internalType: "uint256",
297
- name: "paid",
298
- type: "uint256"
299
- },
300
- {
301
- internalType: "uint256",
302
- name: "accountValidationData",
303
- type: "uint256"
304
- },
305
- {
306
- internalType: "uint256",
307
- name: "paymasterValidationData",
308
- type: "uint256"
309
- },
310
- {
311
- internalType: "bool",
312
- name: "targetSuccess",
313
- type: "bool"
314
- },
315
- {
316
- internalType: "bytes",
317
- name: "targetResult",
318
- type: "bytes"
319
- }
320
- ],
321
- internalType: "struct IEntryPointSimulations.ExecutionResult",
322
- name: "",
323
- type: "tuple"
324
- }
325
- ],
326
- stateMutability: "nonpayable",
327
- type: "function"
328
- }
329
- ];
330
- var entryPointSimulationsDeployedBytecode = (
331
- // eslint-disable-next-line max-len
332
- "0x60806040526004361061016d5760003560e01c8063765e827f116100cb578063b760faf91161007f578063c3bce00911610059578063c3bce009146105ac578063dbed18e0146105d9578063fc7e286d146105f957600080fd5b8063b760faf914610564578063bb9fe6bf14610577578063c23a5cea1461058c57600080fd5b8063957122ab116100b0578063957122ab146104f757806397b2dcb9146105175780639b249f691461054457600080fd5b8063765e827f146104b7578063850aaf62146104d757600080fd5b8063205c28781161012257806335567e1a1161010757806335567e1a146102905780635287ce121461032557806370a082311461047457600080fd5b8063205c28781461025057806322cdde4c1461027057600080fd5b80630396cb60116101535780630396cb60146101e55780630bd28e3b146101f85780631b2e01b81461021857600080fd5b806242dc531461018257806301ffc9a7146101b557600080fd5b3661017d5761017b336106cb565b005b600080fd5b34801561018e57600080fd5b506101a261019d36600461423e565b6106ec565b6040519081526020015b60405180910390f35b3480156101c157600080fd5b506101d56101d0366004614304565b6108b7565b60405190151581526020016101ac565b61017b6101f3366004614346565b610a34565b34801561020457600080fd5b5061017b610213366004614394565b610dca565b34801561022457600080fd5b506101a26102333660046143af565b600160209081526000928352604080842090915290825290205481565b34801561025c57600080fd5b5061017b61026b3660046143e4565b610e12565b34801561027c57600080fd5b506101a261028b366004614429565b610fbc565b34801561029c57600080fd5b506101a26102ab3660046143af565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff8516845290915290819020549082901b7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161792915050565b34801561033157600080fd5b5061041261034036600461445e565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff1660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046dffffffffffffffffffffffffffff16928101929092526f01000000000000000000000000000000810463ffffffff166060830152730100000000000000000000000000000000000000900465ffffffffffff16608082015290565b6040516101ac9190600060a082019050825182526020830151151560208301526dffffffffffffffffffffffffffff604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b34801561048057600080fd5b506101a261048f36600461445e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156104c357600080fd5b5061017b6104d23660046144c0565b610ffe565b3480156104e357600080fd5b5061017b6104f2366004614517565b61117b565b34801561050357600080fd5b5061017b61051236600461456c565b611220565b34801561052357600080fd5b506105376105323660046145f1565b611378565b6040516101ac91906146c1565b34801561055057600080fd5b5061017b61055f366004614710565b6114c4565b61017b61057236600461445e565b6106cb565b34801561058357600080fd5b5061017b6115af565b34801561059857600080fd5b5061017b6105a736600461445e565b61178f565b3480156105b857600080fd5b506105cc6105c7366004614429565b611a7c565b6040516101ac9190614752565b3480156105e557600080fd5b5061017b6105f43660046144c0565b611d80565b34801561060557600080fd5b5061068161061436600461445e565b6000602081905290815260409020805460019091015460ff81169061010081046dffffffffffffffffffffffffffff16906f01000000000000000000000000000000810463ffffffff1690730100000000000000000000000000000000000000900465ffffffffffff1685565b6040805195865293151560208601526dffffffffffffffffffffffffffff9092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a0016101ac565b60015b60058110156106df576001016106ce565b6106e88261222c565b5050565b6000805a9050333014610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c7900000000000000000060448201526064015b60405180910390fd5b8451606081015160a082015181016127100160405a603f028161078557610785614832565b0410156107b6577fdeaddead0000000000000000000000000000000000000000000000000000000060005260206000fd5b8751600090156108575760006107d3846000015160008c86612282565b9050806108555760006107e761080061229a565b80519091501561084f57846000015173ffffffffffffffffffffffffffffffffffffffff168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201876020015184604051610846929190614861565b60405180910390a35b60019250505b505b600088608001515a86030190506108a7828a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506122c6915050565b955050505050505b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f60fc6b6e00000000000000000000000000000000000000000000000000000000148061094a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f915074d800000000000000000000000000000000000000000000000000000000145b8061099657507fffffffff0000000000000000000000000000000000000000000000000000000082167fcf28ef9700000000000000000000000000000000000000000000000000000000145b806109e257507fffffffff0000000000000000000000000000000000000000000000000000000082167f3e84f02100000000000000000000000000000000000000000000000000000000145b80610a2e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b33600090815260208190526040902063ffffffff8216610ab0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152606401610757565b600181015463ffffffff6f0100000000000000000000000000000090910481169083161015610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152606401610757565b6001810154600090610b6390349061010090046dffffffffffffffffffffffffffff166148a9565b905060008111610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152606401610757565b6dffffffffffffffffffffffffffff811115610c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152606401610757565b6040805160a08101825283548152600160208083018281526dffffffffffffffffffffffffffff86811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16730100000000000000000000000000000000000000027fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff979094166f0100000000000000000000000000000002969096167fffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff91909516610100027fffffffffffffffffffffffffffffffffff0000000000000000000000000000ff991515999099167fffffffffffffffffffffffffffffffffff00000000000000000000000000000090941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b33600090815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff851684529091528120805491610e0a836148bc565b919050555050565b3360009081526020819052604090208054821115610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152606401610757565b8054610e999083906148f4565b81556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610f46576040519150601f19603f3d011682016040523d82523d6000602084013e610f4b565b606091505b5050905080610fb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152606401610757565b50505050565b6000610fc7826124c2565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b6110066124db565b8160008167ffffffffffffffff81111561102257611022613fd1565b60405190808252806020026020018201604052801561105b57816020015b611048613e25565b8152602001906001900390816110405790505b50905060005b828110156110d457600082828151811061107d5761107d614907565b602002602001015190506000806110b8848a8a878181106110a0576110a0614907565b90506020028101906110b29190614936565b8561251c565b915091506110c9848383600061277b565b505050600101611061565b506040516000907fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972908290a160005b8381101561115e576111528188888481811061112157611121614907565b90506020028101906111339190614936565b85848151811061114557611145614907565b60200260200101516129d0565b90910190600101611103565b506111698482612da6565b5050506111766001600255565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1684846040516111a5929190614974565b600060405180830381855af49150503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b509150915081816040517f99410554000000000000000000000000000000000000000000000000000000008152600401610757929190614984565b83158015611243575073ffffffffffffffffffffffffffffffffffffffff83163b155b156112aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006044820152606401610757565b6014811061133c5760006112c1601482848661499f565b6112ca916149c9565b60601c9050803b60000361133a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f41413330207061796d6173746572206e6f74206465706c6f79656400000000006044820152606401610757565b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610757565b6113b36040518060c0016040528060008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b6113bb6124db565b6113c3613e25565b6113cc86612eed565b6000806113db6000898561251c565b9150915060006113ed60008a866129d0565b90506000606073ffffffffffffffffffffffffffffffffffffffff8a161561147f578973ffffffffffffffffffffffffffffffffffffffff168989604051611436929190614974565b6000604051808303816000865af19150503d8060008114611473576040519150601f19603f3d011682016040523d82523d6000602084013e611478565b606091505b5090925090505b6040518060c001604052808760800151815260200184815260200186815260200185815260200183151581526020018281525096505050505050506108af6001600255565b60006114e560065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3684846040518363ffffffff1660e01b815260040161151f929190614a5a565b6020604051808303816000875af115801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190614a6e565b6040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150602401610757565b336000908152602081905260408120600181015490916f0100000000000000000000000000000090910463ffffffff169003611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610757565b600181015460ff166116b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152606401610757565b60018101546000906116e0906f01000000000000000000000000000000900463ffffffff1642614a8b565b6001830180547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001673010000000000000000000000000000000000000065ffffffffffff84169081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046dffffffffffffffffffffffffffff168061181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152606401610757565b6001820154730100000000000000000000000000000000000000900465ffffffffffff166118a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152606401610757565b60018201544273010000000000000000000000000000000000000090910465ffffffffffff161115611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152606401610757565b6001820180547fffffffffffffff000000000000000000000000000000000000000000000000ff1690556040805173ffffffffffffffffffffffffffffffffffffffff851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a260008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611a0c576040519150601f19603f3d011682016040523d82523d6000602084013e611a11565b606091505b5050905080610fb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152606401610757565b611a84613ed7565b611a8c613e25565b611a9583612eed565b600080611aa46000868561251c565b845160e001516040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff95861683528282528483206001908101546dffffffffffffffffffffffffffff6101008083048216885263ffffffff6f010000000000000000000000000000009384900481169095528e51518951808b018b5288815280880189815291909b168852878752898820909401549081049091168952049091169052835180850190945281845283015293955091935090366000611b7460408b018b614ab1565b909250905060006014821015611b8b576000611ba6565b611b9960146000848661499f565b611ba2916149c9565b60601c5b6040805180820182526000808252602080830182815273ffffffffffffffffffffffffffffffffffffffff86168352908290529290206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff169091529091509350505050600085905060006040518060a001604052808960800151815260200189604001518152602001888152602001878152602001611c588a6060015190565b905260408051808201825260035473ffffffffffffffffffffffffffffffffffffffff908116825282518084019093526004548352600554602084810191909152820192909252919250831615801590611cc9575060018373ffffffffffffffffffffffffffffffffffffffff1614155b15611d4d5760408051808201825273ffffffffffffffffffffffffffffffffffffffff851680825282518084018452600080825260208083018281529382528181529490206001015461010081046dffffffffffffffffffffffffffff1682526f01000000000000000000000000000000900463ffffffff16909152909182015290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b611d886124db565b816000805b82811015611f7a5736868683818110611da857611da8614907565b9050602002810190611dba9190614b16565b9050366000611dc98380614b4a565b90925090506000611de0604085016020860161445e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821601611e81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152606401610757565b73ffffffffffffffffffffffffffffffffffffffff811615611f5e5773ffffffffffffffffffffffffffffffffffffffff8116632dd811338484611ec86040890189614ab1565b6040518563ffffffff1660e01b8152600401611ee79493929190614d02565b60006040518083038186803b158015611eff57600080fd5b505afa925050508015611f10575060015b611f5e576040517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610757565b611f6882876148a9565b95505060019093019250611d8d915050565b5060008167ffffffffffffffff811115611f9657611f96613fd1565b604051908082528060200260200182016040528015611fcf57816020015b611fbc613e25565b815260200190600190039081611fb45790505b5090506000805b848110156120ac5736888883818110611ff157611ff1614907565b90506020028101906120039190614b16565b90503660006120128380614b4a565b90925090506000612029604085016020860161445e565b90508160005b8181101561209a57600089898151811061204b5761204b614907565b6020026020010151905060008061206e8b8989878181106110a0576110a0614907565b9150915061207e8483838961277b565b8a612088816148bc565b9b50506001909301925061202f915050565b505060019094019350611fd692505050565b506040517fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97290600090a150600080805b858110156121e757368989838181106120f7576120f7614907565b90506020028101906121099190614b16565b905061211b604082016020830161445e565b73ffffffffffffffffffffffffffffffffffffffff167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d60405160405180910390a236600061216a8380614b4a565b90925090508060005b818110156121d6576121b58885858481811061219157612191614907565b90506020028101906121a39190614936565b8b8b8151811061114557611145614907565b6121bf90886148a9565b9650876121cb816148bc565b985050600101612173565b5050600190930192506120dc915050565b506040516000907f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d908290a261221d8682612da6565b50505050506111766001600255565b600061223882346130db565b90508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161178391815260200190565b6000806000845160208601878987f195945050505050565b60603d828111156122a85750815b604051602082018101604052818152816000602083013e9392505050565b6000805a8551909150600090816122dc8261311b565b60e083015190915073ffffffffffffffffffffffffffffffffffffffff81166123085782519350612403565b80935060008851111561240357868202955060028a600281111561232e5761232e614db9565b146124035760a08301516040517f7c627b2100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691637c627b2191612390908e908d908c908990600401614de8565b600060405180830381600088803b1580156123aa57600080fd5b5087f1935050505080156123bc575060015b6124035760006123cd61080061229a565b9050806040517fad7954bc0000000000000000000000000000000000000000000000000000000081526004016107579190614e4b565b5a60408a0151908603979097019682880296508681101561247f5760028b600281111561243257612432614db9565b03612455578096506124438a613145565b6124508a6000898b6131a1565b6124b4565b7fdeadaa510000000000000000000000000000000000000000000000000000000060005260206000fd5b86810361248c86826130db565b506000808d60028111156124a2576124a2614db9565b1490506124b18c828b8d6131a1565b50505b505050505050949350505050565b60006124cd82613229565b805190602001209050919050565b6002805403612516576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b60008060005a845190915061253186826132ee565b61253a86610fbc565b6020860152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff8111156125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606401610757565b60006126138460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b90506126228a8a8a8487613439565b96506126368460000151856020015161367a565b6126a557896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a8603111561271a57896040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b60e084015160609073ffffffffffffffffffffffffffffffffffffffff161561274e576127498b8b8b856136d5565b975090505b604089018290528060608a015260a08a01355a870301896080018181525050505050505050935093915050565b6000806127878561392c565b915091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461282957856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413234207369676e6174757265206572726f72000000000000000000000000606082015260800190565b801561289a57856040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b60006128a58561392c565b9250905073ffffffffffffffffffffffffffffffffffffffff81161561293057866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526014908201527f41413334207369676e6174757265206572726f72000000000000000000000000606082015260800190565b81156129c757866040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b50505050505050565b6000805a905060006129e3846060015190565b60405190915060009036826129fb60608a018a614ab1565b9150915060606000826003811115612a1257843591505b507f72288ed1000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601612b525760008b8b60200151604051602401612a75929190614e5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8dd7712f000000000000000000000000000000000000000000000000000000001790525190915030906242dc5390612b089084908f908d90602401614f44565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050925050612bc9565b3073ffffffffffffffffffffffffffffffffffffffff166242dc5385858d8b604051602401612b849493929190614f84565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505091505b602060008351602085016000305af19550600051985084604052505050505080612d9c5760003d80602003612c045760206000803e60005191505b507fdeaddead000000000000000000000000000000000000000000000000000000008103612c9757876040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052600f908201527f41413935206f7574206f66206761730000000000000000000000000000000000606082015260800190565b7fdeadaa51000000000000000000000000000000000000000000000000000000008103612d0157600086608001515a612cd090876148f4565b612cda91906148a9565b6040880151909150612ceb88613145565b612cf888600083856131a1565b9550612d9a9050565b8551805160208089015192015173ffffffffffffffffffffffffffffffffffffffff90911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479290612d5561080061229a565b604051612d63929190614861565b60405180910390a3600086608001515a612d7d90876148f4565b612d8791906148a9565b9050612d9660028886846122c6565b9550505b505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152606401610757565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612e7d576040519150601f19603f3d011682016040523d82523d6000602084013e612e82565b606091505b5050905080611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152606401610757565b612fed6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f01000000000000000000000000000000000000000000000000000000000000006036820152600090603701604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529190528051602090910120600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550565b3063957122ab6130006040840184614ab1565b61300d602086018661445e565b61301a60e0870187614ab1565b6040518663ffffffff1660e01b815260040161303a959493929190614fbb565b60006040518083038186803b15801561305257600080fd5b505afa925050508015613063575060015b6130d85761306f61500a565b806308c379a0036130cc5750613083615026565b8061308e57506130ce565b8051156106e8576000816040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757929190614861565b505b3d6000803e3d6000fd5b50565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054829061310f9085906148a9565b91829055509392505050565b61010081015161012082015160009190808203613139575092915050565b6108af8248830161397f565b805180516020808401519281015160405190815273ffffffffffffffffffffffffffffffffffffffff90921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e0810151815160208088015193015160405173ffffffffffffffffffffffffffffffffffffffff9384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f9161321b9189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b60608135602083013560006132496132446040870187614ab1565b613997565b9050600061325d6132446060880188614ab1565b9050608086013560a087013560c0880135600061328061324460e08c018c614ab1565b6040805173ffffffffffffffffffffffffffffffffffffffff9a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b6132fb602083018361445e565b73ffffffffffffffffffffffffffffffffffffffff168152602082810135908201526fffffffffffffffffffffffffffffffff6080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c61012082015236600061337460e0850185614ab1565b9092509050801561341e5760348110156133ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152606401610757565b6133f482826139aa565b60a0860152608085015273ffffffffffffffffffffffffffffffffffffffff1660e0840152610fb6565b600060e084018190526080840181905260a084015250505050565b8251805160009190613458888761345360408b018b614ab1565b613a1b565b60e0820151600073ffffffffffffffffffffffffffffffffffffffff82166134b65773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548781116134af578088036134b2565b60005b9150505b60208801516040517f19822f7c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516916319822f7c918991613512918e919087906004016150ce565b60206040518083038160008887f19350505050801561356c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613569918101906150f3565b60015b6135b0578961357c61080061229a565b6040517f65c8fd4d00000000000000000000000000000000000000000000000000000000815260040161075792919061510c565b945073ffffffffffffffffffffffffffffffffffffffff821661366d5773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020805480891115613667578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604080832084821c808552925282208054849167ffffffffffffffff83169190856136c7836148bc565b909155501495945050505050565b60606000805a855160e081015173ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090208054939450919290919087811015613784578a6040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b87810382600001819055506000846080015190508373ffffffffffffffffffffffffffffffffffffffff166352b7512c828d8d602001518d6040518563ffffffff1660e01b81526004016137da939291906150ce565b60006040518083038160008887f19350505050801561383957506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526138369190810190615159565b60015b61387d578b61384961080061229a565b6040517f65c8fd4d0000000000000000000000000000000000000000000000000000000081526004016107579291906151e5565b9098509650805a8703111561391d578b6040517f220266b60000000000000000000000000000000000000000000000000000000081526004016107579181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760608201527f61734c696d697400000000000000000000000000000000000000000000000000608082015260a00190565b50505050505094509492505050565b6000808260000361394257506000928392509050565b600061394d84613da7565b9050806040015165ffffffffffff164211806139745750806020015165ffffffffffff1642105b905194909350915050565b600081831061398e5781613990565b825b9392505050565b6000604051828085833790209392505050565b600080806139bb601482868861499f565b6139c4916149c9565b60601c6139d560246014878961499f565b6139de91615232565b60801c6139ef60346024888a61499f565b6139f891615232565b9194506fffffffffffffffffffffffffffffffff16925060801c90509250925092565b8015610fb65782515173ffffffffffffffffffffffffffffffffffffffff81163b15613aac57846040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b6000613acd60065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663570e1a3686600001516040015186866040518463ffffffff1660e01b8152600401613b10929190614a5a565b60206040518083038160008887f1158015613b2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b549190614a6e565b905073ffffffffffffffffffffffffffffffffffffffff8116613bdc57856040517f220266b6000000000000000000000000000000000000000000000000000000008152600401610757918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613c7957856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b8073ffffffffffffffffffffffffffffffffffffffff163b600003613d0257856040517f220266b600000000000000000000000000000000000000000000000000000000815260040161075791815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b6000613d11601482868861499f565b613d1a916149c9565b60601c90508273ffffffffffffffffffffffffffffffffffffffff1686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051613d9692919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003613de3575065ffffffffffff5b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff909316835260d09490941c602083015265ffffffffffff16928101929092525090565b6040518060a00160405280613eb2604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b6040518060a00160405280613f146040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001613f36604051806040016040528060008152602001600081525090565b8152602001613f58604051806040016040528060008152602001600081525090565b8152602001613f7a604051806040016040528060008152602001600081525090565b8152602001613f87613f8c565b905290565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613f87604051806040016040528060008152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810181811067ffffffffffffffff8211171561402057614020613fd1565b60405250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561406a5761406a613fd1565b6040525050565b604051610140810167ffffffffffffffff8111828210171561409557614095613fd1565b60405290565b600067ffffffffffffffff8211156140b5576140b5613fd1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b73ffffffffffffffffffffffffffffffffffffffff811681146130d857600080fd5b803561410e816140e1565b919050565b60008183036101c081121561412757600080fd5b60405161413381614000565b8092506101408083121561414657600080fd5b61414e614071565b925061415985614103565b83526020850135602084015260408501356040840152606085013560608401526080850135608084015260a085013560a084015260c085013560c08401526141a360e08601614103565b60e084015261010085810135908401526101208086013590840152918152908301356020820152610160830135604082015261018083013560608201526101a090920135608090920191909152919050565b60008083601f84011261420757600080fd5b50813567ffffffffffffffff81111561421f57600080fd5b60208301915083602082850101111561423757600080fd5b9250929050565b600080600080610200858703121561425557600080fd5b843567ffffffffffffffff8082111561426d57600080fd5b818701915087601f83011261428157600080fd5b813561428c8161409b565b6040516142998282614026565b8281528a60208487010111156142ae57600080fd5b826020860160208301376000602084830101528098505050506142d48860208901614113565b94506101e08701359150808211156142eb57600080fd5b506142f8878288016141f5565b95989497509550505050565b60006020828403121561431657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461399057600080fd5b60006020828403121561435857600080fd5b813563ffffffff8116811461399057600080fd5b803577ffffffffffffffffffffffffffffffffffffffffffffffff8116811461410e57600080fd5b6000602082840312156143a657600080fd5b6139908261436c565b600080604083850312156143c257600080fd5b82356143cd816140e1565b91506143db6020840161436c565b90509250929050565b600080604083850312156143f757600080fd5b8235614402816140e1565b946020939093013593505050565b6000610120828403121561442357600080fd5b50919050565b60006020828403121561443b57600080fd5b813567ffffffffffffffff81111561445257600080fd5b6108af84828501614410565b60006020828403121561447057600080fd5b8135613990816140e1565b60008083601f84011261448d57600080fd5b50813567ffffffffffffffff8111156144a557600080fd5b6020830191508360208260051b850101111561423757600080fd5b6000806000604084860312156144d557600080fd5b833567ffffffffffffffff8111156144ec57600080fd5b6144f88682870161447b565b909450925050602084013561450c816140e1565b809150509250925092565b60008060006040848603121561452c57600080fd5b8335614537816140e1565b9250602084013567ffffffffffffffff81111561455357600080fd5b61455f868287016141f5565b9497909650939450505050565b60008060008060006060868803121561458457600080fd5b853567ffffffffffffffff8082111561459c57600080fd5b6145a889838a016141f5565b9097509550602088013591506145bd826140e1565b909350604087013590808211156145d357600080fd5b506145e0888289016141f5565b969995985093965092949392505050565b6000806000806060858703121561460757600080fd5b843567ffffffffffffffff8082111561461f57600080fd5b61462b88838901614410565b95506020870135915061463d826140e1565b909350604086013590808211156142eb57600080fd5b60005b8381101561466e578181015183820152602001614656565b50506000910152565b6000815180845261468f816020860160208601614653565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152815160208201526020820151604082015260408201516060820152606082015160808201526080820151151560a0820152600060a083015160c0808401526108af60e0840182614677565b6000806020838503121561472357600080fd5b823567ffffffffffffffff81111561473a57600080fd5b614746858286016141f5565b90969095509350505050565b602080825282516101408383015280516101608401529081015161018083015260408101516101a083015260608101516101c08301526080015160a06101e08301526000906147a5610200840182614677565b905060208401516147c3604085018280518252602090810151910152565b506040840151805160808581019190915260209182015160a08601526060860151805160c087015282015160e0860152850151805173ffffffffffffffffffffffffffffffffffffffff1661010086015280820151805161012087015290910151610140850152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8281526040602082015260006108af6040830184614677565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a2e57610a2e61487a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148ed576148ed61487a565b5060010190565b81810381811115610a2e57610a2e61487a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee183360301811261496a57600080fd5b9190910192915050565b8183823760009101908152919050565b82151581526040602082015260006108af6040830184614677565b600080858511156149af57600080fd5b838611156149bc57600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015614a095780818660140360031b1b83161692505b505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006108af602083018486614a11565b600060208284031215614a8057600080fd5b8151613990816140e1565b65ffffffffffff818116838216019080821115614aaa57614aaa61487a565b5092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614ae657600080fd5b83018035915067ffffffffffffffff821115614b0157600080fd5b60200191503681900382131561423757600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261496a57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614b7f57600080fd5b83018035915067ffffffffffffffff821115614b9a57600080fd5b6020019150600581901b360382131561423757600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614be757600080fd5b830160208101925035905067ffffffffffffffff811115614c0757600080fd5b80360382131561423757600080fd5b6000610120614c4284614c2885614103565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208301356020850152614c596040840184614bb2565b826040870152614c6c8387018284614a11565b92505050614c7d6060840184614bb2565b8583036060870152614c90838284614a11565b925050506080830135608085015260a083013560a085015260c083013560c0850152614cbf60e0840184614bb2565b85830360e0870152614cd2838284614a11565b92505050610100614ce581850185614bb2565b86840383880152614cf7848284614a11565b979650505050505050565b6040808252810184905260006060600586901b830181019083018783805b89811015614da2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18c3603018112614d80578283fd5b614d8c868d8301614c16565b9550506020938401939290920191600101614d20565b505050508281036020840152614cf7818587614a11565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060038610614e21577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b85825260806020830152614e386080830186614677565b6040830194909452506060015292915050565b6020815260006139906020830184614677565b604081526000614e716040830185614c16565b90508260208301529392505050565b8051805173ffffffffffffffffffffffffffffffffffffffff1683526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e0810151614eff60e085018273ffffffffffffffffffffffffffffffffffffffff169052565b5061010081810151908401526101209081015190830152602081015161014083015260408101516101608301526060810151610180830152608001516101a090910152565b6000610200808352614f5881840187614677565b9050614f676020840186614e80565b8281036101e0840152614f7a8185614677565b9695505050505050565b6000610200808352614f998184018789614a11565b9050614fa86020840186614e80565b8281036101e0840152614cf78185614677565b606081526000614fcf606083018789614a11565b73ffffffffffffffffffffffffffffffffffffffff861660208401528281036040840152614ffe818587614a11565b98975050505050505050565b600060033d11156150235760046000803e5060005160e01c5b90565b600060443d10156150345790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff816024840111818411171561508257505050505090565b828501915081518181111561509a5750505050505090565b843d87010160208285010111156150b45750505050505090565b6150c360208286010187614026565b509095945050505050565b6060815260006150e16060830186614c16565b60208301949094525060400152919050565b60006020828403121561510557600080fd5b5051919050565b82815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108af60a0830184614677565b6000806040838503121561516c57600080fd5b825167ffffffffffffffff81111561518357600080fd5b8301601f8101851361519457600080fd5b805161519f8161409b565b6040516151ac8282614026565b8281528760208486010111156151c157600080fd5b6151d2836020830160208701614653565b6020969096015195979596505050505050565b82815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015260a0604082015260006108af60a0830184614677565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008135818116916010851015614a095760109490940360031b84901b169092169291505056fea2646970667358221220d91a0462bc7bb528fdf3ea5e6747c873aa8d3c3eb82ba653aef7f1948cad609264736f6c63430008170033"
333
- );
334
-
335
- // src/transports/methods/estimateUserOperationGas.ts
336
- async function estimateUserOperationGas({
337
- request,
338
- params
339
- }) {
340
- const userOp = formatUserOperation(params[0]);
341
- const hasPaymaster = userOp.paymaster != null && userOp.paymaster !== zeroAddress;
342
- const [simulationResult, simulationResultWithPaymaster] = await Promise.all([
343
- simulateHandleOp({ userOp, removePaymaster: hasPaymaster, request }),
344
- hasPaymaster ? simulateHandleOp({ userOp, request }) : void 0
345
- ]);
346
- const gasEstimates = getGasEstimates({ userOp, simulationResult, simulationResultWithPaymaster });
347
- return formatUserOperationRequest({
348
- ...gasEstimates
349
- });
350
- }
351
- async function simulateHandleOp({
352
- userOp,
353
- removePaymaster,
354
- request
355
- }) {
356
- if (removePaymaster) {
357
- const {
358
- /* eslint-disable */
359
- paymaster,
360
- paymasterData,
361
- paymasterPostOpGasLimit,
362
- paymasterVerificationGasLimit,
363
- /* eslint-enable */
364
- ...userOpWithoutPaymaster
365
- } = userOp;
366
- userOp = userOpWithoutPaymaster;
367
- }
368
- const paymasterGasLimits = userOp.paymaster && !removePaymaster ? {
369
- paymasterPostOpGasLimit: 2000000n,
370
- paymasterVerificationGasLimit: 5000000n
371
- } : {};
372
- const simulationUserOp = {
373
- ...userOp,
374
- preVerificationGas: 0n,
375
- callGasLimit: 10000000n,
376
- verificationGasLimit: 10000000n,
377
- // https://github.com/pimlicolabs/alto/blob/471998695e5ec75ef88dda3f8a534f47c24bcd1a/src/rpc/methods/eth_estimateUserOperationGas.ts#L117
378
- maxPriorityFeePerGas: userOp.maxFeePerGas,
379
- ...paymasterGasLimits
380
- };
381
- const packedUserOp = toPackedUserOperation(simulationUserOp);
382
- const simulationData = encodeFunctionData({
383
- abi: entryPointSimulationsAbi,
384
- functionName: "simulateHandleOp",
385
- args: [packedUserOp, zeroAddress, "0x"]
386
- });
387
- const senderBalanceOverride = removePaymaster ? { [userOp.sender]: { balance: "0xFFFFFFFFFFFFFFFFFFFF" } } : {};
388
- const simulationParams = [
389
- {
390
- to: entryPoint07Address,
391
- data: simulationData
392
- },
393
- "pending",
394
- {
395
- [entryPoint07Address]: { code: entryPointSimulationsDeployedBytecode },
396
- ...senderBalanceOverride
397
- }
398
- ];
399
- const encodedSimulationResult = await request({
400
- method: "wiresaw_call",
401
- params: simulationParams
402
- });
403
- return decodeFunctionResult({
404
- abi: entryPointSimulationsAbi,
405
- functionName: "simulateHandleOp",
406
- data: encodedSimulationResult
407
- });
408
- }
409
- function getGasEstimates({
410
- userOp,
411
- simulationResult,
412
- simulationResultWithPaymaster
413
- }) {
414
- const hasPaymaster = simulationResultWithPaymaster != null;
415
- const verificationGas = hasPaymaster ? simulationResultWithPaymaster.preOpGas : simulationResult.preOpGas;
416
- const paymasterVerificationGas = hasPaymaster ? simulationResultWithPaymaster.preOpGas - simulationResult.preOpGas : 0n;
417
- const callGas = simulationResult.paid / userOp.maxFeePerGas - simulationResult.preOpGas;
418
- const paymasterPostOpGas = hasPaymaster ? simulationResultWithPaymaster.paid / userOp.maxFeePerGas - simulationResultWithPaymaster.preOpGas - callGas : 0n;
419
- const verificationGasLimit = verificationGas * 2n;
420
- const callGasLimit = bigIntMax(callGas * 2n, 9000n);
421
- const paymasterVerificationGasLimit = paymasterVerificationGas * 2n;
422
- const paymasterPostOpGasLimit = paymasterPostOpGas * 2n;
423
- return {
424
- verificationGasLimit,
425
- callGasLimit,
426
- paymasterVerificationGasLimit,
427
- paymasterPostOpGasLimit,
428
- preVerificationGas: 20000n
429
- };
430
- }
431
-
432
- // src/transports/methods/getUserOperationReceipt.ts
433
- import {
434
- decodeEventLog,
435
- encodeEventTopics,
436
- numberToHex,
437
- parseEventLogs,
438
- zeroAddress as zeroAddress2
439
- } from "viem";
440
- import { entryPoint07Abi } from "viem/account-abstraction";
441
- var userOperationRevertReasonAbi = [
442
- entryPoint07Abi.find(
443
- (item) => item.type === "event" && item.name === "UserOperationRevertReason"
444
- )
445
- ];
446
- var userOperationEventTopic = encodeEventTopics({
447
- abi: entryPoint07Abi,
448
- eventName: "UserOperationEvent"
449
- });
450
- function getUserOperationReceipt(userOpHash, receipt) {
451
- const userOperationRevertReasonTopicEvent = encodeEventTopics({
452
- abi: userOperationRevertReasonAbi
453
- })[0];
454
- let entryPoint = zeroAddress2;
455
- let revertReason = void 0;
456
- let startIndex = -1;
457
- let endIndex = -1;
458
- receipt.logs.forEach((log, index) => {
459
- if (log?.topics[0] === userOperationEventTopic[0]) {
460
- if (log.topics[1] === userOpHash) {
461
- endIndex = index;
462
- entryPoint = log.address;
463
- } else if (endIndex === -1) {
464
- startIndex = index;
465
- }
466
- }
467
- if (log?.topics[0] === userOperationRevertReasonTopicEvent) {
468
- if (log.topics[1] === userOpHash) {
469
- const decodedLog = decodeEventLog({
470
- abi: userOperationRevertReasonAbi,
471
- data: log.data,
472
- topics: log.topics
473
- });
474
- revertReason = decodedLog.args.revertReason;
475
- }
476
- }
477
- });
478
- if (endIndex === -1) {
479
- throw new Error("fatal: no UserOperationEvent in logs");
480
- }
481
- const logs = receipt.logs.slice(startIndex + 1, endIndex);
482
- const userOperationEvent = parseEventLogs({
483
- abi: entryPoint07Abi,
484
- eventName: "UserOperationEvent",
485
- args: {
486
- userOpHash
487
- },
488
- logs: receipt.logs
489
- })[0];
490
- let paymaster = userOperationEvent.args.paymaster;
491
- paymaster = paymaster === zeroAddress2 ? void 0 : paymaster;
492
- return {
493
- userOpHash,
494
- entryPoint,
495
- sender: userOperationEvent.args.sender,
496
- nonce: numberToHex(userOperationEvent.args.nonce),
497
- paymaster,
498
- actualGasUsed: numberToHex(userOperationEvent.args.actualGasUsed),
499
- actualGasCost: numberToHex(userOperationEvent.args.actualGasCost),
500
- success: userOperationEvent.args.success,
501
- reason: revertReason,
502
- logs,
503
- receipt
504
- };
505
- }
506
-
507
- // src/transports/wiresaw.ts
508
- function wiresaw(transport) {
509
- return (opts) => {
510
- const { request: originalRequest, ...rest } = transport.wiresaw(opts);
511
- let chainId = null;
512
- const transactionHashes = {};
513
- const transactionReceipts = {};
514
- return {
515
- ...rest,
516
- // TODO: type `request` so we don't have to cast
517
- async request(req) {
518
- if (req.method === "eth_chainId") {
519
- if (chainId != null) return chainId;
520
- if (transport.fallbackEth) {
521
- const { request: fallbackRequest } = transport.fallbackEth(opts);
522
- return chainId = await fallbackRequest(req);
523
- }
524
- return chainId = await originalRequest(req);
525
- }
526
- if (req.method === "eth_estimateGas") {
527
- return originalRequest({ ...req, method: "wiresaw_estimateGas" });
528
- }
529
- if (req.method === "eth_call") {
530
- return originalRequest({ ...req, method: "wiresaw_call" });
531
- }
532
- if (req.method === "eth_getTransactionCount") {
533
- return originalRequest({ ...req, method: "wiresaw_getTransactionCount" });
534
- }
535
- if (req.method === "eth_getTransactionReceipt") {
536
- return getTransactionReceipt(req.params[0]);
537
- }
538
- if (req.method === "eth_sendUserOperation") {
539
- const { userOpHash, txHash } = await originalRequest({
540
- ...req,
541
- method: "wiresaw_sendUserOperation"
542
- });
543
- transactionHashes[userOpHash] = txHash;
544
- return userOpHash;
545
- }
546
- if (req.method === "eth_getUserOperationReceipt") {
547
- const userOpHash = req.params[0];
548
- const knownTransactionHash = transactionHashes[userOpHash];
549
- if (knownTransactionHash) {
550
- const transactionReceipt = await getTransactionReceipt(knownTransactionHash);
551
- if (transactionReceipt) {
552
- return getUserOperationReceipt(userOpHash, transactionReceipt);
553
- }
554
- }
555
- if (transport.fallbackBundler) {
556
- const { request: fallbackRequest } = transport.fallbackBundler(opts);
557
- return fallbackRequest(req);
558
- }
559
- }
560
- if (req.method === "eth_estimateUserOperationGas") {
561
- try {
562
- return await estimateUserOperationGas({
563
- request: originalRequest,
564
- params: req.params
565
- });
566
- } catch (e) {
567
- console.warn("[wiresaw] estimating user operation gas failed, falling back to bundler", e);
568
- }
569
- if (transport.fallbackBundler) {
570
- const { request: fallbackRequest } = transport.fallbackBundler(opts);
571
- return fallbackRequest(req);
572
- }
573
- }
574
- if (req.method === "eth_blockNumber" || req.method === "eth_getBlockByNumber" || req.method === "eth_maxPriorityFeePerGas") {
575
- if (transport.fallbackEth) {
576
- const { request: fallbackRequest } = transport.fallbackEth(opts);
577
- return fallbackRequest(req);
578
- }
579
- return originalRequest(req);
580
- }
581
- return originalRequest(req);
582
- async function getTransactionReceipt(hash) {
583
- if (transactionReceipts[hash]) return transactionReceipts[hash];
584
- const pendingReceipt = await originalRequest({
585
- ...req,
586
- method: "wiresaw_getTransactionReceipt",
587
- params: [hash]
588
- });
589
- if (pendingReceipt) {
590
- transactionReceipts[hash] = pendingReceipt;
591
- return pendingReceipt;
592
- }
593
- if (transport.fallbackEth) {
594
- const { request: fallbackRequest } = transport.fallbackEth(opts);
595
- const receipt = await fallbackRequest({
596
- ...req,
597
- method: "eth_getTransactionReceipt",
598
- params: [hash]
599
- });
600
- if (receipt) {
601
- transactionReceipts[hash] = receipt;
602
- return receipt;
603
- }
604
- }
605
- }
606
- }
607
- };
608
- };
609
- }
610
204
  export {
611
205
  ensureContract,
612
206
  ensureContractsDeployed,
613
207
  ensureDeployer,
614
208
  getContractAddress,
615
209
  getDeployer,
616
- waitForTransactions,
617
- wiresaw
210
+ waitForTransactions
618
211
  };
619
212
  //# sourceMappingURL=internal.js.map