@matterlabs/zksync-js 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/adapters/ethers/client.cjs +1640 -236
  2. package/dist/adapters/ethers/client.cjs.map +1 -1
  3. package/dist/adapters/ethers/client.d.ts +11 -0
  4. package/dist/adapters/ethers/client.js +5 -5
  5. package/dist/adapters/ethers/index.cjs +4395 -1525
  6. package/dist/adapters/ethers/index.cjs.map +1 -1
  7. package/dist/adapters/ethers/index.d.ts +4 -0
  8. package/dist/adapters/ethers/index.js +8 -8
  9. package/dist/adapters/ethers/resources/contracts/types.d.ts +15 -0
  10. package/dist/adapters/ethers/resources/deposits/context.d.ts +3 -3
  11. package/dist/adapters/ethers/resources/deposits/services/gas.d.ts +2 -2
  12. package/dist/adapters/ethers/resources/deposits/services/verification.d.ts +1 -1
  13. package/dist/adapters/ethers/resources/interop/address.d.ts +18 -0
  14. package/dist/adapters/ethers/resources/interop/attributes/resource.d.ts +9 -0
  15. package/dist/adapters/ethers/resources/interop/context.d.ts +36 -0
  16. package/dist/adapters/ethers/resources/interop/index.d.ts +63 -0
  17. package/dist/adapters/ethers/resources/interop/resolvers.d.ts +9 -0
  18. package/dist/adapters/ethers/resources/interop/routes/direct.d.ts +2 -0
  19. package/dist/adapters/ethers/resources/interop/routes/indirect.d.ts +2 -0
  20. package/dist/adapters/ethers/resources/interop/routes/types.d.ts +13 -0
  21. package/dist/adapters/ethers/resources/interop/services/erc20.d.ts +15 -0
  22. package/dist/adapters/ethers/resources/interop/services/finalization/bundle.d.ts +15 -0
  23. package/dist/adapters/ethers/resources/interop/services/finalization/data-fetchers.d.ts +17 -0
  24. package/dist/adapters/ethers/resources/interop/services/finalization/decoders.d.ts +12 -0
  25. package/dist/adapters/ethers/resources/interop/services/finalization/index.d.ts +13 -0
  26. package/dist/adapters/ethers/resources/interop/services/finalization/polling.d.ts +7 -0
  27. package/dist/adapters/ethers/resources/interop/services/finalization/status.d.ts +5 -0
  28. package/dist/adapters/ethers/resources/interop/services/finalization/topics.d.ts +6 -0
  29. package/dist/adapters/ethers/resources/interop/services/starter-data.d.ts +6 -0
  30. package/dist/adapters/ethers/resources/interop/types.d.ts +16 -0
  31. package/dist/adapters/ethers/resources/withdrawals/context.d.ts +2 -2
  32. package/dist/adapters/ethers/sdk.cjs +3357 -917
  33. package/dist/adapters/ethers/sdk.cjs.map +1 -1
  34. package/dist/adapters/ethers/sdk.d.ts +10 -8
  35. package/dist/adapters/ethers/sdk.js +6 -6
  36. package/dist/adapters/viem/client.cjs +685 -31
  37. package/dist/adapters/viem/client.cjs.map +1 -1
  38. package/dist/adapters/viem/client.js +5 -3
  39. package/dist/adapters/viem/index.cjs +282 -203
  40. package/dist/adapters/viem/index.cjs.map +1 -1
  41. package/dist/adapters/viem/index.d.ts +1 -0
  42. package/dist/adapters/viem/index.js +8 -7
  43. package/dist/adapters/viem/resources/deposits/context.d.ts +3 -3
  44. package/dist/adapters/viem/resources/deposits/services/gas.d.ts +2 -2
  45. package/dist/adapters/viem/resources/deposits/services/verification.d.ts +1 -1
  46. package/dist/adapters/viem/resources/withdrawals/context.d.ts +2 -2
  47. package/dist/adapters/viem/sdk.cjs +39 -58
  48. package/dist/adapters/viem/sdk.cjs.map +1 -1
  49. package/dist/adapters/viem/sdk.js +5 -5
  50. package/dist/{chunk-LNIEQ7AN.js → chunk-5AG6B7UX.js} +36 -60
  51. package/dist/{chunk-NODVRI3E.js → chunk-AIFHAPJC.js} +8 -2
  52. package/dist/{chunk-3GFCAGGI.js → chunk-FBKBF7YM.js} +1533 -1434
  53. package/dist/{chunk-L343N56B.js → chunk-IYEDEUXG.js} +1 -1
  54. package/dist/chunk-JNWHQJU3.js +209 -0
  55. package/dist/{chunk-ODMBZ2VX.js → chunk-KLNFDFLA.js} +42 -31
  56. package/dist/{chunk-NVULC4JB.js → chunk-QDJOEVGJ.js} +2 -2
  57. package/dist/{chunk-63DNJXS3.js → chunk-RRKVUW3G.js} +1375 -75
  58. package/dist/{chunk-5V2JRM5J.js → chunk-SRPKTXIF.js} +1 -1
  59. package/dist/{chunk-SHQQI3UD.js → chunk-UIXU35ZU.js} +1 -1
  60. package/dist/{chunk-QZVYN3YA.js → chunk-ZVHFVUDE.js} +2 -37
  61. package/dist/core/index.cjs +3 -2
  62. package/dist/core/index.cjs.map +1 -1
  63. package/dist/core/index.js +4 -4
  64. package/dist/core/resources/interop/attributes/types.d.ts +0 -2
  65. package/dist/core/resources/interop/finalization.d.ts +0 -1
  66. package/dist/core/types/errors.d.ts +15 -5
  67. package/dist/core/types/fees.d.ts +9 -0
  68. package/dist/core/types/flows/interop.d.ts +12 -36
  69. package/dist/core/types/primitives.d.ts +1 -0
  70. package/dist/index.cjs +3 -2
  71. package/dist/index.cjs.map +1 -1
  72. package/dist/index.js +4 -4
  73. package/package.json +1 -1
  74. package/dist/chunk-FGXRG2JS.js +0 -142
@@ -3,6 +3,7 @@
3
3
  var viem = require('viem');
4
4
  var sha3 = require('@noble/hashes/sha3');
5
5
  var utils = require('@noble/hashes/utils');
6
+ var ethers = require('ethers');
6
7
 
7
8
  // src/adapters/viem/client.ts
8
9
 
@@ -199,12 +200,13 @@ if (kInspect) {
199
200
  enumerable: false
200
201
  });
201
202
  }
202
- function isZKsyncError(e) {
203
+ function isZKsyncError(e, opts) {
203
204
  if (!e || typeof e !== "object") return false;
204
205
  const maybe = e;
205
206
  if (!("envelope" in maybe)) return false;
206
207
  const envelope = maybe.envelope;
207
- return typeof envelope?.type === "string" && typeof envelope?.message === "string";
208
+ if (typeof envelope?.type !== "string" || typeof envelope?.message !== "string") return false;
209
+ return true;
208
210
  }
209
211
  function isReceiptNotFound(e) {
210
212
  const chain = [];
@@ -251,6 +253,8 @@ function isReceiptNotFound(e) {
251
253
  })();
252
254
  return MSG_RE.test(raw);
253
255
  }
256
+ var OP_CLIENT = {
257
+ ensureAddresses: "client.ensureAddresses"};
254
258
  var OP_DEPOSITS = {
255
259
  // high-level flow ops
256
260
  quote: "deposits.quote",
@@ -327,11 +331,9 @@ var OP_WITHDRAWALS = {
327
331
  rawReceipt: "withdrawals.finalize.fetchParams:rawReceipt",
328
332
  messengerIndex: "withdrawals.finalize.fetchParams:messengerIndex",
329
333
  proof: "withdrawals.finalize.fetchParams:proof",
330
- network: "withdrawals.finalize.fetchParams:network",
331
- ensureAddresses: "withdrawals.finalize.fetchParams:ensureAddresses"
334
+ network: "withdrawals.finalize.fetchParams:network"
332
335
  },
333
336
  readiness: {
334
- ensureAddresses: "withdrawals.finalize.readiness:ensureAddresses",
335
337
  isFinalized: "withdrawals.finalize.readiness:isWithdrawalFinalized",
336
338
  simulate: "withdrawals.finalize.readiness:simulate"
337
339
  },
@@ -5269,7 +5271,166 @@ var MailboxABI = [
5269
5271
  ];
5270
5272
  var Mailbox_default = MailboxABI;
5271
5273
 
5274
+ // src/core/errors/error-ops.ts
5275
+ function resolveMessage(op, msg) {
5276
+ if (!msg) return `Error during ${op}.`;
5277
+ return typeof msg === "function" ? msg() : msg;
5278
+ }
5279
+ function createErrorOps(decodeRevert3) {
5280
+ function toZKsyncError3(type, base, err) {
5281
+ if (isZKsyncError(err)) return err;
5282
+ const revert = decodeRevert3 ? decodeRevert3(err) : void 0;
5283
+ return createError(type, { ...base, ...revert ? { revert } : {}, cause: shapeCause(err) });
5284
+ }
5285
+ function createErrorHandlers3(resource) {
5286
+ async function run(kind, operation, fn, opts) {
5287
+ try {
5288
+ return await fn();
5289
+ } catch (e) {
5290
+ if (isZKsyncError(e)) throw e;
5291
+ const message = resolveMessage(operation, opts?.message);
5292
+ throw toZKsyncError3(kind, { resource, operation, context: opts?.ctx ?? {}, message }, e);
5293
+ }
5294
+ }
5295
+ function wrap3(operation, fn, opts) {
5296
+ return run("INTERNAL", operation, fn, opts);
5297
+ }
5298
+ function wrapAs10(kind, operation, fn, opts) {
5299
+ return run(kind, operation, fn, opts);
5300
+ }
5301
+ async function toResult2(operation, fn, opts) {
5302
+ try {
5303
+ const value = await wrap3(operation, fn, opts);
5304
+ return { ok: true, value };
5305
+ } catch (e) {
5306
+ const shaped = isZKsyncError(e) ? e : toZKsyncError3(
5307
+ "INTERNAL",
5308
+ {
5309
+ resource,
5310
+ operation,
5311
+ context: opts?.ctx ?? {},
5312
+ message: resolveMessage(operation, opts?.message)
5313
+ },
5314
+ e
5315
+ );
5316
+ return { ok: false, error: shaped };
5317
+ }
5318
+ }
5319
+ return { wrap: wrap3, wrapAs: wrapAs10, toResult: toResult2 };
5320
+ }
5321
+ return { toZKsyncError: toZKsyncError3, createErrorHandlers: createErrorHandlers3 };
5322
+ }
5323
+
5324
+ // src/core/errors/withdrawal-revert-map.ts
5325
+ var REVERT_TO_READINESS = {
5326
+ // Already done
5327
+ WithdrawalAlreadyFinalized: { kind: "FINALIZED" },
5328
+ // Temporary — try later
5329
+ BatchNotExecuted: { kind: "NOT_READY", reason: "batch-not-executed" },
5330
+ LocalRootIsZero: { kind: "NOT_READY", reason: "root-missing" },
5331
+ // Permanent — won’t become ready for this tx
5332
+ WrongL2Sender: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5333
+ InvalidSelector: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5334
+ L2WithdrawalMessageWrongLength: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5335
+ WrongMsgLength: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5336
+ TokenNotLegacy: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5337
+ TokenIsLegacy: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5338
+ InvalidProof: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5339
+ InvalidChainId: { kind: "UNFINALIZABLE", reason: "invalid-chain" },
5340
+ NotSettlementLayer: { kind: "UNFINALIZABLE", reason: "settlement-layer" },
5341
+ // Likely environment mismatch — treat as permanent for this tx
5342
+ OnlyEraSupported: { kind: "UNFINALIZABLE", reason: "unsupported" },
5343
+ LocalRootMustBeZero: { kind: "UNFINALIZABLE", reason: "unsupported" }
5344
+ };
5345
+
5346
+ // src/adapters/ethers/errors/revert.ts
5347
+ var ERROR_IFACES = [];
5348
+ var IFACE_ERROR_STRING = new ethers.Interface(["error Error(string)"]);
5349
+ var IFACE_PANIC = new ethers.Interface(["error Panic(uint256)"]);
5350
+ (function bootstrapDefaultIfaces() {
5351
+ try {
5352
+ ERROR_IFACES.push({
5353
+ name: "IL1Nullifier",
5354
+ iface: new ethers.Interface(IL1Nullifier_default)
5355
+ });
5356
+ } catch {
5357
+ }
5358
+ try {
5359
+ ERROR_IFACES.push({ name: "IERC20", iface: new ethers.Interface(IERC20_default) });
5360
+ } catch {
5361
+ }
5362
+ try {
5363
+ ERROR_IFACES.push({
5364
+ name: "IL1NativeTokenVault",
5365
+ iface: new ethers.Interface(L1NativeTokenVault_default)
5366
+ });
5367
+ } catch {
5368
+ }
5369
+ try {
5370
+ ERROR_IFACES.push({
5371
+ name: "IL2NativeTokenVault",
5372
+ iface: new ethers.Interface(L2NativeTokenVault_default)
5373
+ });
5374
+ } catch {
5375
+ }
5376
+ try {
5377
+ ERROR_IFACES.push({ name: "Mailbox", iface: new ethers.Interface(Mailbox_default) });
5378
+ } catch {
5379
+ }
5380
+ })();
5381
+ function extractRevertData(e) {
5382
+ const maybe = (
5383
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
5384
+ e?.data?.data ?? e?.error?.data ?? e?.data ?? e?.error?.error?.data ?? e?.info?.error?.data
5385
+ );
5386
+ if (typeof maybe === "string" && maybe.startsWith("0x") && maybe.length >= 10) {
5387
+ return maybe;
5388
+ }
5389
+ return void 0;
5390
+ }
5391
+ function decodeRevert(e) {
5392
+ const data = extractRevertData(e);
5393
+ if (!data) return;
5394
+ const selector = `0x${data.slice(2, 10)}`;
5395
+ try {
5396
+ const parsed = IFACE_ERROR_STRING.parseError(data);
5397
+ if (parsed?.name === "Error") {
5398
+ const args = parsed.args ? Array.from(parsed.args) : void 0;
5399
+ return { selector, name: "Error", args };
5400
+ }
5401
+ } catch {
5402
+ }
5403
+ try {
5404
+ const parsed = IFACE_PANIC.parseError(data);
5405
+ if (parsed?.name === "Panic") {
5406
+ const args = parsed.args ? Array.from(parsed.args) : void 0;
5407
+ return { selector, name: "Panic", args };
5408
+ }
5409
+ } catch {
5410
+ }
5411
+ for (const { name, iface } of ERROR_IFACES) {
5412
+ try {
5413
+ const parsed = iface.parseError(data);
5414
+ if (parsed) {
5415
+ const args = parsed.args ? Array.from(parsed.args) : void 0;
5416
+ return {
5417
+ selector,
5418
+ name: parsed.name,
5419
+ args,
5420
+ contract: name
5421
+ };
5422
+ }
5423
+ } catch {
5424
+ }
5425
+ }
5426
+ return { selector };
5427
+ }
5428
+
5429
+ // src/adapters/ethers/errors/error-ops.ts
5430
+ var { createErrorHandlers } = createErrorOps(decodeRevert);
5431
+
5272
5432
  // src/adapters/viem/client.ts
5433
+ var { wrap } = createErrorHandlers("client");
5273
5434
  function createViemClient(args) {
5274
5435
  const { l1, l2, l1Wallet, l2Wallet } = args;
5275
5436
  if (!l1Wallet.account) {
@@ -5281,35 +5442,44 @@ function createViemClient(args) {
5281
5442
  let cCache;
5282
5443
  async function ensureAddresses() {
5283
5444
  if (addrCache) return addrCache;
5284
- const bridgehub = args.overrides?.bridgehub ?? await zks.getBridgehubAddress();
5285
- const l1AssetRouter = args.overrides?.l1AssetRouter ?? await l1.readContract({
5286
- address: bridgehub,
5287
- abi: IBridgehub_default,
5288
- functionName: "assetRouter"
5289
- });
5290
- const l1Nullifier = args.overrides?.l1Nullifier ?? await l1.readContract({
5291
- address: l1AssetRouter,
5292
- abi: IL1AssetRouter_default,
5293
- functionName: "L1_NULLIFIER"
5294
- });
5295
- const l1NativeTokenVault = args.overrides?.l1NativeTokenVault ?? await l1.readContract({
5296
- address: l1Nullifier,
5297
- abi: IL1Nullifier_default,
5298
- functionName: "l1NativeTokenVault"
5299
- });
5300
- const l2AssetRouter = args.overrides?.l2AssetRouter ?? L2_ASSET_ROUTER_ADDRESS;
5301
- const l2NativeTokenVault = args.overrides?.l2NativeTokenVault ?? L2_NATIVE_TOKEN_VAULT_ADDRESS;
5302
- const l2BaseTokenSystem = args.overrides?.l2BaseTokenSystem ?? L2_BASE_TOKEN_ADDRESS;
5303
- addrCache = {
5304
- bridgehub,
5305
- l1AssetRouter,
5306
- l1Nullifier,
5307
- l1NativeTokenVault,
5308
- l2AssetRouter,
5309
- l2NativeTokenVault,
5310
- l2BaseTokenSystem
5311
- };
5312
- return addrCache;
5445
+ return await wrap(
5446
+ OP_CLIENT.ensureAddresses,
5447
+ async () => {
5448
+ const bridgehub = args.overrides?.bridgehub ?? await zks.getBridgehubAddress();
5449
+ const l1AssetRouter = args.overrides?.l1AssetRouter ?? await l1.readContract({
5450
+ address: bridgehub,
5451
+ abi: IBridgehub_default,
5452
+ functionName: "assetRouter"
5453
+ });
5454
+ const l1Nullifier = args.overrides?.l1Nullifier ?? await l1.readContract({
5455
+ address: l1AssetRouter,
5456
+ abi: IL1AssetRouter_default,
5457
+ functionName: "L1_NULLIFIER"
5458
+ });
5459
+ const l1NativeTokenVault = args.overrides?.l1NativeTokenVault ?? await l1.readContract({
5460
+ address: l1Nullifier,
5461
+ abi: IL1Nullifier_default,
5462
+ functionName: "l1NativeTokenVault"
5463
+ });
5464
+ const l2AssetRouter = args.overrides?.l2AssetRouter ?? L2_ASSET_ROUTER_ADDRESS;
5465
+ const l2NativeTokenVault = args.overrides?.l2NativeTokenVault ?? L2_NATIVE_TOKEN_VAULT_ADDRESS;
5466
+ const l2BaseTokenSystem = args.overrides?.l2BaseTokenSystem ?? L2_BASE_TOKEN_ADDRESS;
5467
+ addrCache = {
5468
+ bridgehub,
5469
+ l1AssetRouter,
5470
+ l1Nullifier,
5471
+ l1NativeTokenVault,
5472
+ l2AssetRouter,
5473
+ l2NativeTokenVault,
5474
+ l2BaseTokenSystem
5475
+ };
5476
+ return addrCache;
5477
+ },
5478
+ {
5479
+ ctx: { where: "ensureAddresses" },
5480
+ message: "Failed to ensure contract addresses."
5481
+ }
5482
+ );
5313
5483
  }
5314
5484
  async function contracts() {
5315
5485
  if (cCache) return cCache;
@@ -5378,6 +5548,12 @@ function createViemClient(args) {
5378
5548
  };
5379
5549
  }
5380
5550
 
5551
+ // src/core/types/fees.ts
5552
+ function toGasOverrides(overrides) {
5553
+ const { nonce: _, ...gas } = overrides;
5554
+ return gas;
5555
+ }
5556
+
5381
5557
  // src/adapters/viem/resources/deposits/context.ts
5382
5558
  async function commonCtx(p, client, tokens, contracts) {
5383
5559
  const { bridgehub, l1AssetRouter } = await contracts.addresses();
@@ -5412,7 +5588,7 @@ async function commonCtx(p, client, tokens, contracts) {
5412
5588
  bridgehub,
5413
5589
  chainIdL2: BigInt(chainId),
5414
5590
  sender,
5415
- gasOverrides: p.l1TxOverrides,
5591
+ gasOverrides: p.l1TxOverrides ? toGasOverrides(p.l1TxOverrides) : void 0,
5416
5592
  l2GasLimit: p.l2GasLimit,
5417
5593
  gasPerPubdata,
5418
5594
  operatorTip,
@@ -5468,80 +5644,6 @@ function buildDirectRequestStruct(args) {
5468
5644
  refundRecipient: args.refundRecipient
5469
5645
  };
5470
5646
  }
5471
-
5472
- // src/core/errors/error-ops.ts
5473
- function resolveMessage(op, msg) {
5474
- if (!msg) return `Error during ${op}.`;
5475
- return typeof msg === "function" ? msg() : msg;
5476
- }
5477
- function createErrorOps(decodeRevert2) {
5478
- function toZKsyncError2(type, base, err) {
5479
- if (isZKsyncError(err)) return err;
5480
- const revert = decodeRevert2 ? decodeRevert2(err) : void 0;
5481
- return createError(type, { ...base, ...revert ? { revert } : {}, cause: shapeCause(err) });
5482
- }
5483
- function createErrorHandlers2(resource) {
5484
- async function run(kind, operation, fn, opts) {
5485
- try {
5486
- return await fn();
5487
- } catch (e) {
5488
- if (isZKsyncError(e)) throw e;
5489
- const message = resolveMessage(operation, opts?.message);
5490
- throw toZKsyncError2(kind, { resource, operation, context: opts?.ctx ?? {}, message }, e);
5491
- }
5492
- }
5493
- function wrap2(operation, fn, opts) {
5494
- return run("INTERNAL", operation, fn, opts);
5495
- }
5496
- function wrapAs10(kind, operation, fn, opts) {
5497
- return run(kind, operation, fn, opts);
5498
- }
5499
- async function toResult2(operation, fn, opts) {
5500
- try {
5501
- const value = await wrap2(operation, fn, opts);
5502
- return { ok: true, value };
5503
- } catch (e) {
5504
- const shaped = isZKsyncError(e) ? e : toZKsyncError2(
5505
- "INTERNAL",
5506
- {
5507
- resource,
5508
- operation,
5509
- context: opts?.ctx ?? {},
5510
- message: resolveMessage(operation, opts?.message)
5511
- },
5512
- e
5513
- );
5514
- return { ok: false, error: shaped };
5515
- }
5516
- }
5517
- return { wrap: wrap2, wrapAs: wrapAs10, toResult: toResult2 };
5518
- }
5519
- return { toZKsyncError: toZKsyncError2, createErrorHandlers: createErrorHandlers2 };
5520
- }
5521
-
5522
- // src/core/errors/withdrawal-revert-map.ts
5523
- var REVERT_TO_READINESS = {
5524
- // Already done
5525
- WithdrawalAlreadyFinalized: { kind: "FINALIZED" },
5526
- // Temporary — try later
5527
- BatchNotExecuted: { kind: "NOT_READY", reason: "batch-not-executed" },
5528
- LocalRootIsZero: { kind: "NOT_READY", reason: "root-missing" },
5529
- // Permanent — won’t become ready for this tx
5530
- WrongL2Sender: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5531
- InvalidSelector: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5532
- L2WithdrawalMessageWrongLength: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5533
- WrongMsgLength: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5534
- TokenNotLegacy: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5535
- TokenIsLegacy: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5536
- InvalidProof: { kind: "UNFINALIZABLE", reason: "message-invalid" },
5537
- InvalidChainId: { kind: "UNFINALIZABLE", reason: "invalid-chain" },
5538
- NotSettlementLayer: { kind: "UNFINALIZABLE", reason: "settlement-layer" },
5539
- // Likely environment mismatch — treat as permanent for this tx
5540
- OnlyEraSupported: { kind: "UNFINALIZABLE", reason: "unsupported" },
5541
- LocalRootMustBeZero: { kind: "UNFINALIZABLE", reason: "unsupported" }
5542
- };
5543
-
5544
- // src/adapters/viem/errors/revert.ts
5545
5647
  var ERROR_ABIS = [];
5546
5648
  var ABI_ERROR_STRING = [
5547
5649
  { type: "error", name: "Error", inputs: [{ name: "message", type: "string" }] }
@@ -5577,7 +5679,7 @@ function registerErrorAbi(name, abi) {
5577
5679
  if (i >= 0) ERROR_ABIS[i] = entry;
5578
5680
  else ERROR_ABIS.push(entry);
5579
5681
  }
5580
- function extractRevertData(e) {
5682
+ function extractRevertData2(e) {
5581
5683
  const candidates = [
5582
5684
  e?.data?.data,
5583
5685
  e?.error?.data,
@@ -5595,8 +5697,8 @@ function extractRevertData(e) {
5595
5697
  }
5596
5698
  return void 0;
5597
5699
  }
5598
- function decodeRevert(e) {
5599
- const data = extractRevertData(e);
5700
+ function decodeRevert2(e) {
5701
+ const data = extractRevertData2(e);
5600
5702
  if (!data) return;
5601
5703
  const selector = `0x${data.slice(2, 10)}`;
5602
5704
  try {
@@ -5630,7 +5732,7 @@ function decodeRevert(e) {
5630
5732
  return { selector };
5631
5733
  }
5632
5734
  function classifyReadinessFromRevert(e) {
5633
- const r = decodeRevert(e);
5735
+ const r = decodeRevert2(e);
5634
5736
  const name = r?.name;
5635
5737
  if (name && REVERT_TO_READINESS[name]) return REVERT_TO_READINESS[name];
5636
5738
  const msg = (() => {
@@ -5648,7 +5750,7 @@ function classifyReadinessFromRevert(e) {
5648
5750
  }
5649
5751
 
5650
5752
  // src/adapters/viem/errors/error-ops.ts
5651
- var { toZKsyncError, createErrorHandlers } = createErrorOps(decodeRevert);
5753
+ var { toZKsyncError: toZKsyncError2, createErrorHandlers: createErrorHandlers2 } = createErrorOps(decodeRevert2);
5652
5754
 
5653
5755
  // src/core/resources/deposits/gas.ts
5654
5756
  function makeGasQuote(p) {
@@ -5911,7 +6013,7 @@ async function determineErc20L2Gas(input) {
5911
6013
  }
5912
6014
 
5913
6015
  // src/adapters/viem/resources/deposits/services/fee.ts
5914
- var { wrapAs } = createErrorHandlers("deposits");
6016
+ var { wrapAs } = createErrorHandlers2("deposits");
5915
6017
  async function quoteL2BaseCost(input) {
5916
6018
  const { ctx, l2GasLimit } = input;
5917
6019
  const estimator = viemToGasEstimator(ctx.client.l1);
@@ -5961,7 +6063,7 @@ function buildFeeBreakdown(p) {
5961
6063
  }
5962
6064
 
5963
6065
  // src/adapters/viem/resources/deposits/routes/eth.ts
5964
- var { wrapAs: wrapAs2 } = createErrorHandlers("deposits");
6066
+ var { wrapAs: wrapAs2 } = createErrorHandlers2("deposits");
5965
6067
  function routeEthDirect() {
5966
6068
  return {
5967
6069
  async build(p, ctx) {
@@ -6055,7 +6157,7 @@ function routeEthDirect() {
6055
6157
  }
6056
6158
  };
6057
6159
  }
6058
- var { wrapAs: wrapAs3 } = createErrorHandlers("deposits");
6160
+ var { wrapAs: wrapAs3 } = createErrorHandlers2("deposits");
6059
6161
  function routeErc20NonBase() {
6060
6162
  return {
6061
6163
  // TODO: do we even need these validations?
@@ -6282,7 +6384,7 @@ function routeErc20NonBase() {
6282
6384
  }
6283
6385
  };
6284
6386
  }
6285
- var { wrapAs: wrapAs4 } = createErrorHandlers("deposits");
6387
+ var { wrapAs: wrapAs4 } = createErrorHandlers2("deposits");
6286
6388
  function routeEthNonBase() {
6287
6389
  return {
6288
6390
  // TODO: do we even need these validations?
@@ -6493,7 +6595,7 @@ function routeEthNonBase() {
6493
6595
  }
6494
6596
  };
6495
6597
  }
6496
- var { wrapAs: wrapAs5 } = createErrorHandlers("deposits");
6598
+ var { wrapAs: wrapAs5 } = createErrorHandlers2("deposits");
6497
6599
  function routeErc20Base() {
6498
6600
  return {
6499
6601
  async preflight(p, ctx) {
@@ -6681,7 +6783,7 @@ var I_BRIDGEHUB_NEW_PRIORITY_REQUEST = {
6681
6783
  { name: "data", type: "bytes", indexed: false }
6682
6784
  ]
6683
6785
  };
6684
- function extractL2TxHashFromL1Logs(logs) {
6786
+ function getL2TransactionHashFromLogs(logs) {
6685
6787
  for (const lg of logs) {
6686
6788
  try {
6687
6789
  const parsed = viem.decodeEventLog({
@@ -6713,7 +6815,7 @@ function extractL2TxHashFromL1Logs(logs) {
6713
6815
  async function waitForL2ExecutionFromL1Tx(l1, l2, l1TxHash) {
6714
6816
  const l1Receipt = await l1.waitForTransactionReceipt({ hash: l1TxHash });
6715
6817
  if (!l1Receipt) throw new Error("No L1 receipt found");
6716
- const l2TxHash = extractL2TxHashFromL1Logs(l1Receipt.logs);
6818
+ const l2TxHash = getL2TransactionHashFromLogs(l1Receipt.logs);
6717
6819
  if (!l2TxHash) {
6718
6820
  throw createError("VERIFICATION", {
6719
6821
  message: "Failed to extract L2 transaction hash from L1 logs",
@@ -6761,7 +6863,7 @@ function createNTVCodec(deps) {
6761
6863
  }
6762
6864
 
6763
6865
  // src/adapters/viem/resources/tokens/tokens.ts
6764
- var { wrapAs: wrapAs6 } = createErrorHandlers("tokens");
6866
+ var { wrapAs: wrapAs6 } = createErrorHandlers2("tokens");
6765
6867
  var ntvCodec = createNTVCodec({
6766
6868
  encode: (types, values) => viem.encodeAbiParameters(
6767
6869
  types.map((t, i) => ({ type: t, name: `arg${i}` })),
@@ -7017,7 +7119,7 @@ function createContractsResource(client) {
7017
7119
  }
7018
7120
 
7019
7121
  // src/adapters/viem/resources/deposits/index.ts
7020
- var { wrap, toResult } = createErrorHandlers("deposits");
7122
+ var { wrap: wrap2, toResult } = createErrorHandlers2("deposits");
7021
7123
  var ROUTES = {
7022
7124
  "eth-base": routeEthDirect(),
7023
7125
  "eth-nonbase": routeEthNonBase(),
@@ -7048,7 +7150,7 @@ function createDepositsResource(client, tokens, contracts) {
7048
7150
  steps
7049
7151
  };
7050
7152
  }
7051
- const quote = async (p) => wrap(
7153
+ const quote = async (p) => wrap2(
7052
7154
  OP_DEPOSITS.quote,
7053
7155
  async () => {
7054
7156
  const plan = await buildPlan(p);
@@ -7063,20 +7165,26 @@ function createDepositsResource(client, tokens, contracts) {
7063
7165
  message: "Internal error while preparing a deposit quote.",
7064
7166
  ctx: { token: p.token, where: "deposits.tryQuote" }
7065
7167
  });
7066
- const prepare = (p) => wrap(OP_DEPOSITS.prepare, () => buildPlan(p), {
7168
+ const prepare = (p) => wrap2(OP_DEPOSITS.prepare, () => buildPlan(p), {
7067
7169
  message: "Internal error while preparing a deposit plan.",
7068
7170
  ctx: { token: p.token, where: "deposits.prepare" }
7069
7171
  });
7070
7172
  const tryPrepare = (p) => toResult(OP_DEPOSITS.tryPrepare, () => prepare(p), {
7071
7173
  ctx: { token: p.token, where: "deposits.tryPrepare" }
7072
7174
  });
7073
- const create = (p) => wrap(
7175
+ const create = (p) => wrap2(
7074
7176
  OP_DEPOSITS.create,
7075
7177
  async () => {
7076
7178
  const plan = await prepare(p);
7077
7179
  const stepHashes = {};
7078
7180
  const from = client.account.address;
7079
- let next = await client.l1.getTransactionCount({ address: from, blockTag: "latest" });
7181
+ let next;
7182
+ if (typeof p.l1TxOverrides?.nonce === "number") {
7183
+ next = p.l1TxOverrides.nonce;
7184
+ } else {
7185
+ const blockTag = p.l1TxOverrides?.nonce ?? "latest";
7186
+ next = await client.l1.getTransactionCount({ address: from, blockTag });
7187
+ }
7080
7188
  for (const step of plan.steps) {
7081
7189
  if (step.kind === "approve") {
7082
7190
  try {
@@ -7094,7 +7202,7 @@ function createDepositsResource(client, tokens, contracts) {
7094
7202
  continue;
7095
7203
  }
7096
7204
  } catch (e) {
7097
- throw toZKsyncError(
7205
+ throw toZKsyncError2(
7098
7206
  "CONTRACT",
7099
7207
  {
7100
7208
  resource: "deposits",
@@ -7175,7 +7283,7 @@ function createDepositsResource(client, tokens, contracts) {
7175
7283
  }
7176
7284
  } catch (e) {
7177
7285
  if (isZKsyncError(e)) throw e;
7178
- throw toZKsyncError(
7286
+ throw toZKsyncError2(
7179
7287
  "EXECUTION",
7180
7288
  {
7181
7289
  resource: "deposits",
@@ -7200,7 +7308,7 @@ function createDepositsResource(client, tokens, contracts) {
7200
7308
  message: "Internal error while creating a deposit.",
7201
7309
  ctx: { token: p.token, amount: p.amount, to: p.to, where: "deposits.tryCreate" }
7202
7310
  });
7203
- const status = (h) => wrap(
7311
+ const status = (h) => wrap2(
7204
7312
  OP_DEPOSITS.status,
7205
7313
  async () => {
7206
7314
  const l1TxHash = typeof h === "string" ? h : h.l1TxHash;
@@ -7209,7 +7317,7 @@ function createDepositsResource(client, tokens, contracts) {
7209
7317
  try {
7210
7318
  l1Rcpt = await client.l1.getTransactionReceipt({ hash: l1TxHash });
7211
7319
  } catch (e) {
7212
- throw toZKsyncError(
7320
+ throw toZKsyncError2(
7213
7321
  "RPC",
7214
7322
  {
7215
7323
  resource: "deposits",
@@ -7223,14 +7331,14 @@ function createDepositsResource(client, tokens, contracts) {
7223
7331
  if (!l1Rcpt) return { phase: "L1_PENDING", l1TxHash };
7224
7332
  let l2TxHash;
7225
7333
  try {
7226
- l2TxHash = extractL2TxHashFromL1Logs(l1Rcpt.logs) ?? void 0;
7334
+ l2TxHash = getL2TransactionHashFromLogs(l1Rcpt.logs) ?? void 0;
7227
7335
  } catch (e) {
7228
- throw toZKsyncError(
7336
+ throw toZKsyncError2(
7229
7337
  "INTERNAL",
7230
7338
  {
7231
7339
  resource: "deposits",
7232
- operation: "deposits.status.extractL2TxHashFromL1Logs",
7233
- context: { where: "extractL2TxHashFromL1Logs", l1TxHash },
7340
+ operation: "deposits.status.getL2TransactionHashFromLogs",
7341
+ context: { where: "getL2TransactionHashFromLogs", l1TxHash },
7234
7342
  message: "Failed to derive L2 transaction hash from L1 logs."
7235
7343
  },
7236
7344
  e
@@ -7244,7 +7352,7 @@ function createDepositsResource(client, tokens, contracts) {
7244
7352
  if (isReceiptNotFound(e)) {
7245
7353
  return { phase: "L2_PENDING", l1TxHash, l2TxHash };
7246
7354
  }
7247
- throw toZKsyncError(
7355
+ throw toZKsyncError2(
7248
7356
  "RPC",
7249
7357
  {
7250
7358
  resource: "deposits",
@@ -7264,7 +7372,7 @@ function createDepositsResource(client, tokens, contracts) {
7264
7372
  ctx: { input: h, where: "deposits.status" }
7265
7373
  }
7266
7374
  );
7267
- const wait = (h, opts) => wrap(
7375
+ const wait = (h, opts) => wrap2(
7268
7376
  OP_DEPOSITS.wait,
7269
7377
  async () => {
7270
7378
  const l1Hash = typeof h === "string" ? h : "l1TxHash" in h ? h.l1TxHash : void 0;
@@ -7273,7 +7381,7 @@ function createDepositsResource(client, tokens, contracts) {
7273
7381
  try {
7274
7382
  l1Receipt = await client.l1.waitForTransactionReceipt({ hash: l1Hash });
7275
7383
  } catch (e) {
7276
- throw toZKsyncError(
7384
+ throw toZKsyncError2(
7277
7385
  "RPC",
7278
7386
  {
7279
7387
  resource: "deposits",
@@ -7291,7 +7399,7 @@ function createDepositsResource(client, tokens, contracts) {
7291
7399
  return l2Receipt ?? null;
7292
7400
  } catch (e) {
7293
7401
  if (isZKsyncError(e)) throw e;
7294
- throw toZKsyncError(
7402
+ throw toZKsyncError2(
7295
7403
  "INTERNAL",
7296
7404
  {
7297
7405
  resource: "deposits",
@@ -7379,7 +7487,7 @@ async function commonCtx2(p, client, tokens, contracts) {
7379
7487
  l2NativeTokenVault,
7380
7488
  l2BaseTokenSystem,
7381
7489
  baseIsEth,
7382
- gasOverrides: p.l2TxOverrides
7490
+ gasOverrides: p.l2TxOverrides ? toGasOverrides(p.l2TxOverrides) : void 0
7383
7491
  };
7384
7492
  }
7385
7493
 
@@ -7472,7 +7580,7 @@ function buildFeeBreakdown2(p) {
7472
7580
  }
7473
7581
 
7474
7582
  // src/adapters/viem/resources/withdrawals/routes/eth.ts
7475
- var { wrapAs: wrapAs7 } = createErrorHandlers("withdrawals");
7583
+ var { wrapAs: wrapAs7 } = createErrorHandlers2("withdrawals");
7476
7584
  function routeEthBase() {
7477
7585
  return {
7478
7586
  async build(p, ctx) {
@@ -7527,7 +7635,7 @@ function routeEthBase() {
7527
7635
  }
7528
7636
  };
7529
7637
  }
7530
- var { wrapAs: wrapAs8 } = createErrorHandlers("withdrawals");
7638
+ var { wrapAs: wrapAs8 } = createErrorHandlers2("withdrawals");
7531
7639
  function routeErc20NonBase2() {
7532
7640
  return {
7533
7641
  // TODO: add preflight validations here
@@ -7722,7 +7830,7 @@ function messengerLogIndex(raw, opts) {
7722
7830
  }
7723
7831
  return (hits[index] ?? hits[0]).i;
7724
7832
  }
7725
- var { wrapAs: wrapAs9 } = createErrorHandlers("withdrawals");
7833
+ var { wrapAs: wrapAs9 } = createErrorHandlers2("withdrawals");
7726
7834
  var IL1NullifierMini = [
7727
7835
  {
7728
7836
  type: "function",
@@ -7829,27 +7937,11 @@ function createFinalizationServices(client) {
7829
7937
  message,
7830
7938
  merkleProof: proof.proof
7831
7939
  };
7832
- const { l1Nullifier } = await wrapAs9(
7833
- "INTERNAL",
7834
- OP_WITHDRAWALS.finalize.fetchParams.ensureAddresses,
7835
- () => client.ensureAddresses(),
7836
- {
7837
- ctx: { where: "ensureAddresses" },
7838
- message: "Failed to ensure L1 Nullifier address."
7839
- }
7840
- );
7940
+ const { l1Nullifier } = await client.ensureAddresses();
7841
7941
  return { params, nullifier: l1Nullifier };
7842
7942
  },
7843
7943
  async simulateFinalizeReadiness(params) {
7844
- const { l1Nullifier } = await wrapAs9(
7845
- "INTERNAL",
7846
- OP_WITHDRAWALS.finalize.readiness.ensureAddresses,
7847
- () => client.ensureAddresses(),
7848
- {
7849
- ctx: { where: "ensureAddresses" },
7850
- message: "Failed to ensure L1 Nullifier address."
7851
- }
7852
- );
7944
+ const { l1Nullifier } = await client.ensureAddresses();
7853
7945
  const done = await (async () => {
7854
7946
  try {
7855
7947
  const result = await wrapAs9(
@@ -7886,15 +7978,7 @@ function createFinalizationServices(client) {
7886
7978
  }
7887
7979
  },
7888
7980
  async isWithdrawalFinalized(key) {
7889
- const { l1Nullifier } = await wrapAs9(
7890
- "INTERNAL",
7891
- OP_WITHDRAWALS.finalize.fetchParams.ensureAddresses,
7892
- () => client.ensureAddresses(),
7893
- {
7894
- ctx: { where: "ensureAddresses" },
7895
- message: "Failed to ensure L1 Nullifier address."
7896
- }
7897
- );
7981
+ const { l1Nullifier } = await client.ensureAddresses();
7898
7982
  return await wrapAs9(
7899
7983
  "RPC",
7900
7984
  OP_WITHDRAWALS.finalize.isFinalized,
@@ -7911,15 +7995,7 @@ function createFinalizationServices(client) {
7911
7995
  );
7912
7996
  },
7913
7997
  async estimateFinalization(params) {
7914
- const { l1Nullifier } = await wrapAs9(
7915
- "INTERNAL",
7916
- OP_WITHDRAWALS.finalize.estimate,
7917
- () => client.ensureAddresses(),
7918
- {
7919
- ctx: { where: "ensureAddresses" },
7920
- message: "Failed to ensure L1 Nullifier address."
7921
- }
7922
- );
7998
+ const { l1Nullifier } = await client.ensureAddresses();
7923
7999
  const gasLimit = await wrapAs9(
7924
8000
  "RPC",
7925
8001
  OP_WITHDRAWALS.finalize.estimate,
@@ -7982,15 +8058,7 @@ function createFinalizationServices(client) {
7982
8058
  };
7983
8059
  },
7984
8060
  async finalizeDeposit(params) {
7985
- const { l1Nullifier } = await wrapAs9(
7986
- "INTERNAL",
7987
- OP_WITHDRAWALS.finalize.fetchParams.ensureAddresses,
7988
- () => client.ensureAddresses(),
7989
- {
7990
- ctx: { where: "ensureAddresses" },
7991
- message: "Failed to ensure L1 Nullifier address."
7992
- }
7993
- );
8061
+ const { l1Nullifier } = await client.ensureAddresses();
7994
8062
  try {
7995
8063
  const hash = await client.l1Wallet.writeContract({
7996
8064
  address: l1Nullifier,
@@ -8005,7 +8073,7 @@ function createFinalizationServices(client) {
8005
8073
  try {
8006
8074
  return await client.l1.waitForTransactionReceipt({ hash });
8007
8075
  } catch (e) {
8008
- throw toZKsyncError(
8076
+ throw toZKsyncError2(
8009
8077
  "EXECUTION",
8010
8078
  {
8011
8079
  resource: "withdrawals",
@@ -8019,7 +8087,7 @@ function createFinalizationServices(client) {
8019
8087
  }
8020
8088
  };
8021
8089
  } catch (e) {
8022
- throw toZKsyncError(
8090
+ throw toZKsyncError2(
8023
8091
  "EXECUTION",
8024
8092
  {
8025
8093
  resource: "withdrawals",
@@ -8048,7 +8116,7 @@ var ROUTES2 = {
8048
8116
  };
8049
8117
  function createWithdrawalsResource(client, tokens, contracts) {
8050
8118
  const svc = createFinalizationServices(client);
8051
- const { wrap: wrap2, toResult: toResult2 } = createErrorHandlers("withdrawals");
8119
+ const { wrap: wrap3, toResult: toResult2 } = createErrorHandlers2("withdrawals");
8052
8120
  const tokensResource = tokens ?? createTokensResource(client);
8053
8121
  const contractsResource = contracts ?? createContractsResource(client);
8054
8122
  async function buildPlan(p) {
@@ -8069,7 +8137,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8069
8137
  };
8070
8138
  }
8071
8139
  const finalizeCache = /* @__PURE__ */ new Map();
8072
- const quote = (p) => wrap2(OP_WITHDRAWALS.quote, async () => (await buildPlan(p)).summary, {
8140
+ const quote = (p) => wrap3(OP_WITHDRAWALS.quote, async () => (await buildPlan(p)).summary, {
8073
8141
  message: "Internal error while preparing a withdrawal quote.",
8074
8142
  ctx: { token: p.token, where: "withdrawals.quote" }
8075
8143
  });
@@ -8077,7 +8145,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8077
8145
  message: "Internal error while preparing a withdrawal quote.",
8078
8146
  ctx: { token: p.token, where: "withdrawals.tryQuote" }
8079
8147
  });
8080
- const prepare = (p) => wrap2(OP_WITHDRAWALS.prepare, () => buildPlan(p), {
8148
+ const prepare = (p) => wrap3(OP_WITHDRAWALS.prepare, () => buildPlan(p), {
8081
8149
  message: "Internal error while preparing a withdrawal plan.",
8082
8150
  ctx: { token: p.token, where: "withdrawals.prepare" }
8083
8151
  });
@@ -8085,12 +8153,20 @@ function createWithdrawalsResource(client, tokens, contracts) {
8085
8153
  message: "Internal error while preparing a withdrawal plan.",
8086
8154
  ctx: { token: p.token, where: "withdrawals.tryPrepare" }
8087
8155
  });
8088
- const create = (p) => wrap2(
8156
+ const create = (p) => wrap3(
8089
8157
  OP_WITHDRAWALS.create,
8090
8158
  async () => {
8091
8159
  const plan = await prepare(p);
8092
8160
  const stepHashes = {};
8093
8161
  const l2Wallet = client.getL2Wallet();
8162
+ const from = client.account.address;
8163
+ let next;
8164
+ if (typeof p.l2TxOverrides?.nonce === "number") {
8165
+ next = p.l2TxOverrides.nonce;
8166
+ } else {
8167
+ const blockTag = p.l2TxOverrides?.nonce ?? "pending";
8168
+ next = await client.l2.getTransactionCount({ address: from, blockTag });
8169
+ }
8094
8170
  for (const step of plan.steps) {
8095
8171
  if (p.l2TxOverrides) {
8096
8172
  const overrides = p.l2TxOverrides;
@@ -8124,6 +8200,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8124
8200
  maxFeePerGas: step.tx.maxFeePerGas,
8125
8201
  maxPriorityFeePerGas: step.tx.maxPriorityFeePerGas
8126
8202
  } : {};
8203
+ const nonce = next++;
8127
8204
  const baseReq = {
8128
8205
  address: step.tx.address,
8129
8206
  abi: step.tx.abi,
@@ -8131,6 +8208,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8131
8208
  args: step.tx.args ?? [],
8132
8209
  account: step.tx.account ?? l2Wallet.account ?? client.account,
8133
8210
  gas: step.tx.gas,
8211
+ nonce,
8134
8212
  ...fee1559,
8135
8213
  ...step.tx.dataSuffix ? { dataSuffix: step.tx.dataSuffix } : {},
8136
8214
  ...step.tx.chain ? { chain: step.tx.chain } : {}
@@ -8158,7 +8236,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8158
8236
  });
8159
8237
  }
8160
8238
  } catch (e) {
8161
- throw toZKsyncError(
8239
+ throw toZKsyncError2(
8162
8240
  "EXECUTION",
8163
8241
  {
8164
8242
  resource: "withdrawals",
@@ -8183,7 +8261,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8183
8261
  message: "Internal error while creating withdrawal transactions.",
8184
8262
  ctx: { token: p.token, amount: p.amount, to: p.to, where: "withdrawals.tryCreate" }
8185
8263
  });
8186
- const status = (h) => wrap2(
8264
+ const status = (h) => wrap3(
8187
8265
  OP_WITHDRAWALS.status,
8188
8266
  async () => {
8189
8267
  const l2TxHash = typeof h === "string" ? h : "l2TxHash" in h && h.l2TxHash ? h.l2TxHash : "0x";
@@ -8197,7 +8275,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8197
8275
  if (isReceiptNotFound(e)) {
8198
8276
  return { phase: "L2_PENDING", l2TxHash };
8199
8277
  }
8200
- throw toZKsyncError(
8278
+ throw toZKsyncError2(
8201
8279
  "RPC",
8202
8280
  {
8203
8281
  resource: "withdrawals",
@@ -8238,7 +8316,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8238
8316
  const wait = (h, opts = {
8239
8317
  for: "l2",
8240
8318
  pollMs: 5500
8241
- }) => wrap2(
8319
+ }) => wrap3(
8242
8320
  OP_WITHDRAWALS.wait,
8243
8321
  async () => {
8244
8322
  const l2Hash = typeof h === "string" ? h : "l2TxHash" in h && h.l2TxHash ? h.l2TxHash : "0x";
@@ -8248,7 +8326,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8248
8326
  try {
8249
8327
  rcpt = await client.l2.waitForTransactionReceipt({ hash: l2Hash });
8250
8328
  } catch (e) {
8251
- throw toZKsyncError(
8329
+ throw toZKsyncError2(
8252
8330
  "RPC",
8253
8331
  {
8254
8332
  resource: "withdrawals",
@@ -8307,7 +8385,7 @@ function createWithdrawalsResource(client, tokens, contracts) {
8307
8385
  }
8308
8386
  }
8309
8387
  );
8310
- const finalize = (l2TxHash) => wrap2(
8388
+ const finalize = (l2TxHash) => wrap3(
8311
8389
  OP_WITHDRAWALS.finalize.send,
8312
8390
  async () => {
8313
8391
  const pack = await (async () => {
@@ -8436,19 +8514,20 @@ exports.classifyReadinessFromRevert = classifyReadinessFromRevert;
8436
8514
  exports.createClient = createViemClient;
8437
8515
  exports.createContractsResource = createContractsResource;
8438
8516
  exports.createDepositsResource = createDepositsResource;
8439
- exports.createErrorHandlers = createErrorHandlers;
8517
+ exports.createErrorHandlers = createErrorHandlers2;
8440
8518
  exports.createFinalizationServices = createFinalizationServices;
8441
8519
  exports.createTokensResource = createTokensResource;
8442
8520
  exports.createViemClient = createViemClient;
8443
8521
  exports.createViemSdk = createViemSdk;
8444
8522
  exports.createWithdrawalsResource = createWithdrawalsResource;
8445
- exports.decodeRevert = decodeRevert;
8523
+ exports.decodeRevert = decodeRevert2;
8446
8524
  exports.encodeNativeTokenVaultTransferData = encodeNativeTokenVaultTransferData;
8447
8525
  exports.encodeSecondBridgeArgs = encodeSecondBridgeArgs;
8448
8526
  exports.encodeSecondBridgeDataV1 = encodeSecondBridgeDataV1;
8449
8527
  exports.encodeSecondBridgeErc20Args = encodeSecondBridgeErc20Args;
8450
8528
  exports.encodeSecondBridgeEthArgs = encodeSecondBridgeEthArgs;
8529
+ exports.getL2TransactionHashFromLogs = getL2TransactionHashFromLogs;
8451
8530
  exports.registerErrorAbi = registerErrorAbi;
8452
- exports.toZKsyncError = toZKsyncError;
8531
+ exports.toZKsyncError = toZKsyncError2;
8453
8532
  //# sourceMappingURL=index.cjs.map
8454
8533
  //# sourceMappingURL=index.cjs.map